Office: (Office 2010) Listenfeld nach Rowsource-Änderung "anklicken".

Helfe beim Thema Listenfeld nach Rowsource-Änderung "anklicken". in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Moin zusammen. Folgendes Problem: Ich hab ein Listenfeld, dessen Datenherkunft im Formular per Optionsgruppe geändert werden kann. Verschiedene Filter... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Andre.Heisig, 30. September 2013.

  1. Listenfeld nach Rowsource-Änderung "anklicken".


    Moin zusammen.

    Folgendes Problem: Ich hab ein Listenfeld, dessen Datenherkunft im Formular per Optionsgruppe geändert werden kann. Verschiedene Filter setzen, nichts aufregendes soweit.

    Ändere ich per Optionsgruppe die Datenherkunft des Listenfeldes, wird die Liste selber auch korrekt aktualisiert, das Form und alle Subforms drin behalten aber den alten Datensatz-Bezug, bis ein erneuter Klick ins Listenfeld erfolgt. Schnellklicker unter meinen Usern haben dann gern schonmal Daten an falschen Stellen erfasst ...


    Code:
    Ich kann mit Code:
    zwar den ersten Eintrag der (neuen) Liste markieren, der im Form selber gewählte Datensatz ändert sich dadurch aber nicht ...

    Was tun?


    Gruß und Danke!

    :)
     
    Andre.Heisig, 30. September 2013
    #1
  2. Das ist normal. Das Formular hat keinen Automatismus, auf ein geändertes Listenfeld zu reagieren, außer bei einer Verknüpfung (HFo-UFo).

    Du benötigst also zusätzlich eine Aktualisierung der Formulardatenherkunft per Anweisung.
     
  3. Was genau?

    Ich hab alles mir sinnvoll Erscheinende durch ("form.requery"; "call lbx_BaustellenID_AfterUpdate", direktes requery aller Subforms ...), bisher brachte nichts das gewünschte Update.

    Witzigerweise kann ich mit einem Doppelklick auf das Optionsfeld das Form-Update antriggern, das ist dem Benutzer nur schwer zu vermitteln.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Andre.Heisig, 2. Oktober 2013
    #3
  4. Listenfeld nach Rowsource-Änderung "anklicken".

    Wahrscheinlich musst Du noch das Ereignis des Listenfeldes anstoßen, das die
    Form aktualisiert

    Nach dem:

    Code:
    entweder

    Code:
    oder

    Code:
    je nachdem, was bei Dir zutrifft, wenn jemand ins Listenfeld klickt
     
    Scorefun, 2. Oktober 2013
    #4
  5. Wie genau ist die Datenherkunft des Formulars und die Abhängigkeit vom Listenfeld?
     
  6. Hallo!

    Muss gleich weg, daher nur kurz.

    Probiere mal .recalc .refresh und/oder repaint aus (Im Formular und/oder den Unterformularen).

    Grüße
    Ingo
     
    Claypool, 2. Oktober 2013
    #6
  7. Sorry, konnte eine Zeitlang nicht weitermachen am Projekt.

    Beides Probiert. Original hatten sowohl mein Listefeld als auch die Optionsgruppe nur ein "AfterUpdate"-Event:

    Code:
    Habe für beide Elemente ein "OnClick"-Event angelegt, den 4-Zeiler reinkopiert, keine Veränderung.

    Was mir im Moment nicht einleuchtet, ist der "Doppelklick-Effekt" auf meine Optionsgruppe: Es gibt kein hinterlegtes Doppelklick-Event. Also führt der zweite Klick (ich habs grade probiert; es ist tatsächlich kein Doppelklick nötig, sondern auch ein normaler, verzögerter Zweitklick reicht) das Formular-Update aus.

    Warum zeigt das Form den ersten Datensatz-Wechsel nicht, den zweiten dann aber an?


    Das Form selber hat eine ungefilterte Tabelle als Datenherkunft, das Listfeld basiert auf SQL-Statements, die jeweils andere Filter setzen, und dafür z.T. auch noch andere Tabellen hinzuziehen.

    Edit: Die Datenherkunft des Forms ändere ich in dem Ablauf nicht, lediglich die des Listfeldes, welches wiederum die Datensatz-ID des Forms / Datensatzes festlegt.


    Probiere ich gleich durch; ich meine ".Recalc" und ".Refresh" schon versucht zu haben, bin aber nicht mehr sicher. ".Requery" bewirkt nichts.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Andre.Heisig, 4. Oktober 2013
    #7
  8. Listenfeld nach Rowsource-Änderung "anklicken".

    Welche Erwartung hast Du da an das Formular?
    Ohne Änderung der Datenherkunft in irgendeiner Form kannst Du tausende Codezeilen durchlaufen und Millionen Requerys abfeuern, um nichts zu erreichen.
     
  9. Warum bewirkt dann ein mehrfacher Klick auf meine Optionsgruppe genau das, was ich gerne beim ersten Klick schon hätte?

    Ich wähle doch per Listfeld eine Datensatz-ID aus. Mit dem Setzen von Filtern per Optionsgruppe variiere ich die Auswahl möglicher IDs, dazu muss ich doch aber die Datenherkunft des Forms selber nicht ändern? Oder reden wir aneinander vorbei?
     
    Andre.Heisig, 4. Oktober 2013
    #9
  10. Hallo,

    Klick-Ereignisse sind in der Regel nicht die erste Wahl in solchen Fällen. Sowohl die Optionsgruppe als auch das Listenfeld sollten auf das AfterUpdate-Ereignis eingestellt werden.

    Handelt es sich um ein einzelnes Formular oder gibt es auch noch Unterformulare darin?
     
    Anne Berg, 4. Oktober 2013
    #10
  11. Das Setzen eines Filters auf ein Formular verstehe ich als Änderung der Datenherkunft. Immerhin ist SELECT * FROM Tab WHERE X=1 etwas anderes als SELECT * FROM Tab.

    Eine nicht vorhandene(?) Abhängigkeit vom Listenfeld wird aber keine abhängigen Änderungen am Formular erzeugen, oder?
     
  12. Hi Anne,

    ich hatte und habe sowohl in der Optionsgruppe als auch im Listfeld nur das "AfterUpdate"-Event, mit dem Klick-Event habe ich nur rumgetestet, allerdings eben ohne Erfolg. Das Formular beinhaltet sowohl Datenfelder als auch Unterformulare.

    Um Missverständnissen vorzubeugen: Klicken funktioniert tadellos! Wenn ich per Optionsgruppe den Filter des Listfelds neu setze (und dort den neuen, ersten Datensatz markiere), zieht das Form den geänderten Datensatz erst an, wenn ich

    a) ins Listfeld klicke, oder
    b) in der Optionsgruppe ein zweites Mal auf den gleichen Filter klicke.


    Ich bin inzwischen ein Stück weiter: Das Markieren des ersten Listfeldeintrages per "Me!lbx_BaustellenID.Selected(0) = True" setzt offenbar noch keinen (neuen) Wert für die Listbox "lbx_BaustellenID", d.h. die Markierung ist reine Optik, die tatsächliche ID aber noch gar nicht gesetzt / geändert.

    Das erfolgt erst beim Klick in das Listfeld, bzw. beim erneuten Anklicken der Optionsgruppe. Dann liegt das Problem eher in der Frage, wann wird die ID des Listfeldes tatsächlich geändert.
     
    Andre.Heisig, 4. Oktober 2013
    #12
  13. Listenfeld nach Rowsource-Änderung "anklicken".

    Nein. Ein Problem liegt darin, dass eine VBA-Änderung kein AfterUpdate-Event auslöst. Ob das Listenfeld den gewünschten Rückgabewert hat, kann man ja mit einem einfachen Debug.Print testen.

    Wenn aber das Formular keine Abhängigkeit zum Listenfeld hat, hat es mit oder ohne Event keinen Grund zu reagieren.
     
  14. Hallo!

    Gibt es da vielleicht irgendwelche Contros, die sich überlagern. Spiel doch mal mit den Entwurfsbefehlen "In den Vordergrund bringen" und "In den Hintergrund bringen".
    Dieser zweimalige klick hört sich so an, als ob da erst was markiert werden muss.

    Mach die Umrandung des Optionsfeldes mal kleiner, so dass die nicht über den Radioknöpfe läuft.
    Passiert da was beim Klicken mit irgendwelchen Fokusse (VBA)?

    Grüße
    Ingo
     
    Claypool, 4. Oktober 2013
    #14
  15. Irgendwie hab ich das Gefühl, wir reden aneinander vorbei:

    Die VBA-Änderung (Datenherkunft des Listenfeldes) findet im AfterUpdate-Event meiner Mehrfach-Auswahl statt. Der Part funktioniert auch fehlerfrei.

    DAS das Listenfeld die Datensatz-ID erst beim zweiten Mal anklicken der Optionsgruppe ändert, habe ich mit Debug.Print getestet.

    Ich verstehe auch nicht wirklich, warum Du auf der Datenherkunft des Forms "herumreitest". Bitte nicht als Kritik verstehen, sondern als Bitte um Erleuchtung, ich sehe da nicht das Problem. Wenn ich durch mein Listenfeld klicke, ändere ich auch nichts an der Datenherkunft des Forms, wohl aber an dem aktuell markierten Datensatz.

    Ich muss die Datenherkunft des Forms nicht ändern, nur die im Listfeld zur Auswahl stehenden Datensatz-IDs, dazu reicht doch eine Änderung der Datenherkunft des Listfeldes.

    Was mir nicht einleuchtet, ist, warum ich per VBA zwar einen Listfeld-Eintrag markieren kann, dadurch aber die ID des markierten Eintrages nicht auch übernommen wird. Erst recht nicht, wenn ich den gleichen Ablauf zweimal hintereinander ausführe, und nachstellbar der erste Klick zwar optisch einen Datensatz markiert, aber erst der zweite Klick (auf die gleiche Auswahl im Optionsfeld) den Datensatz-Zeiger wirklich setzt.

    Ich sehe da keine Verbindung zur Datenherkunft des Formulars.

    Ich geh's alles durch.

    Spontan: Nein, da überlagert nix. Der Rahmen des Optionsfelds liegt weit neben den Knöpfen, ansonsten gibts keine Controls in der direkten Umgebung.

    Es ist vor allem aber so, dass die Auswahl einer Option sofort (!) die richtigen Ergebnisse im Listfeld insgesamt anzeigt.

    Nur die im Listfeld gesetzte Datensatz-ID ändert sich dadurch nicht direkt; nicht durch das "Markieren des ersten Eintrages im Listfeld", und nichtmal dann, wenn die alte Datensatz-ID aufgrund des geänderten Filters in der Auswahl des Listfeldes nichtmal mehr enthalten sein darf. Das ist mit einer der unschöneren Effekte der gesamten Nummer.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Andre.Heisig, 6. Oktober 2013
    #15
Thema:

Listenfeld nach Rowsource-Änderung "anklicken".

Die Seite wird geladen...
  1. Listenfeld nach Rowsource-Änderung "anklicken". - Similar Threads - Listenfeld Rowsource Änderung

  2. Listenfeld im Endlosformular

    in Microsoft Access Hilfe
    Listenfeld im Endlosformular: Hallo in die Runde! Ich stehe gerade furchtbar auf dem Schlauch und hoffe, ihr könnt mir helfen: Problemkind ist eine Art Zimmerverwaltung: - jedes Zimmer hat eine ID und ist einem Objekt...
  3. Listenfeld aus Textfeld heraus füllen

    in Microsoft Access Hilfe
    Listenfeld aus Textfeld heraus füllen: Hallo Ich möchte gern mittels einem Listenfeld auf eine Auswahl an "Texten" (Text Bausteine) die sich oft widerholen zugreifen können und diese in ein MEMO Feld im Formular einfügen. Das klappt...
  4. Kombinationsfelder und Listeneinträge

    in Microsoft Access Hilfe
    Kombinationsfelder und Listeneinträge: Hallo in die Runde, ich fange gerade an, Access zu erforschen und möchte eine Art digitalen Aktenschrank erstellen. Folgenden Workflow möchte ich erreichen: 1. im Kombinationsfeld wird ein...
  5. Daten aus Listenfeld in Textfeld übergeben

    in Microsoft Access Hilfe
    Daten aus Listenfeld in Textfeld übergeben: Hallo Ich habe ein (Hauptformular Tabelle1) und (Abfrage Tabelle2) mit Daten in dem Hauptformular habe ich eine Listenfeld mit der (Tabelle2 Abfrage) Wenn ich im Listenfeld eine Zeile anklicke...
  6. Listenfeld mit Verbundenen Zellen

    in Microsoft Excel Hilfe
    Listenfeld mit Verbundenen Zellen: Hallo Zusammen, habe mir einen Code mit Hilfe aus einem Video geschrieben. Hier soll wenn in eine Zelle in dem Bereich Stoerungen_ eine Listbox auftauchen und den Ausgewählten Störgrund einfügen....
  7. Listenfeld in Word 2016

    in Microsoft FrontPage Hilfe
    Listenfeld in Word 2016: Hallo, leider konnte ich keinen Eintrag zu meinem Problem finden: Wegen der größeren Länge von Texten kann ich nicht nur einfach eine listbox verwenden. Die listbox zur Auswahl der Alternativen...
  8. Listenfeld ändern

    in Microsoft Excel Hilfe
    Listenfeld ändern: Hallo Forum, ich benötige nochmal Eure Hilfe.
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden