Formular anhand mehrerer Kombifelder filtern

15/02/2010 - 16:40 von Volker Neurath | Report spam
Hallo Jungs,

folgendes Problem:

ich habe ein Excel-Sheet 1:1 in eine Access-Tabelle überführt, die ich
jetzt über ein Endlos-forular darstellen lasse

Nun möchte ich über Kombifelder (insgesamt 13) im Formularkopf die
Anzeige im Formular einschrànken, und zwar àhnlich dem "Autofilter" von
Excel. Datenherkunft der Kombifelder ist die Ursprungstabelle, d.h. die
Felder enthalten nur Werte, die in der Tabelle auch existieren.

Gewünschte Funktion also:

wàhle ich aus einem der ungebundenen Kombifelder einen Wert, soll das
Formular nur noch DS anzeigen, die diesen Wert enthalten.
Wàhle ich nun aus einem oder mehreren weiteren Kombifeldern, dann sollen
diese Werte als Einschrànkung *hinzugefügt* werden.

Bis hier her ist das kein Problem für mich.
Aber:
In alle Kombifelder habe ich einen Wert "(Alle)" eingefügt.
Wird dieser Wert gewàhlt, soll dieser Einzelfilter aufgehoben werden.[1]

Vereinfachtes Beispiel:

Ich wàhle aus den Kombiboxen cboVBName, cboCreationDate und cboValid
Werte aus, z.B. Hans Drucker, 01.02.2009, valid.
Das Formular soll nun alle DS anzeigen, auf die *alle* Einschrànkungen
zutreffen. Das ist, wie gesagt, kein Problem.
Aber:
Wàhle ich jetzt z.B. in cboCreationDate "(ALLE)" - dann soll mir das
form alle DS anzeigen, auf die *die verbleibenden* Einschrànkungen
zutreffen, d.h. die Einschrànkung auf "01.02.2009" soll aufgehoben
werden, das Form zeigt jetzt alle Daten zu "Hans Drucker" mit dem Status
"valid".

Und für genau diesen punkt - das Entfernen einer Einschrànkung aus dem
Gesamtfilter-String - fehlt mir die "zündende Idee"

Any Ideas?

Ich bin auch für deutlich bessere Ideen zu haben, wenn nur die
Filterbedienung möglichst nah an Excel bleibt.

Hintergrund:
das ganze ist eine Übersicht für Außendienstler. Das entsprechende
Excel-Sheet ist knapp 14MB groß und hat einen entscheidenden Nachteil:
sobald ein kollege das geöffnet hat, ist es für alle anderen nur noch
"schreibgeschützt" zu öffnen.
Daher die Übertragung nach Access, damit mehrere VB und Innendienstler
gleichzeitig mit den Daten arbeiten können (d.h. Eintragungen
vornehmen), ohne dass jemand, der die Daten öffnet und dann zur post
fàhrt, alle anderen für die Dauer seiner Abwesenheit blockiert (vor
einer Woche passiert).

Volker

[1] Aus den Kombifeldern kann jeweils immer nur genau ein Wert gewàhlt
werden, damit das ganze nicht noch komplizierter wird...

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Karl Donaubauer
15/02/2010 - 16:49 | Warnen spam
Volker Neurath wrote:
...
ich habe ein Excel-Sheet 1:1 in eine Access-Tabelle überführt, die ich
jetzt über ein Endlos-forular darstellen lasse



Oijeh. ;-)

Nun möchte ich über Kombifelder (insgesamt 13) im Formularkopf die
Anzeige im Formular einschrànken, und zwar àhnlich dem "Autofilter"
von Excel. Datenherkunft der Kombifelder ist die Ursprungstabelle,
d.h. die Felder enthalten nur Werte, die in der Tabelle auch
existieren.
Gewünschte Funktion also:

wàhle ich aus einem der ungebundenen Kombifelder einen Wert, soll das
Formular nur noch DS anzeigen, die diesen Wert enthalten.
Wàhle ich nun aus einem oder mehreren weiteren Kombifeldern, dann
sollen diese Werte als Einschrànkung *hinzugefügt* werden.

Bis hier her ist das kein Problem für mich.
Aber:
In alle Kombifelder habe ich einen Wert "(Alle)" eingefügt.
Wird dieser Wert gewàhlt, soll dieser Einzelfilter aufgehoben
werden.[1]
Vereinfachtes Beispiel:

Ich wàhle aus den Kombiboxen cboVBName, cboCreationDate und cboValid
Werte aus, z.B. Hans Drucker, 01.02.2009, valid.
Das Formular soll nun alle DS anzeigen, auf die *alle* Einschrànkungen
zutreffen. Das ist, wie gesagt, kein Problem.



Was heißt "kein Problem"?
Welche Methode verwendest, um das umzusetzen?

Aber:
Wàhle ich jetzt z.B. in cboCreationDate "(ALLE)" - dann soll mir das
form alle DS anzeigen, auf die *die verbleibenden* Einschrànkungen
zutreffen, d.h. die Einschrànkung auf "01.02.2009" soll aufgehoben
werden, das Form zeigt jetzt alle Daten zu "Hans Drucker" mit dem
Status "valid".

Und für genau diesen punkt - das Entfernen einer Einschrànkung aus dem
Gesamtfilter-String - fehlt mir die "zündende Idee"
...



Die meisten derartigen Suchmasken mit vielen Kriterien und
Optionen gehen per VBA durch die Maske und setzen dabei den
SQL-String zusammen, der dann als Datenherkunft verwendet wird.

Wenn du das auch so machst, ist es kein Problem, zu prüfen, ob
in einem Kombi "alle" ausgewàhlt ist, und es dementsprechend
im SQL-String einfach wegzulassen.

Es ginge auch mit einer entsprechend vorformulierten Abfrage,
aber der VBA-Weg ist üblicher. Beispiele dafür solltest du bei
google jede Menge finden.
Ansonsten lege deine "kein Problem"-Karten auf den Tisch. ;-)

Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 27./28.2. + 20./21.3.2010

Ähnliche fragen