Supportnet Computer
Planet of Tech

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


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

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:
Me!Artikelname = DLookup("Artikelname", "Artikel", "Artikelnummer =" & Me!Artikelnummer)
nach Nummerneingabe
und
Me!Artikelnummer = DLookup("Artikelname", "Artikel", "Artikelname=" & Me!Artikelname)
nach Artikeleingabe
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 -



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

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.

Zitat:

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

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