Autobefüllen eines Feldes in einem Formular

Hallo zusammen,
ich habe ein Formular erstellt, indem ich Daten eingeben und ändern kann und dann in der Tabelle gespeichert werden.
Über dieses Formular kann ich auch meine Datensätze sehen und bestimmte Datensätze suchen.
Mein Problem als Beispiel:
Wenn ich im Formular einen neuen Datensatz eingeben möchte und im Feld „A“ z.B.: Tomaten eingebe, soll Feld „B“ automatisch mit „Juli“ befüllt werden, weil es Tomaten im Juli gibt.
Wäre in meiner Datenbank noch keine Tomaten / Juli eingepflegt, soll es über Feld „A“ und „B“ in die Tabelle eingepflegt werden, so dass bei der Suche, im Formular, nach Tomatensalat im Feld „A“ Tomaten und im Feld „B“ Juli steht.
Ich weiß „Blödes Beispiel“ aber wie erklärt man ein Problem ? :smile:
Frage: Ist das überhaupt möglich, wenn ja, wie.
Die Erklärung bitte so gestalten, dass sie auch ein Anfänger versteht :smile:

Gruß Alex

Hi Alex,

prinzipiell ist das nicht so schwer, wenn ich deine Frage richtig verstanden habe. Du kannst in Access bestimmte Ereignisse triggern (rechts klick auf das Feld A, Eigenschaften, Ereignisse).
Die Frage ist nun, wann das Ganze geschehen soll und wie. Ich hoffe du hast ein wenig Erfahrung in VBA, denn damit solltest du arbeiten. Du kannst z.B. auswählen, das beim Verlassen des Feldes (klick auf die drei Punkte […] recht von „beim Verlassen“ im Reiter Ereignisse, dann „Code-Generator“ auswählen) ein VBA-Skript losgetreten wird. Hier kannst du dann deine DB durchsuchen, nach passenden Werten suchen und diese automatisch in Feld B füllen ([Name von Feld B].value = [Ergebnis der Abfrage]).

Mal ein Beispiel:

Private Sub FeldA_Exit(Cancel As Integer)
Dim sql As String
Dim n0 As Recordset
Dim db As Database

sql = „SELECT FeldB FROM Tabelle WHERE FeldA like '*“ & Me!FeldA & „*’“
Set db = CurrentDb
Set n0 = db.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges)
If Not n0.EOF Then
Me!FeldB.value = n0!FeldB
End If
n0.Close

End Sub

Der Code ist nicht getestet und nur kurz aus der Hüfte geschossen, sollte aber das tun, was du willst. Wenn nicht, einfach nochmal fragen und am besten gleich hinzufügen wo ich zu genau oder zu wenig genau beschrieben habe. Ich kann schlecht einschätzen wieviel Erfahrung du bereits hast.

Viele Grüße,
DarkLord

Also ich weiß ja nicht genau was du damit vor hast, klingt für mich aber nach einer Kochrezeptesammlung. Das würde ich versuchen über eine Datenbank (MS Access) zu lösen - da sind dann auch sogenannte 1:n- oder n:n-Verknüpfungen möglich. D.h. zum Beispiel dem Produkt „Tomaten“ ist eindeutig der Monat „Juli“ zugewiesen, der Juli kann aber mehreren Produkten zugewiesen sein (1:n). „Tomatensalat“ könnte dagegen mit mehreren Produkten verknüpft werden (Tomaten, Zwiebel, Essig, Öl, etc.) und jedes dieser Produkte wiederrum mit anderen Rezepten (n:n). Nur so könnte dann auch die Suche funktionieren.

Datenbanken sind eine tolle Sache und man kann richtig viel damit machen allerdings nicht ganz einfach - da gehören schon fundierte Kenntnisse dazu damit das ganze dann auch so funktioniert wie man es sich vorstellt. MS Access bietet übrigens eine ganze Reihe von Beispieldatenbanken an - vielleicht ist ja da was dabei das sich umbauen läßt.

Ich hoffe ich habe mit meinen Überlegungen nicht völlig das Thema verfehlt und konnte etwas weiterhelfen.

lG

Sonja

Hi DarkLord

danke für die schnelle Rückantwort.
Wenn ich so langsam bin, dann weil ich mich in „Wer weiß was“ erst noch durchkämpfen muß.

Ich habe im Ereignis / Nach Verlassen gefunden und auf die (…) geklickt Dann den Code eingeschrieben. Die Felder A und B entsprechend geändert. - Bringt mir dann die Fehlermeldung „Fehler beim Kompalieren“
( Keine Ahnung, was das bedeutet )
In Access hab ich mich recht gut durchgeschlagen, zumindest so gut, dass ich ein Formular erstellen kann und in VBA bin ich noch blutiger Anfänger.
Aber du hast das Prinzip erfasst.
Nach der Eingabe von Tomaten / Enter, soll Access überprüfen, ob dafür schon Daten für die Saison vorhanden sind und dieses Feld automatisch befüllen.
Wenn nicht, dann soll es per Eingabe befüllt und in der Datenbank gespeichert werden.
Also: Das Feld heißt in der Tabelle „Gemüse“ und das Feld, dass automatisch befüllt werden soll „Saison“
(so auch im Formular ).

Gruß und danke für deine Bemühung
Alex

Hi Sonja,
stimmt Datenbanken sind was tolles, wenn man begriffen hat, wie sie funktionieren.
Stimmt, es soll eine Rezeptsammlung werden.
In den Beispieldatenbanken habe ich schon geschaut aber nichts gefunden und in den Büchern ist mir das meiste zu unverständlich erklärt.
Eine so ausgedehnte Verknüpfung muß es auch nicht werden. Einfach Gemüse eingeben und die Saison für dieses Gemüse ist der und der Monat.

Gruß Alex

Hi!

Ich hoffe da steht kompilieren - was das bedeutet kannst in Wiki finden. Kurz gesagt, umwandeln des Codes den du geschrieben hast in für den Computer verständlichen Code.

Ich habe hier nochmal einen bereits getesteten Code für dich:

Dim sql As String
Dim db As Database
Dim n0 As Recordset

Set db = CurrentDb
sql0 = „Select FeldB from Tabelle WHERE FeldA = '“ & Me!FeldA & „’“
Set n0 = db.OpenRecordset(sql0, dbOpenDynaset, dbSeeChanges)
If Not n0.EOF Then
Me!FeldB = n0!FeldB
End If

Der funktioniert auf jeden Fall. Wichtig hier: Meine Tabelle heißt „Tabelle“, diese Tabelle hat genau drei Felder: ID (nicht beachten), „FeldA“ und „FeldB“ (die Namen sind wichtig).
Wenn deine Tabelle oder Felder anders heißen, musst du den SQL-Code anpassen:
sql0 = „Select FeldB *HIER ANPASSEN* from Tabelle WHERE FeldA *HIER ANPASSEN* = '“ & Me!FeldA & „’“
und
Me!FeldB = n0!FeldB *HIER ANPASSEN*

Meine Felder im Formular heißen ebenfalls „FeldA“ und „FeldB“. Wenn deine snders heußen, so musst du das hier anpassen:
sql0 = „Select FeldB from Tabelle WHERE FeldA = '“ & Me!FeldA *HIER ANPASSEN* & „’“
und
Me!FeldB *HIER ANPASSEN* = n0!FeldB

Ach ja, auch ein möglicher Anfängerfehler:
Private Sub FeldA_Exit(Cancel As Integer) wird von Access automatisch geschrieben, das brauchst du nicht nochmal schreiben.

Wenns noch nicht läuft, dann stell mal deinen Code rein und eine Liste mit deinen Tabellennamen (mit Feldern) und deiner Formularnamen (mit Feldern)
Wenn ich etwas mehr Zeit habe, lade ich mal ne fertige DB hoch. Bin nur gerade etwas eng mit der Zeit, sorry.

Viele Grüße,
DarkLord

sorry, hab da keine antwort gewußt aber vergessen bescheid zu geben

Hallo kann leider nicht helfen, bin kein programmierer