Hallo Mitglieder
Ich habe eine Frage:
Ist es möglich einen vorhandenen Datensatz in einem Formular anzeigen zulassen wenn man zb eine eindeutige Nr eingegeben hat.
Erklärung
Ich möchte einen neuen Datensatz anlegen, gebe eine IDnr ein, beim verlassen soll überprüft werden ob es diese Nr vorhanden ist
(das ist kein problem aber )
Wenn diese Nr vorhanden ist soll der ganze Datensatz im Formular angezeigt werden.
Ich hoffe es ist verständlich
Vielen Dank im voraus
Bisher sieht das Projekt so aus
Tabelle1
Artikelnummer ; EAN Code ; Menge ; Lagerort
Artikelnummer = Primärschlüssel
Formular1
Eingabe Artikelnummer
Eingabe EAN Code
Eingabe Menge
Eingabe Lagerort
Ziel des Projekt ist es jedem Artikel einen festen Lagerort zuzuweisen und bei eingabe der Artikelnummer soll überprüft werden ob der Artikel schon vorhanden ist (wenn ja soll die menge Aktualisiert werden ) (wenn nein soll ein neuer Datensatz angelegt werden).
Hallo Tommy,
Vielleicht so (Luftcode):
Private Sub DeinForm_BeforeUpdate(Cancel As Integer)
Dim rst As DAO.Recordset
Set rst=Me.RecordsetClone
'Artikel-Nr. suchen
rst.FindFirst "ArtikelNr = " & Me!txtArtikelNr
If rst.NoMatch = True Then
'Kein DS gefunden = Artikel-Nr. ist neu
'neuen DS anlegen
Else
'Artikel schon vorhanden
'aktualisiere Menge
End If
Set rst = Nothing
End SubIch würde aber auch noch auf einen bereits vorhandenen EAN
prüfen, denn der muss ja auch eindeutig sein, ganz zu schweigen
von einem bereits belegten Lagerort.
hth
gruss ekkehard
Ergänzung zu
ZitatWenn diese Nr vorhanden ist soll der ganze Datensatz im Formular angezeigt werden.
Else
'Artikel schon vorhanden
Me.Bookmark = rst.Bookmark
'zeigt den gefundenen DS an
'aktualisiere Menge
Ach ja, Crossposting wird hier nicht gerne gesehen, war
in diesem Fall aber hilfreich, da ich obiges Zitat erst dort
gelesen habe.
Hallo,
Ich nochmal; - bin etwas abgelenkt.
Meine erste Antwort bezog sich auf
ZitatIch möchte einen neuen Datensatz anlegen, gebe eine IDnr ein, beim verlassen soll überprüft werden ob es diese Nr vorhanden ist
Betonung lag in meinen Gedanken auf
anlegen.
Da ist meine Ergänzung nicht sinnvoll, sondern wird
evtl. sogar einen Fehler auslösen.
Wenn Du erstmal nur einen DS anzeigen möchtest,
kommt Form_BeforeUpdate zu spät bzw. wird es gar
nicht ausgelöst. Zum Suchen brauchst Du ein unge-
bundenes Textfeld (nennen wir es "txtSuche") zur
Eingabe der Nummer. Dieses Feld löst sein eigenes
Ereignis
AfterUpdate aus, das dann so behandelt
wird (wieder Luftcode):
Private Sub txtSuche_AfterUpdate()
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "ArtikelNr = " & Me!txtSuche
If rst.NoMatch = True Then
'Kein DS gefunden = Artikel-Nr. ist neu
MsgBox "Kein Artikel gefunden!"
'neuen DS anlegen
Else
'Artikel schon vorhanden, DS anzeigen
Me.Bookmark = rst.Bookmark
End If
Set rst = Nothing
End Subhth
gruss ingrid
Hallo,
würde vorschlagen:
Private Sub txtArtikelNr_AfterUpdate() 'ungebundenes Textfeld oder Kombifeld
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "ArtikelNr = '" & Me!txtArtikelNr & "'" ' Hochkommata falls Artikelnummer vom Datentyp Text ist
If rst.NoMatch Then ' =True ist überflüssig
'Kein DS gefunden = Artikel-Nr. ist neu
MsgBox "Kein Artikel gefunden!, Bitte neu anlegen"
Me!ArtikelNr.Defaultvalue = " Me!txtArtikelNr ' bei Text: Me!ArtikelNr.Defaultvalue = """" & Me!txtArtikelNr & """"
Docmd.Gotorecord,, acNewRec
Else
'Artikel schon vorhanden, DS anzeigen
Me.Bookmark = rst.Bookmark
End If
Set rst = Nothing
End Sub
Alternativ könnte auch das "Nicht In Liste"-Ereignis eines Kombis herangezogen werden.