Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access2000 VBA-Auswahlabfrage

Empfohlene Antworten

Veröffentlicht

Hi, Leute!

Ich habe die unpraktische Erfahrung gemacht, daß unter VBA nur Aktionsabfragen als String generiert und dann mit 'docmd.runsql' ausgeführt werden können.

Gibt es eine Möglichkeit, "dynamische" Auswahlabfragen mit Hilfe der VBA zu erzeugen.

"Dynamisch" heißt hier: Ich weiß im Vorwege nicht, welche Felder ich in der Abfrage berücksichtigen möchte.

Oder kann man VBA irgenwie austricksen (z.B. eine Aktualisierung vortäuschen (setze in FeldX den Wert aus FeldX) und dann mit einem Recordset durch die Datensätze wandern)?

Hi!

Kannst Du ein konkretes Beispiel nennen, weil ich kann mir im Augenblick nicht genau vorstellen, was Du machen möchtest.

Gruss

  • Autor

Hi, Mercutio!

Konkretes Beispiel:

Ich habe eine Tabelle mit x "relevanten" Feldern (x>9 möglich!).

"Relevant" hier: In diesen Feldern muß etwas stehen.

(Anm.: Aus gegebenen Gründen ist es nicht möglich, in der Tabelle 'Eingabe erforderlich' auf 'Ja' zu stellen!)

Ich möchte nun wissen, in jeweils wievielen Datensätzen welches Feld nicht gefüllt ist.

Problem: Access erlaubt nur max. 9 Oder-Verknüpfungen! Sonst könnte ich es auch innerhalb einer festen Abfrage lösen: IstNull(Feld1) oder IstNull(Feld2) oder ... oder IstNull(Feld9)

Ergebnis: Ich hätte alle Datensätze in denen mind. ein relevantes Feld nicht ausgefüllt ist.

Bis jetzt habe ich mir bisher folgendermaßen beholfen:

Ich habe für jedes relevante Feld zwei(!) Abfragen.

1) Filtere nach Datensätzen: IstNull(ein_relevantes_Feld)

2) Anzahl der Datensätze aus vorheriger Abfrage

(Access sagt sinngemäß "Ist mir zu kompliziert!", wenn ich beides in eine Abfrage packe!!)

Per 'docmd.runsql...<Anfügeabfrage>' schreibe ich dann in eine Tabelle den Feldnamen (bzw. eine anwenderfreundliche Bezeichnung) und die ermittelte Anzahl.

Unschön:

Ich muß für jedes relevate Feld zwei Auswahlabfragen generieren, die ich dann in VBA mit 'docmd.openquery' öffne.

Dieses Vorgehen überfüllt das Datenbankfenster (und auch das Ausblenden des Objektes ist keine dauerhafte Lösung)!

Ziel:

Ich möchte im VBA-Code nur noch die Namen der relevanten Felder reinschreiben, die Auswahlabfrage wird generiert über einen SQL-String und ausgeführt.

Ich begebe mich einmal auf die Suche nach folgender Vorgehensweise:

a) 'CreateDatabaseQuery' (o.ä.) mit folgendem SQL-Inhalt unter folgendem Namen.

B) Ausführen

c) Löschen

d) Nächstes relevantes Feld

e) Vorhanden? Ja: a / Nein: Ende

Hat jemand schon einmal etwas ähnliches aufgebaut?

  • 1 Monat später...
  • Autor

Hi, Leute!

Ich habe in der Zwischenzeit herausgefunden, daß ich mit

.OpenRecordset("Abfragename")

weiterkomme:

Man kann statt des Abfragenamens auch einen (zusammengebauten) SQL-String übergeben.

Vielen Dank an alle!!!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.