Rouven: Access+VBA: Exakten Wert einer unsichtbaren DropDown

Hello,

ich hab ein Problem mit einer ComboBox auf einem Access Formular. Ich würde gerne hören, dass der Fehler zwischen den Kopfhörern liegt, aber im Moment seh ich noch kein Land...
Folgendes Konstrukt:
Auf einem Formular befindet sich eine SQL-gebundene ComboBox. Die SQL-Abfrage kann als Listenwert NULL zurückliefern. HÄTTE(!) die ComboBox diesen Eintrag ausgewählt, würde mit .value auch korrekt NULL liefern.
Jetzt ist es aber so, dass die Box unter bestimmten Umständen unsichtbar wird, der Benutzer also keine Möglichkeit hat einen Eintrag auszuwählen. Ich hätte aber trotzdem gerne den Wert des ersten Listeneintrags.
Nun gilt unter Access (2002) offenbar folgendes:

  1. Man darf den ListIndex einer unsichtbaren ComboBox nicht setzen, damit kann man den Eintrag nicht aktuell machen um .value zu lesen
  2. .ItemData(0) liefert, obwohl laut Hilfe als Variant deklariert, nicht NULL sondern "" zurück. "" ist für mich aber alles andere als NULL sondern vielmehr ein weiterer realistischer Wert.

Gibt es eine schöne Lösung für das Problem? Als Workaround funktionieren

  • Abfrage parallel zur ComboBox nochmal selber machen und den ersten Wert lesen
  • Box kurz einblenden, ListIndex setzen, Value lesen, ausblenden*

MfG
Rouven

* klappt leider auf Grund einer weiteren Eigenheit von Access nicht: Ich habe KEIN(!) weiteres Control auf dem Formular, das den Fokus tragen darf. ListIndex setzen darf man nur, wenn die Combo den Fokus hat, dann darf man sie aber nicht mehr unsichtbar machen. *seufz*

--
-------------------
Inter Arma Enim Silent Leges  --  Cicero
  1. Jetzt ist es aber so, dass die Box unter bestimmten Umständen unsichtbar wird, der Benutzer also keine Möglichkeit hat einen Eintrag auszuwählen. Ich hätte aber trotzdem gerne den Wert des ersten Listeneintrags.

    Ich würde mir mal übergelegen - um colch esoterische Probleme mit der "Datenbindung" von MS Access zu umgehen - ein "Speichern-Button" einzuführen. Wird dieses betätigt analysiert ein wenig Code die Abfrage und sendet "korrektes" Access SQL im gewünschten Sinne.

    Natürlich hat die "Datenbindung" gewisse Grenzen.

    Na, gut, das Wrkaround liegt auf der Hand und wurde von Dir bereits erwähnt.

    Ich selbst hatte mal das "Vergnügen" mit ADO/DAO und MS SQL Server zu arbeiten, die korrekte Lösung bestand oft im Umgehen bestimmter angebotener Features, also letztlich im trockenen Umgehen derselben. ("Datensteuerelement" bspw. - würg!)

    1. Hello,

      na ja, in diesem Fall ist die Maske so wertlos, dass sie das zusätzliche Statement nicht Wert ist. Es geht lediglich um eine Statistik-Maske. Sie besteht aus 4 Labels, in die errechnete Zahlen eingetragen werden, und einer DropDown, die ggf. durch ein 5. Label ersetzt wird, nämlich genau in dem Fall, dass die DropDown nur einen einzigen Eintrag enthalten würde. Enthält sie hingegen mehr als einen, dann dient sie als Auswahlquelle für die Berechnung der anderen Felder. Aber ich kenne meine Pappenheimer - wenn da eine DropDown ist, die nur einen einzelnen Wert beinhaltet, dann kommt als erstes die Frage: Warum ist da eine Auswahl?

      MfG
      Rouven

      --
      -------------------
      Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
      1. Es wäre eine Idee gewesen MS Acces nur als Datenbasis zu nutzen und mithilfe von VS die gesamten Funktionalitäten (a.k.a. Features) von MS Acces zu umgehen um u.a. sauber formulierten Datenzugriffscode zu haben.