Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

NotInListEreignis im Kombinationsfeld

Begonnen von girly05, Februar 23, 2016, 11:20:04

⏪ vorheriges - nächstes ⏩

girly05

Hallo liebe Gemeinde,
ich steh mal wieder aufm Schlauch bzw. verstehe doch noch zu wenig von der ganzen Materie.
Ich habe ein Kombinationsfeld, welches mir Strassennamen auflistet, welche sich in der Tabelle tblStrasse befinden. Grundlage des Formulars ist die Tabelle tblBaustellen. Für den Fall, daß der Strassenname noch nicht vorhanden ist, soll das NotinList-Ereignis eintreten mit folgendem Code:

Private Sub cboStrassenname_NotInList(NewData As String, Response As Integer)

Dim db As DAO.Database
    Dim lngStrassenname As Long
    Dim strMeldung As String
    Dim bolAnlegen As Boolean
    strMeldung = "'" & NewData & "' als neuen Strassenname anlegen?"
    bolAnlegen = MsgBox(strMeldung, vbYesNo, "neuer Strassenname") = vbYes
    If bolAnlegen = True Then
        Set db = CurrentDb
        db.Execute "INSERT INTO tblStrasse(Strassenname) VALUES('" & NewData & "')", dbFailOnError
        lngID = db.OpenRecordset("SELECT @@IDENTITY").Fields(0)
        Me!cboStrassenname.Undo
        Me!cboStrassenname.Requery
        Me!cboStrassenname = lngID
        Set db = Nothing
        Response = acDataErrAdded
    Else
        Response = acDataErrContinue
    End If

End Sub

Funktioniert auch soweit, allerdings wird anscheinend dabei das Kombinationsfeld aktualisiert (der neue Strassenname wird angezeigt) und somit die ebenfalls in der Tabelle tblBaustellen befindliche BaustellenID um 1 erhöht, so daß diese ID (AutoWert) immer Lücken aufweist.

Kann man das ändern? Fehlt hier was in Code? Was sagen die Spezialisten unter Euch dazu?

Ich hoffe ich konnte mein Problem verständlich rüberbringen, falls nicht bitte nachfragen statt schweigen.

Vielen Dank schon mal.
LG girly

DF6GL

Hallo,

lass alles weg, was nicht mit der Insert into- Anweisung zu tun hat, und alles ist gut.... 
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

Hallo,

genauer gesagt sind die folgenden Befehle überflüssig:
        lngID = db.OpenRecordset("SELECT @@IDENTITY").Fields(0)
        Me!cboStrassenname.Undo
        Me!cboStrassenname.Requery
        Me!cboStrassenname = lngID


Das acDataErrAdded sorgt ohne weiteres Dazutun für die Aktualisierung des Kombifeldes und die Auswahl des eingegebenen Wertes.
Freundliche Grüße
MaggieMay

girly05

Hallo MaggieMay und DF6GL,
vielen Dank für Eure Hilfe. Genau diesen Teil des Code's habe ich auch nicht verstanden, wenn es ohne geht, umso besser. Werd ich heut abend ausprobieren!
LG Girly