PDA

Vollständige Version anzeigen : Wert abhängig von KombiFeld per Code zuweisen


Frechdax
22.03.2006, 13:02
Hi,

also folgende Situation: Ich habe ein Kombinationsfeld cbo_schulung im Formular frm_schulung_zuweisen. Wenn ich im Kombifeld was auswähle, soll die Dauer (tbl_schulung.dauer) der ausgwählten Schulung in txt_dauer geschrieben werden.

Habe folgendes probiert:

Me!txt_dauer = SELECT tbl_schulung.dauer FROM tbl_schulung WHERE ((tbl_schulung.lfdnr)=Formulare!frm_schulung_zuweisen!cbo_schulung);

lfdnr ist mein Primärschlüssel von tbl_schulung. Der Code steht im Ereignis nach Aktualisierung im Kombinationsfeld. Leider wird das so nicht angenommen. Die Syntax ist wohl falsch. Wäre schön, wenn mir jemand einen Hinweise geben könnte wie das in Access auszusehen hat.

Gruß!
Mareike

Nouba
22.03.2006, 13:10
Nimm mal das Feld <tt>Dauer</tt> mit in die Datensatzherkunft von cboSchulung auf und blende die Spalte über die Spaltenbreiten aus. Bei drei Spalten im Kombifeld und angezeigter zweiter Spalte würde die Spaltenbreiten-Eigenschaft ungefähr so aussehen können: <tt>0cm;3cm;0cm</tt> Als Steuerelementeinhalt für <tt>txt_dauer</tt> kommt dann <tt>[cbo_schulung].[Column](2)</tt> in Betracht. Siehe auch <a href="http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.15">FAQ 4.15</a>.

Frechdax
22.03.2006, 13:16
So kann ich es leider (glaube ich) nicht machen, da der Wert aus tbl_schulung kommt, aber in tbl_conn_mitarbeiter_schulung gespeichert werden soll. Oder geht das trotzdem irgendwie?

Nouba
22.03.2006, 13:27
Wenn die Schulungsdauer nachträglich nicht geändert wird, ist das Speichern der Dauer redundant und falsch. Sollte die Dauer nur als Vorschlag zu betrachten sein, kannst Du im Nach Aktualisierung Ereignis des Kombifelds die vorgeschlagene Dauer ermitteln.Private Sub cbo_schulung_AfterUpdate()
Me!txt_dauer = Nz(Me!cbo_Schulung.Column(2) ,0)
End Sub
<tt>txt_dauer</tt> wäre dann an ein Feld der Datenherkunft zu binden und kann überschrieben werden.

Frechdax
22.03.2006, 13:33
Danke! Habe es gerade genau so gelöst: Me.txt_dauer = Me.cbo_schulung.Column(2)

Die Dauer muss leider im Nachhinein (und damit redundant) geändert werden.

Lg Mareike

Frechdax
22.03.2006, 13:35
Noch eine Nachfrage:

Wozu das Nz bzw. gibt es einen Unterschied (Vor- bzw. Nachteil) zwischen unseren Codzeilen?

Nouba
22.03.2006, 13:39
Es könnte ja sein, dass man die Dauer nicht einträgt - also Null ist. Vom Verständnis her würde ich dann eine 0 bevorzugen. Man kann auch noch weiter gehen und Gültigkeitsregeln auf Feldebene festlegen, um z. Bsp. eine negative Dauer zu untersagen. Im Vor Aktualisierung Ereignis des Formulars lässt sich diese Prüfung aber auch gestalten. Wenn man will, lässt es sich auch mit Null-Werten leben. Es hängt halt davon ab, was Du mit der Dauer später anstellen willst.

Frechdax
22.03.2006, 13:46
Danke! Das mit den Gültigkeitsregeln ist noch eine gute Idee für mich, denn die Dauer darf wirklich nicht kleiner 0 sein. Allerdings sind Null-Werte mögl.