Hallo,
ich habe ein kleines Ufo frmErfassungUfoVarianten, welches 2 Kombifelder beinhaltet, cboVariante und cboVariantenArt.
In cboVariante stehen 10 Werte zur Auswahl, "-" und "A-I". Ist es möglich, dass wenn man die Werte - oder A auswählt (und nur bei den beiden Werten soll das sein!), das Kombifeld cboVariantenArt entsprechend ein Wert eingetragen wird, nämlich bei einem - ein - und bei A --> Standard-Ausgabe? Ich denke mal, dass es geht, aber wenn dann wohl nur mit VBA, oder? Da ich VBA seitig weiterhin nur rudimentär arbeiten kann, wäre ich froh hier unterstützt zu werden. Vielen Dank vorab.
Gruß Andreas
Moin Andreas,
klar geht das. Du musst halt zB im AfterUpdate Ereignis auf die Inhalte prüfen und darauf reagieren.
Hallo Jürgen,
bedeutet also, das AfterUpdate Ereignis wende ich auf das Combifeld cboVariante an. Okay, da ich wirklich keinerlei Plan habe was VBA angeht, habe ich mal das hier gemacht, ging aber wie erwartet nicht:
Private Sub cboVariantenArt_AfterUpdate()
If Me.cboVariante = "-" Then
Me.cboVariantenArt = "-"
Else
If Me.cboVariante = "A" Then
Me.cboVariantenArt = "Standard-Ausgabe"
End If
End If
End Sub
Mir wäre es recht, wenn du keinen Lachkrampf bekommst :(, aber VBA ist eben nicht mein Ding. Ich habe den Debug aktiviert und wenn ich dann das ganze ausführe, dann bleibt es bei der letzten End If hängen (gelb markiert). Was ist falsch und muss man mit den ID der Auswahlfelder arbeiten statt den Namen?
mfG
A. Müller
Man muss den Wert, welcher durch die gebundene Spalte eines Kombifelds festgelegt ist, verwenden, was übrigens nichts mit VBA zu tun hat.
Wie sind denn die beiden Kombifelder organisiert?
PS: Du musst Dich nicht in jedem Thema von Dir entschuldigen, dass VBA nicht Dein Ding ist. Du könntest Dir aber Literatur zulegen, falls Du es lernen willst oder online so etwas wie VBA in Excel (https://de.wikibooks.org/wiki/VBA_in_Excel) (verwendet nur andere Objekte - der algemeine Teil gilt aber auch für Access-VBA) als Lesezeichen zum Nachschlagen speichern.
Hi,
okay, werde ich machen (nicht immer entschuldigen). Ich habe mir mal das PDF herunter geladen. Mit dem lernen ist das so eine Sache, nicht dass ich nicht mag, ist eher eine Frage des aufnehmen von Stoff, sprich fällt mir echt nicht mehr so einfach, kann es mir nicht mehr merken :(.
ZitatWie sind denn die beiden Kombifelder organisiert?
Beide Kombis sind mit einer Abfrage belegt.
cboVariante:
SELECT tblVariante.VarianteID, tblVariante.Variante FROM tblVariante;
Zugehörige Tabelle siehe bild1.
cboVariantenArt:
SELECT tblVariantenArt.VariantenArtID, tblVariantenArt.VariantenArt FROM tblVariantenArt;
Zugehörige Tabelle siehe bild2.
Meintest du das was das organisiert angeht?
Gruß Andreas
Zitat von: derilzemer am Juli 09, 2017, 12:40:17bedeutet also, das AfterUpdate Ereignis wende ich auf das Combifeld cboVariante an. Okay, da ich wirklich keinerlei Plan habe was VBA angeht, habe ich mal das hier gemacht, ging aber wie erwartet nicht:
Private Sub cboVariantenArt_AfterUpdate()
...
Wen du genau schaust, könnte dir eine Diskrepanz zwischen deiner Beschreibung und dem Code auffallen.
Du schreibst von
cboVariante, aber die Ereignisprozedur behandelt das After-Update-Ereignis von
cboVarianteArt. - Letzteres dürfte nicht korrekt sein.
Hallo,
danke für den Hinweis. Ich habe es angepasst, es funktioniert aber dennoch nicht wie gewünscht.
Gruß Andreas
... und wie sieht die Anpassung jetzt aus?
Hallo,
sorry, da habe ich nicht viel angepasst außer eben den Private Sub Teil. Beim ausführen, sprich wenn ich die Auswahl im Kombifeld cboVariante mache mit z.B. - und ich via Tab ins cboVariantenArt springe, passiert nichts, also keine auffüllen mit dem gewünschten Wert - auch keinerlei Fehlermeldung. Setze ich einen Haltepunkt, dann hält er dort auch, aber ich sehe dann unter Me --> After Update auch keine Errormeldung, lediglich "" string. Debugge ich falsch?
Gruß Andreas
Private Sub cboVariante_AfterUpdate()
If Me.cboVariante = "-" Then
Me.cboVariantenArt = "-"
Else
If Me.cboVariante = "A" Then
Me.cboVariantenArt = "Standard-Ausgabe"
End If
End If
End Sub
Hallo Andreas,
Private Sub cboVariante_AfterUpdate()
'sinnvolle Einrückungen helfen den Code besser zu verstehen
If Me.cboVariante = "-" Then
Me.cboVariantenArt = "-"
Else
If Me.cboVariante = "A" Then
Me.cboVariantenArt = "Standard-Ausgabe"
End If
End If
End Sub
ist vom Ablauf schon richtig. Allerdings soll das "Ziel" sicher nicht im Kombifeld, sondern im "darunter liegenden" Textfeld gespeichert werden. Also über cboVariantenArt wird etwas gewählt, das in Feld ? gespeichert wird. Du ersetzt also Me!cboVariantenArt="-" zB durch Me!txtVariantenArt.
Hallo,
Ich würde erst mal schauen, ob die Vergleichswerte aus dem 1. Kombi ("-" bzw. "A")
überhaupt in der gebundenen Spalte stehen, und beim 2. eigentlich auch.
Vielleicht kann dann auch dieses helfen: http://www.donkarl.com?FAQ4.12 (http://www.donkarl.com?FAQ4.12)
gruss ekkehard
Hallo Ekkehard und Jürgen,
Zitat von: Beaker s.a. am Juli 09, 2017, 18:52:57
Ich würde erst mal schauen, ob die Vergleichswerte aus dem 1. Kombi ("-" bzw. "A")
überhaupt in der gebundenen Spalte stehen
Die Werte "-" bzw. "A" stehen definitiv jeweils in der gebundenen Spalte 1.
ZitatAllerdings soll das "Ziel" sicher nicht im Kombifeld, sondern im "darunter liegenden" Textfeld gespeichert werden. Also über cboVariantenArt wird etwas gewählt, das in Feld ? gespeichert wird. Du ersetzt also Me!cboVariantenArt="-" zB durch Me!txtVariantenArt.
Hmmm, ich denke ich verstehe was du meinst bzw. mir sagen willst. Ich glaube mir schwahnt, ich habe dazu etwas vergessen zu erwähnen :(.
Das Ufo hat als Datensatzquelle tblVariArtVari (siehe bild1). Das Steuerelement des Kombifeldes cboVariante ist VarianteID_F aus der tblVariArtVari und das Steuerelement des Kombifeldes cboVariantenArt ist VariantenArtID_F aus der tblVariArtVari. Jetzt habe ich gemäß deinem Hinweis eben den Code wie folgt angepasst:
Private Sub cboVariante_AfterUpdate()
If Me.VarianteID_F = "1" Then
'Me.cboVariantenArt = "-"
Me.VariantenArtID_F = "1"
Else
If Me.VarianteID_F = "2" Then
'Me.cboVariantenArt = "Standard-Ausgabe"
Me.VariantenArtID_F = "2"
End If
End If
End Sub
Siehe da, es funktioniert. Mann oh Mann, sorry, aber ich sollte mittlerweile wissen, dass ich in einem Kombifeld nur auswähle, aber nicht schreibe, das passiert woanders. Danke für den Wink mit dem Zaunpfahl.
Gruß Andreas
wenn's funktioniert isses ja gut. Was aber wundert (zumindest mich) - Me.VariantenArtID_F deutet auf einen Fremdschlüssel hin. Und ein solcher ist i.d.R. vom Typ Zahl, was wiederum die Gänsefüsschen bei der Wertezuweisung 1, bzw 2 obsolet machen würde.
Hallo Jürgen,
ich habe die "" entfernt und habe ebenso ein fehlerfreies Ergebnis, sprich korrekte Einträge in entsprechende Tabellen. Beide Varianten gehen also. Kann es an der Access Version liegen (Access 2016, VBA 7.1)?
Gruß Andreas
Hallo Andreas,
es liegt eher an der Toleranz von Access, das für den String hier die Zahl als solche interpretiert und akzeptiert.