Supportnet / Forum / Datenbanken
NichtinListe + Verknüpfte Tabellen
Frage
Ich habe eine Datenbank, welche ich in backend unf frontend aufgesplittet habe (MSAccess2000). Im frontend habe ich in den Formularen Kombinationsfelder (z.B Artikelnummer)integriert. Der user soll einen Wert aus der Liste wählen oder aber einen neuen eingeben können. Falls ein neuer Wert eingegeben wird, soll ein neues Formular für die Erfassung geöffnet und der eingegeben wert (Artikelnummer) übernommen werden . Nach Beendigung der Dateneingabe (Artikelbezeichnung, Preis) soll zum ürsprunglich geöffneten Formular zurückgekehrt werden.
Ich habe versucht, eine folgende Ereignisprozedur anzuwenden:
Private Sub ART_number_NotInList(NewData As String, Response As Integer)
Dim datenbank As DAO.Database
Dim CArec As DAO.Recordset
Set datenbank = DBEngine.Workspaces(0).OpenDatabase("data")
Set CArec = db.OpenRecordset("Arikel", dbOpenTable)
jandi66 = NewData
CArec.AddNew
CArec![ART number] = NewData
CArec.Update
Response = DATA_ERRADDED
DoCmd.OpenForm "Artikel"
DoCmd.GoToControl "Artikelbezeichnung"
End Sub
Leider ohne Erfolg!!!
Hat mir jemand eine Lösung?
Besten Dank für die Hilfe.
jandisurfer
Antwort 1 von El Bobbele
Moin jandisurfer!
Wenn ich das alles richtig verstanden habe, dann gehört obiger Code zum "ursprünglichen" Formular. Wird dort eine neue Nummer eingegeben und auch gespeichert, soll ein zusätzliches Formular namens "Artikel" geöffnet werden und dort soll der gerade hinzugefügte Datensatz mit zusätzlichen Informationen ausgestattet werden.
Wenn dem so ist, dann weiss anhand des vorliegenden Codeauszugs das Formular "Artikel" nicht, zu welchem Datensatz es springen soll. Ist das dein Problem? Wenn ja, dann übergib die Artikelnummer beim DoCmd.OpenForm-Aufruf über den Parameter WhereCondition. Der müsste dann vermutlich lauten:
"[ART_number] = " & NewData
bzw.
"[ART_number] = '" & NewData & "'"
Damit wird das geöffnete Formular gleich gefiltert und du stehst auf dem richtigen Datensatz.
Wenn ich falsch liege, dann solltest du konkret schildern, was du bei "Leider ohne Erfolg!!!" als Ergebnis erwartet hast. Hellsehen kann hier sicherlich niemand. ;-)
Nebenbei bemerkt, wenn du Access 2000 verwendest, dann solltest du auch dementsprechend programmieren. Zwischen Access 2.0 und 2000 besteht ein himmelweiter Unterschied, nämlich zwei Nullen mehr und ein Dezimalpunkt weniger. *g*
Gruss
El Bobbele
Wenn ich das alles richtig verstanden habe, dann gehört obiger Code zum "ursprünglichen" Formular. Wird dort eine neue Nummer eingegeben und auch gespeichert, soll ein zusätzliches Formular namens "Artikel" geöffnet werden und dort soll der gerade hinzugefügte Datensatz mit zusätzlichen Informationen ausgestattet werden.
Wenn dem so ist, dann weiss anhand des vorliegenden Codeauszugs das Formular "Artikel" nicht, zu welchem Datensatz es springen soll. Ist das dein Problem? Wenn ja, dann übergib die Artikelnummer beim DoCmd.OpenForm-Aufruf über den Parameter WhereCondition. Der müsste dann vermutlich lauten:
"[ART_number] = " & NewData
bzw.
"[ART_number] = '" & NewData & "'"
Damit wird das geöffnete Formular gleich gefiltert und du stehst auf dem richtigen Datensatz.
Wenn ich falsch liege, dann solltest du konkret schildern, was du bei "Leider ohne Erfolg!!!" als Ergebnis erwartet hast. Hellsehen kann hier sicherlich niemand. ;-)
Nebenbei bemerkt, wenn du Access 2000 verwendest, dann solltest du auch dementsprechend programmieren. Zwischen Access 2.0 und 2000 besteht ein himmelweiter Unterschied, nämlich zwei Nullen mehr und ein Dezimalpunkt weniger. *g*
Access 2.0: DBEngine.Workspaces(0).OpenDatabase("data")
Access 2000: CurrentDb
Access 2.0: DATA_ERRADDED 'Nur noch aus Kompatibilitätsgründen vorhanden
Access 2000: acDataErrAddedGruss
El Bobbele

