Supportnet / Forum / Datenbanken
Felder automatisch füllen
Frage
Hallo!
Habe folgendes Problem:
In einer access-Tabelle oder einem daraus entstandenem Formular möchte ich in einem Feld "Artikel" eben jenen Artikel eingeben und in der nächsten Spalte soll dann automatisch die Artikelnummer erscheinen (oder umgekehrt). Artikel und Artikelnummer stehen zusammen in einer separaten Tabelle (oder Abfrage). Kann mir irgendwer helfen?
MfG
J.Daniel
Antwort 1 von oliverV
Hallo Daniel,
schau mal in der VBA-Onlinehilfe unter DomWert (DLookup-Funktion).
In deinem Formular benötigst du das eindeutige Feld des Artikeldatensatzes (ID oder evtl. Artikelnummer).
Ich gehe mal davon aus, das die Artikelnummer das eindeutige Feld ist.
Schreibe beim Formularereignis „Beim Anzeigen“ folgenden Code mit deinen Tabellen- und Feldbezeichnungen:
[Code]
Me!Artikelname = DLookup("Artikelname", "Artikel", "Artikelnummer =" & Me!Artikelnummer)
Wenn du einen Datensatz im Formular ändern willst, schreibe den gleichen Code beim Ereignis „Nach Aktualisierung“ deines Artikelnummern-Feldes.
Gruß
Oliver
schau mal in der VBA-Onlinehilfe unter DomWert (DLookup-Funktion).
In deinem Formular benötigst du das eindeutige Feld des Artikeldatensatzes (ID oder evtl. Artikelnummer).
Ich gehe mal davon aus, das die Artikelnummer das eindeutige Feld ist.
Schreibe beim Formularereignis „Beim Anzeigen“ folgenden Code mit deinen Tabellen- und Feldbezeichnungen:
[Code]
Me!Artikelname = DLookup("Artikelname", "Artikel", "Artikelnummer =" & Me!Artikelnummer)
Wenn du einen Datensatz im Formular ändern willst, schreibe den gleichen Code beim Ereignis „Nach Aktualisierung“ deines Artikelnummern-Feldes.
Gruß
Oliver
Antwort 2 von J.Daniel v.Bargen
Vielen Dank!
Leider funktioniert es immer noch nicht. Das einzige,was angezeigt wird, ist #Fehler!. Ausserdem widersprechen sich Bücher und Hilfen, auch wenn sie direkt von microsoft stammen.
Weiss noch jemand Rat?
MfG J.Daniel
Leider funktioniert es immer noch nicht. Das einzige,was angezeigt wird, ist #Fehler!. Ausserdem widersprechen sich Bücher und Hilfen, auch wenn sie direkt von microsoft stammen.
Weiss noch jemand Rat?
MfG J.Daniel
Antwort 3 von piano
Hallo
Sehe ich das richtig so?
Du hast ein Feld Artikel und ein Feld Artikel-Nr.
1. Wenn in "Artikel" der Artikel eingegeben wird, soll die Nummer gesucht und eingetragen werden.
2. Wenn in "Artikel-Nr" die Nummer eingegeben wird, soll der Artikel gesucht und eingetragen werden.
Dann mußt du den entsprechenden Code von @OliverV (Hallo Oliver!) jeweils beim Ereignis "Nach Aktualisierung" der beiden Felder aufrufen:
und
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Sehe ich das richtig so?
Du hast ein Feld Artikel und ein Feld Artikel-Nr.
1. Wenn in "Artikel" der Artikel eingegeben wird, soll die Nummer gesucht und eingetragen werden.
2. Wenn in "Artikel-Nr" die Nummer eingegeben wird, soll der Artikel gesucht und eingetragen werden.
Dann mußt du den entsprechenden Code von @OliverV (Hallo Oliver!) jeweils beim Ereignis "Nach Aktualisierung" der beiden Felder aufrufen:
Me!Artikelname = DLookup("Artikelname", "Artikel", "Artikelnummer =" & Me!Artikelnummer)
nach Nummerneingabe und
Me!Artikelnummer = DLookup("Artikelname", "Artikel", "Artikelname=" & Me!Artikelname)
nach ArtikeleingabeGruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Antwort 4 von Peloniel
Das hat nicht funktioniert. Was soll eigentlich diese Me! heissen. Vielleicht 'ne blöde Frage, aber ich bin eben noch am Anfang meiner access-Karriere.
Peloniel
Peloniel
Antwort 5 von oliverV
Hallo Peloniel, Daniel ?
Me ist verkürzte Schreibweise von Objekt!Objektname (z.B. Forms!Artikel). Neben der Schreiberleichterung hast du den Vorteil, das bei einer Namensänderung des Formulars der Code nicht angepasst werden muss.
macht eine weitere Hilfestellung nicht wirklich einfacher.
Beschreib mal ausführlicher was du genau machen willst.
Wie heißen deine Felder „Artikel“ und „Artikelnummer“ ? Sind die Felder gebunden oder ungebunden ? Sind deine Felder Kombifelder ? Ist die Datenherkunft deines Formulars mit der Artikel-Tabelle identisch, oder beziehst du nur die Datenherkunft deines Kombifeldes aus der Artikel-Tabelle (z.B. im Formulars „Bestellungen“) ?
Ein paar mehr Informationen machen es leichter, genauere Hinweise zu geben.
Mit der nächsten Antwort ist piano wieder dran :-)
Gruß
Oliver
Me ist verkürzte Schreibweise von Objekt!Objektname (z.B. Forms!Artikel). Neben der Schreiberleichterung hast du den Vorteil, das bei einer Namensänderung des Formulars der Code nicht angepasst werden muss.
Zitat:
Das hat nicht funktioniert.
Das hat nicht funktioniert.
macht eine weitere Hilfestellung nicht wirklich einfacher.
Beschreib mal ausführlicher was du genau machen willst.
Wie heißen deine Felder „Artikel“ und „Artikelnummer“ ? Sind die Felder gebunden oder ungebunden ? Sind deine Felder Kombifelder ? Ist die Datenherkunft deines Formulars mit der Artikel-Tabelle identisch, oder beziehst du nur die Datenherkunft deines Kombifeldes aus der Artikel-Tabelle (z.B. im Formulars „Bestellungen“) ?
Ein paar mehr Informationen machen es leichter, genauere Hinweise zu geben.
Mit der nächsten Antwort ist piano wieder dran :-)
Gruß
Oliver
Antwort 6 von UMMuehlpfordt
Hallo,
ich habe ein ähnliches Problem mit dem Recordset-Object gelöst:
Private Sub ANR_AfterUpdate()
Dim EINGABE
Dim db As Database
Dim rstanr As Recordset
Set db = CurrentDb
EINGABE = ANR
Set rstanr = db.OpenRecordset("W_Liste", dbOpenDynaset)
rstanr.MoveFirst
************************************************
*** Suche so lange in der Tabelle "w_Liste" ***
*** bis die eingegebene ANR dort gefunden ***
*** wurde und trage dann in das Feld <Titel>***
*** aus der Tabelle "w_Liste" das <Ereignis>**
*** ein. **
************************************************
Do While rstanr.EOF = False And rstanr!ANR <> EINGABE
rstanr.MoveNext
If rstanr.EOF = True Then
rstanr.MoveLast
Exit Do
End If
Loop
Forms!EINGABE!TITEL = rstanr!Ereignis
rstanr.Close
db.Close
Ich habe diesen Code gekürzt, da da noch drin war, wenn Nummer nicht vorhanden, dann ein Eingabeformular öffnen - ich hoffe ich habe nicht zuviel gekürzt
Mfg
Uwe
ich habe ein ähnliches Problem mit dem Recordset-Object gelöst:
Private Sub ANR_AfterUpdate()
Dim EINGABE
Dim db As Database
Dim rstanr As Recordset
Set db = CurrentDb
EINGABE = ANR
Set rstanr = db.OpenRecordset("W_Liste", dbOpenDynaset)
rstanr.MoveFirst
************************************************
*** Suche so lange in der Tabelle "w_Liste" ***
*** bis die eingegebene ANR dort gefunden ***
*** wurde und trage dann in das Feld <Titel>***
*** aus der Tabelle "w_Liste" das <Ereignis>**
*** ein. **
************************************************
Do While rstanr.EOF = False And rstanr!ANR <> EINGABE
rstanr.MoveNext
If rstanr.EOF = True Then
rstanr.MoveLast
Exit Do
End If
Loop
Forms!EINGABE!TITEL = rstanr!Ereignis
rstanr.Close
db.Close
Ich habe diesen Code gekürzt, da da noch drin war, wenn Nummer nicht vorhanden, dann ein Eingabeformular öffnen - ich hoffe ich habe nicht zuviel gekürzt
Mfg
Uwe
Antwort 7 von J.Daniel v.Bargen
Vielen Dank erstmal an alle, die sich hier mit meinem Problem beschäftigt haben. Es war zwar nicht die optimale Lösung dabei, aber viele hilfreiche Anregungen. Mein Problem kann als gelöst gelten.
J.Daniel
J.Daniel

