loki99
Goto Top

SQL VBA - Gib alles zurück in W HERE Klausel

Hallo liebe Administrator Mitglieder.

Ich habe folgendes Problem, bei dem Ihr mir bestimmt weiterhelfen könnt.

Ich habe in Excel mehrer Dropdownfelder erzeugt, in welchen variable Werte und immer der Wert "Alles" steht. Nun suche ich eine SQL Anweisung, welche mir alle Werte zurüchgibt, wenn alles ausgewählt wird. Zur genaueren Erleuterung ein kurzes Beispiel: ich habe ein Dropdownfeld Autos mit den Werten "Alles" ," BMW" ,"Audi" und ein Dropdownfeld Fahrer mit den Werten "Alles" ," Müller" "Schimdt". Mun sollen alle Kombiantionen möglich sein. z.. Alle Autos Fahrer Müller oder Alle Autos Alle Fahrer.

Gibt es eine Möglichkeit Wildcards nach der Where Bedingung einzusetzen?


Meine Idee ist:
.Open "SELECT * FROM Tabelle WHERE Auto = ComboBoxAutos AND Fahrer = ComboBox Fahrer"

Dies funktioniert auch, wenn ein bestimtes Auto und Farher ausgewählt ist.

Über Anregungen und Lösungsvorschläge würde ich mich sehr freuen.
Vielen Dank für Eure Bemühungen schon einamal in Vorraus.

Content-Key: 143708

Url: https://administrator.de/contentid/143708

Printed on: April 26, 2024 at 16:04 o'clock

Member: Edi.Pfisterer
Edi.Pfisterer May 28, 2010 at 07:35:12 (UTC)
Goto Top
Hallo!
Ich habe von Excel oder VBA keine Ahnung, aber von SQL...

Die richtige Syntax muesste Lauten:

SQL = "SELECT * FROM Tabelle WHERE ((Auto = ComboBoxAutos) AND (Fahrer = ComboBox Fahrer))"

Wildcard in SQL ist leider nicht der * sondern %

da hast du (aber: siehe meine 2. Zeile...) nun 2 Möglichkeiten:
a) entweder gelingt es Dir, bei Alles als Value das zeichen % zu hinterlegen
b) eine Umformung (die in etwa so aussehen könnte - aber wie gesagt: ich von VBA nix Ahnung...)

Autoauswahl = ComboBoxAutos
Fahrerauswahl = ComboBox Fahrer
if Autoauswahl = "Alles" then Autoauswahl = "%"  
if Fahrerauswahl = "Alles" then Fahrerauswahl = "%"  
SQL = "SELECT * FROM Tabelle WHERE ((Auto LIKE Autoauswahl) AND (Fahrer LIKE Fahrerauswahl))"  
Hoffe, zumindest ein bisschen geholfen zu haben...
(falls sich sonst niemand finden sollte, der mit VBA mehr am Hut hat als ich...)

lg
Edi
Member: BigWim
BigWim May 28, 2010 at 07:45:50 (UTC)
Goto Top
Mit VBA kann ich auch nicht dienen, aber mit ein wenig Verständnis von Scripten. Ich würde ohne von der VBA-Syntax Ahnung zu haben so schreiben:
if ComboBoxAutos = "Alles" and ComBoxFahrer = "Alles" then  
    REM holt meines Wissens alle Datensätze
    SQL = "SELECT * FROM Tabelle   
elseif if ComboBoxAutos = "Alles" and ComBoxFahrer <> "Alles" then  
    REM alle Datensätze mit bestimmten Fahrer
    SQL = "SELECT * FROM Tabelle WHERE (Fahrer = ComboBoxFahrer)"  
elseif if ComboBoxAutos <> "Alles" and ComBoxFahrer = "Alles" then  
    REM alle Datensätze mit bestimmtes Auto
    SQL = "SELECT * FROM Tabelle WHERE (Auto = ComboBoxAutos)"  
else
    REM alle Datensätze mit bestimmtes Auto & bestimmten Fahrer
    SQL = "SELECT * FROM Tabelle WHERE ((Auto = ComboBoxAutos) AND (Fahrer = ComboBox Fahrer))"  
endif
Markus


[Edit Bibei] Codeformatierung [/Edit]
Member: loki99
loki99 May 28, 2010 at 10:41:36 (UTC)
Goto Top
Danke für die schnellen Antworten. In der Zwischenzeit habe ich bemerkt, dass das Problem "erst einmal" wo anderst liegt. Die Datenbank stuktur ist bei mir gegeben und kann nicht geändert werde. Aber nun zum Problem. Die Daten liegen nicht in einem Datensatz sonder über mehrere verteilt. Ich gehe einmal vom Autobeispiel weg.

Ich habe eine Tabelle mit 3 Spalten (Projekt, Verknüpfung , Kunde).

Projekt Verknüpfung Kunde
P1 hatKunde bmw
P1 hatMitarbeiter Müller
P2 hatKunde audi
P2 hatMitarbeiter Müller


Benötige eine Anweisung wie: Zeig mir alle Projekte, wo der Kunde BMW ist und der Mitarbeiter Müller heißt. Hier Ergebnis P1. Als muss über mehrere Datensätze verglichern werden.

Wünsche allen noch einen schönen Tag und herzlichen Dank für die Unterstützung.