Ich arbeite gerne bei Auswahlen mit Kombinationsfeldern.
Nun habe ich folgendes Problem / Wunsch:
In einem Formular gebe ich einen Datensatz ein. Hierzu ist es noch notwendig, daß aus einer anderen (Unter)Tabelle einen Datensatz angewählt werden muß. Bei dem Auswählen soll aber nicht nur das eine Feld, sondern mehrere Felder aus der (Unter)tabelle angezeigt werden. Dies funktioniert bis hierhin auch alles.
Wenn ich nun sehe, daß im angewählten Datensatz eine Änderung in einem der Felder notwendig ist, würde ich gerne im angezeigten Feld den Wert ändern und zurückspeichern. Und hier bleibe ich hängen - wie macht man sowas?
Es ist unklar, was genau gemacht wird.
Werden die anderen Felder aus der Untertabelle nur angezeigt oder sollen die auch in der (Haupt)Tabelle mit gespeichert werden?
Der erste Fall bedeutet, dass die Stammdaten nicht stimmig sind und zunächst über ein an die Untertabelle gebundenes Formular, das über ein geeignetes Ereignis geladen wird, bearbeitet und gespeichert werden sollten. Danach kann der Datensatz erneut ausgewählt werden.
Im zweiten Fall dreht es sich um redundante Datenhaltung, die im Normalfall ganz vermieden werden sollte (relationale Datenbank!) . Soll es trotzdem so gemacht werden, dann müssen die Werte aus der Untertabelle (Kombifeldliste) per VBA an entspr. Textfelder übergeben werden, die an die passenden Haupttabellenfelder gebunden sind.
z.B.:
Sub Kombi1_Afterupdate()
Me!FeldX = Me!Kombi1.Column(1)
Me!FeldY = Me!Kombi1.Column(2)
End Sub
So wie unten beschrieben ....
Sub Kombi1_Afterupdate()
Me!FeldX = Me!Kombi1.Column(1)
Me!FeldY = Me!Kombi1.Column(2)
End Sub
habe ich es gemacht. Ich habe keine redundante Daten. Ich möchte nun das Feld "Feldy" ändern und in der eigentlichen Tabelle speichern - ohne ein neues Formular zu öffnen. Geht das? Wenn ja, wie ????
Hallo,
es aber klar, dass sich das auf alle darauf bezogenen Datensätze auswirkt...?
Z. B. könnte man es so machen:
Sub FeldX_Afterupdate()
Currentdb.Execute "Update Untertabelle set TabFeldX='" & Me!FeldX & "' where ID=" & Me!Kombi1.Column(0) ' wenn der ID-Wert (Feld aus der Untertabelle) auch wirklich in der ersten Spalte des Kombis steht und der Datentyp von TabFeldX TEXT ist.
End Sub
Ich will aber gesagt haben, dass Du Dich damit auf (sehr) dünnes Eis begibst.