Access Zugriff auf Bearbeiter neu regeln
Hallo liebe Community,
ich bin neu hier und bräuchte eure Hilfe.
Ich habe im Netz nach Lösungen für mein Problem gesucht, aber leider irgendwie nix gefunden. Vielleicht liegt es auch daran, dass ich nicht genau weis nach was ich suchen muss. Ich beschäftige mich zum ersten Mal mit Datenbanken und deren Erstellung. Nun muss ich eine alte Datenbank (DB) überarbeiten und habe dabei die Db in ein Frontend und Backend aufgeteilt.
Mein Problem ist:
Beim öffnen des Frontend wird eine Abfrage gestartet, die nach dem Bearbeiter fragt. Dabei scheint der Zugriff auf die entsprechende Tabelle ( im Backend) aber nicht richtig zu funktionieren, denn es tritt ein Fehler auf. Laufzeitfehler 3219. Was mach ich falsch?
Mein Code:
Ich würde mich freuen, wenn ihr mir einen Tipp geben könntet.
Vielen Dank im Voraus
[Edit Biber] Codeformatierung nachgezogen. [/Edit]
ich bin neu hier und bräuchte eure Hilfe.
Ich habe im Netz nach Lösungen für mein Problem gesucht, aber leider irgendwie nix gefunden. Vielleicht liegt es auch daran, dass ich nicht genau weis nach was ich suchen muss. Ich beschäftige mich zum ersten Mal mit Datenbanken und deren Erstellung. Nun muss ich eine alte Datenbank (DB) überarbeiten und habe dabei die Db in ein Frontend und Backend aufgeteilt.
Mein Problem ist:
Beim öffnen des Frontend wird eine Abfrage gestartet, die nach dem Bearbeiter fragt. Dabei scheint der Zugriff auf die entsprechende Tabelle ( im Backend) aber nicht richtig zu funktionieren, denn es tritt ein Fehler auf. Laufzeitfehler 3219. Was mach ich falsch?
Mein Code:
Sub currentBearbeiterSetzen()
Dim strCurrentUserKuerzel As String
Dim db As Database
Dim rst As Recordset
strCurrentUserKuerzel = CurrentUser()
' Programm beenden, wenn Bearbeiterküzel nicht 3 Zeichen lang
If Len(strCurrentUserKuerzel) <> 3 Then
MsgBox "BearbeiterKürzel muß genau 3 Zeichen lang sein!" & NL & "Programm wird verlassen!"
Application.Quit
End If
' aktuellen Benutzer in tblXBearbeiter suchen und Daten in globalen BearbeiterRecord übernehmen
Set db = CurrentDb()
Set rst = db.OpenRecordset("tblXBearbeiter", dbOpenTable)
rst.Index = "Kürzel"
rst.Seek "=", strCurrentUserKuerzel
If rst.NoMatch Then
MsgBox "Das eingegebene Kürzel ist nicht in Holist registriert" & NL & "Programm wird verlassen!"
rst.Close
Application.Quit
End If
currentBearbeiter.lngID = rst!ID
currentBearbeiter.strKürzel = rst!Kürzel
currentBearbeiter.strName = rst!Name
currentBearbeiter.strWordPfad = rst!WordPfad
currentBearbeiter.bolPCTel = rst!PCTel
currentBearbeiter.strAdrSelect = rst!AdrSelect
currentBearbeiter.lngVorAD = rst!VorAD
currentBearbeiter.lngVorTyp = rst!VorTyp
currentBearbeiter.lngVorQuelle = rst!VorQuelle
currentBearbeiter.strVorOrt = rst!VorOrt
rst.Close
Set db = Nothing
End Sub
Vielen Dank im Voraus
[Edit Biber] Codeformatierung nachgezogen. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297370
Url: https://administrator.de/forum/access-zugriff-auf-bearbeiter-neu-regeln-297370.html
Ausgedruckt am: 23.04.2025 um 17:04 Uhr
4 Kommentare
Neuester Kommentar
Moin Sophia87,
willkommen im Forum.
Bitte benutze künftig Codeformatierung beim Posten von Codeschnipseln.
Ein Recordset auf eingebundene Tabellen (in Frontend/Backend aufgeteilte) kann nicht den Recordset-Typ Table (oder dbOpenTable) haben.
Die Seek-Methode setzt aber diesen Typ voraus. -> TILT
Also
P.S. Diese merkwürdige "irgendwo definierte" Variable NL für vermutlich "Neue Linie" ist kein schöner Stil & Anblick.
nimm die vorgesehenen Konstante
P.P.S. Und schreib bitte nie wieder: "Vielen Dank im Voraus" in einem meiner Bereiche.
Ist zwar grammatikalisch vorbildlich, aber nicht gern gesehen. Siehe FAQ
Grüße
Biber
willkommen im Forum.
Bitte benutze künftig Codeformatierung beim Posten von Codeschnipseln.
Ein Recordset auf eingebundene Tabellen (in Frontend/Backend aufgeteilte) kann nicht den Recordset-Typ Table (oder dbOpenTable) haben.
Die Seek-Methode setzt aber diesen Typ voraus. -> TILT
Also
- entweder ein Recordset vom Typ Dynaset (dbOpenDynaset) verwenden und mit den Find-Methoden suchen ( FindFirst etc). Is' sich ein bissl langsamer als Seek, aber - so what! Bei einer Bearbeiter-Tabelle mit vermutlich anderthalb Bearbeitern... who cares.
- oder die externe Datenbank öffnen und dann wieder ein Recordset vom Typ Table verwenden:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = DBEngine.Workspaces(0).OpenDatabase("Dein Bäckend")
Set rs = db.OpenRecordset("DeineBäckendTabelle", dbOpenTable)
...
P.S. Diese merkwürdige "irgendwo definierte" Variable NL für vermutlich "Neue Linie" ist kein schöner Stil & Anblick.
nimm die vorgesehenen Konstante
vblf
oder vbcrlf
.P.P.S. Und schreib bitte nie wieder: "Vielen Dank im Voraus" in einem meiner Bereiche.
Ist zwar grammatikalisch vorbildlich, aber nicht gern gesehen. Siehe FAQ
Grüße
Biber
Moin Sophia,

Zu deiner anderen Frage:
Kann ich so mit den doch eher wenigen Inormatischen nicht beantworten.
Und ausser uns zwei beiden wir niemand diese Folgefrage in diesem Beitrag/unter diesem Titel finden.
Bitte mach doch bitte eine neue Frage auf mit sinnvollem Titel und ein, zwei Detailinfos mehr.
Dann kommen wir schneller zu einer Lösung und auch ins Wochenende
Grüße
Biber
PS. Es tut mir leid, wenn ich die FAQ`s verletzt habe.
Ach was, diese leicht verletzten FAQs werden schnell wieder gesund, keine Sorge. Zu deiner anderen Frage:
Kann ich so mit den doch eher wenigen Inormatischen nicht beantworten.
Und ausser uns zwei beiden wir niemand diese Folgefrage in diesem Beitrag/unter diesem Titel finden.
Bitte mach doch bitte eine neue Frage auf mit sinnvollem Titel und ein, zwei Detailinfos mehr.
Dann kommen wir schneller zu einer Lösung und auch ins Wochenende
Grüße
Biber