Hallo Forum!
Vielleicht wißt Ihr ja eine Lösung für dieses Problem:
Betriebssystem: Windows 2000
Access-Version: Access 2000 (Office 2000)
Ich habe mir eine kleine Datenbank mit Zitaten erstellt, bei der über ein Kombifeld, indem man die Kategorien auswählt, die dazugehörigen Datensätze ausgegeben werden. Da das ganze mit dem Assistenten erstellt wurde, funktioniert in dieser Hinsicht alles perfekt.
Nun möchte ich aber auch neue Datensätze hinzufügen dürfen, und hier komme ich einfach nicht richtig weiter - irgendetwas übersehe ich immer.
Nun zuerst einmal der Aufbau der Datenbank:
Datenbank Zitate
Tabellen:
tbl_Kategorie
KategorieID Autowert Long Integer Indiziert Ja Ohne Duplikate
Kategorie Text 30 Indiziert Ja Ohne Duplikate
tbl_Zitate
ZitatID Autowert Long Integer Indiziert Ja Ohne Duplikate
Zitat Text 255 Indiziert Nein
Vorname Text 100 Indiziert Nein
Nachname Text 100 Indiziert Nein
KategorieID Nachschlagespalte Verknüpft mit tbl_Kategorie Zahl Long Integer Indiziert Ja Duplikate möglich
Verknüpfungen:
tbl_Kategorie(1) zu tbl_Zitate(n) mit referentieller Integrität, Aktualisierungsweitergabe und Löschweitergabe an Detaildatensatz
Formulare:
frm_Kategorie
frm_Zitate_Unterformular
Im Formular frm_Kategorie gibt es ein Kombinationsfeld cboKategorie
Datensatzherkunft: SELECT [tbl_Kategorie].[KategorieID], [tbl_Kategorie].[Kategorie] FROM tbl_Kategorie;
Nach Aktualisierung:
Private Sub cboKategorie_AfterUpdate()
’ Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[KategorieID] = " & Str(Me![cboKategorie])
Me.Bookmark = rs.Bookmark
End Sub
wie gesagt, bis hierhin funktioniert das ganze einwandfrei.
Nun die Function NotInList:
Private Sub cboKategorie_NotInList(NewData As String, Response As Integer)
Dim strMsg As String, intTaste As Integer
Dim db As DAO.Database, rs As DAO.Recordset
'Fragen, ob neue Kategorie angelegt werden soll…
intTaste = MsgBox(„Neue Kategorie " + NewData + " anlegen?“, vbYesNo + vbQuestion, „Kategorie nicht vorhanden:“)
'Wenn nicht, Eingabe zurücknehmen und ohne Meldung weiter…
If intTaste = vbNo Then
cboKategorie.Undo
Response = acDataErrContinue
Exit Sub
End If
'Neuen Eintrag zur Tabelle hinzufügen…
Response = acDataErrAdded
Set db = CurrentDb()
Set rs = db.OpenRecordset(„tbl_Kategorie“, dbOpenDynaset)
rs.AddNew
rs!Kategorie = NewData
rs.Update
rs.Close
End Sub
Klappt alles soweit eigentlich ganz prima, bis auf die Tatsache, daß diese Funktion die Daten nicht sofort aktualisiert. Man muß bis jetzt noch nach Eingabe einer neuen Kategorie, das Formular erst wieder schließen und kann danach die zugehörigen Datensätze für die neue Kategorie eingeben. Das funktioniert so allerdings einwandfrei, soweit ich das bisher getestet habe.
Es hapert aber noch etwas an der Aktualisierung sowohl bei der Eingabe einer neuen Kategorie - sie wird zwar angezeigt aber die Anzahl der nun vorhandenen Datensätze wird nicht sofort aktualisiert. Erst nachdem das Formular geschlossen worden ist um es danach erneut aufzurufen, sind sowohl die Kategorien, als auch das Unterformular aktualisiert worden.
Vielleicht kennt ja einer von euch die Lösung für dieses Problem. Für eure Hilfe schon einmal recht herzlichen Dank im Vorraus.
mfg Albert