Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

UFO mit zwei Combis, wenn ein Wert ausgewählt wird soll anderes befüllt werden

Begonnen von derilzemer, Juli 09, 2017, 10:26:16

⏪ vorheriges - nächstes ⏩

derilzemer

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
Grüße und Dank im voraus
Andreas

el_gomero

Moin Andreas,

klar geht das. Du musst halt zB im AfterUpdate Ereignis auf die Inhalte prüfen und darauf reagieren.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

derilzemer

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
Grüße und Dank im voraus
Andreas

Lachtaube

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 (verwendet nur andere Objekte - der algemeine Teil gilt aber auch für Access-VBA) als Lesezeichen zum Nachschlagen speichern.
Grüße von der (⌒▽⌒)

derilzemer

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

Grüße und Dank im voraus
Andreas

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

derilzemer

Hallo,
danke für den Hinweis. Ich habe es angepasst, es funktioniert aber dennoch nicht wie gewünscht.
Gruß Andreas
Grüße und Dank im voraus
Andreas

Lachtaube

Grüße von der (⌒▽⌒)

derilzemer

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
Grüße und Dank im voraus
Andreas

el_gomero

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.

Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Beaker s.a.

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
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

derilzemer

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
Grüße und Dank im voraus
Andreas

el_gomero

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.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

derilzemer

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
Grüße und Dank im voraus
Andreas

el_gomero

Hallo Andreas,

es liegt eher an der Toleranz von Access, das für den String hier die Zahl als solche interpretiert und akzeptiert.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen