4.2k Aufrufe
Gefragt in Datenbanken von scochet Einsteiger_in (15 Punkte)
Hallo,

ich habe eine DB die vereinfacht die folgende Werte enthält:

c_id
name
straße

Im Formular gibt es ein Kombinationsfeld, dass alle Werte per Querry zugeordnet bekommt, jedoch wird nur ein Wert angezeigt, da die anderen eine Spaltenbreite von "0cm" haben.

Mittels VB möchte ich Textfelder unter dem Kombifeld mit Text füllen - je nachdem welcher Wert im Kombifeld auswählt ist.

Also habe ich ein Ereignis "nach Aktualisierung" welches folgendes macht:

Private Sub K_Hersteller_AfterUpdate()
Me.L_Strasse = Me.Kombibox.Column(3)
End Sub

Der Text steht anschließend wie gewünscht im Feld.


Nach dem verlassen des Formulars überschreiben die Werte, die momentan ausgewählt sind immer die Werte die zum Start ausgewählt sind.
Also mit anderen Worten: im Kombifeld ist beim Start ID 1 ausgewählt und diese Werte werden durch Werte von bspw. ID 4 (beim verlassen ausgewhlt) überschrieben.

Kann man das irgendwie verhindern?


Vielen Dank für die Hilfe!

8 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Private Sub K_Hersteller_AfterUpdate()
Me.L_Strasse = Me.Kombibox.Column(3)
End Sub


Ich verstehe Dein Problem nicht ganz. Dein Code füllt in dem zu dem Zeitpunkt des Auswählens angezeigten Datensatz das Feld L_Strasse mit dem Inhalt Deiner Kombi. Das hat doch mit der ID nichts zu tun.

Was wolltest Du denn stattdessen tun?

Gruß Marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Oder habe ich Deinen letzten Absatz nicht verstanden??
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo sochet,

interessant ist auch die Frage, wie und wann du deine Combobox mit Werten befülltst und ob die Combobox an ein Feld der Tabelle aus dem Formular gebunden ist. Und noch ein Tipp. Verwende me!L_Strasse bzw. me!Kombibox.column(3) , da L_Strasse und Kombibox KEINE Eigenschaften sind. Das erspart dir viel ärger.

Gruß
Ralf
0 Punkte
Beantwortet von scochet Einsteiger_in (15 Punkte)
Also meine Datensätze bestehen alle aus:

ID
name
strasse

Jetzt habe ich beispielhaft 3 Datensätze (ID 1 bis 3).

Beim Aufruf des Formulars wird im Kombifeld der name des ersten Datensatzes und im Textfeld die dazugehörige Straße angezeigt.

Wenn ich im Kombifeld nun den dritten Datensatz auswähle zeigt er im Textfeld auch die dazugehörige Straße an.
Wenn ich jetzt das Formular verlasse (der dritte Datensatz ist im Kombifeld noch ausgewählt) werden name und strasse von ID1 mit den Werten von ID3 überschrieben.



Mein Kombifeld hat als Datensatzherkunft ein querry, welches alle Werte der Tabelle abfragt. Ferner hat das Kombifeld die zweite Spalte (name) als gebundene Spalte.
Danke für den Tipp.. habe ich gleich mal umgesetzt.
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Warum schreibst Du denn nicht endlich mal was stattdessen geschehen sollte??

es passiert doch genau das, was du schreibst:

Ich verstehe Dein Problem nicht ganz. Dein Code füllt in dem zu dem Zeitpunkt des Auswählens angezeigten Datensatz das Feld L_Strasse mit dem Inhalt Deiner Kombi. Das hat doch mit der ID nichts zu tun.

Beim Aufruf des Formulars wird im Kombifeld der name des ersten Datensatzes und im Textfeld die dazugehörige Straße angezeigt.

Wenn ich im Kombifeld nun den dritten Datensatz auswähle zeigt er im Textfeld auch die dazugehörige Straße an.
Wenn ich jetzt das Formular verlasse (der dritte Datensatz ist im Kombifeld noch ausgewählt) werden name und strasse von ID1 mit den Werten von ID3 überschrieben.


was willste denn Überhaupt machen? Du hast ID1 geöffnet, klickst Straße von ID3 an und fügst diese in ID1 ein, die Straße aus ID3?? Wo soll denn die Straße von ID 3 rein, in ID3 steht se doch schon!


gruß marie
0 Punkte
Beantwortet von scochet Einsteiger_in (15 Punkte)
Sorry das ich mich etwas undeutlich ausgedrückt habe...


Ich möchte an den Datensätzen nichts ändern... Die sollen einfach nur angezeigt werden und beim verlassen den gleichen Zustand haben wie vorher.
0 Punkte
Beantwortet von marie Experte (2k Punkte)
dann wirf das schnell mal raus:
Me.L_Strasse = Me.Kombibox.Column(3)


denn damit hast Du ja geändert.
schreib stattdessen ID als gebundene Spalte und:


Me.RecordsetClone.FindFirst "[ID] = " & Me![Kombibox]
Me.Bookmark = Me.RecordsetClone.Bookmark


Gruß marie
0 Punkte
Beantwortet von scochet Einsteiger_in (15 Punkte)
Danke.. das hat mein Problem gelöst..

Mir war nicht bewusst, das die Befehle speziell zur Änderung sind. Bin gerade noch bei meinen Anfängen in Access...
...