Neuigkeiten:

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

Mobiles Hauptmenü

vorhandener Datensatz

Begonnen von tommy79, Mai 20, 2012, 13:09:59

⏪ vorheriges - nächstes ⏩

tommy79

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

tommy79

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).




Beaker s.a.

#2
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 Sub

Ich 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.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

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 Sub

hth
gruss ingrid
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

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.