| |
VB & DatenbankenListe als Parameter für Abfrage | | | Autor: Git-Git | Datum: 17.07.15 11:48 |
| Hallo!
Ich hab ein Problem. Ich soll eine Abfrage machen, für welche die Parameter aber eine Mehrfachauswahl sein soll.
Ich habe ein Formular mit Listenfeld mit Mehrfahrauswahl erzeugt.
Ich habe die Daten aus dem Listenfeld jetzt mal in einen String umgewandelt und in ein Textfeld zwischengespeichert aber wie kann ich diese Daten nun als Parameter übergeben bzw. geht es besser gleich direkt die Listendaten zu übergeben, ohne sie in einen String umzuwandeln?
Ich hatte schon mehrere Ansätze komme aber bei keinem weiter. Weiß jemand vielleicht eine Einfache lösung? | |
Re: Liste als Parameter für Abfrage | | | Autor: Manfred X | Datum: 17.07.15 15:19 |
| Hallo!
Ich vermute, zu jedem Deiner Auswahl-Items läßt sich eine
SQL-Where-Abfrage formulieren.
Diese Abfragen sind dann geeignet zu verknüpfen (AND, OR).
http://www.w3schools.com/sql/sql_and_or.asp
| |
Re: Liste als Parameter für Abfrage | | | Autor: Blackbox | Datum: 17.07.15 17:11 |
| Hallo,
ich sehe keine andere Möglichkeit als die Mehrfachauswahl aus der Liste in einen String umzusetzen.
Können aus einer Liste zB mehrere Städte ausgewählt werden und die ausgewählten Städte wären in dem Beispiel:
Berlin
München
Hannover
Stuttart
so wäre eine Abfrage in SQL etwa so:
"SELECT * FROM ReiseFieber WHERE City IN 'Berlin','München','Hannover','Stuttgart'"
Wieso Du diesen String einer einer Textbox zwischenspeichern willst, will sich mir nicht erschließen.
Den SQL oben würde Oracle akzeptieren. Andere DBEngines vertragen vielleicht das Komma als ODER-Verknüpfung nicht, dann muss anstelle dem Komme eben:
"SELECT * FROM ReiseFieber WHERE City IN 'Berlin' OR 'München' OR 'Hannover' OR 'Stuttgart'"
gesetzt werden.
Beitrag wurde zuletzt am 17.07.15 um 17:15:02 editiert. | |
Re: Liste als Parameter für Abfrage | | | Autor: Git-Git | Datum: 20.07.15 07:49 |
| Ja schon, die sache ist, dass die anzahl der Wher sachen ja variabel ist. kann man im SQL auch eine schleife rein machen? | |
Re: Liste als Parameter für Abfrage | | | Autor: Git-Git | Datum: 20.07.15 07:52 |
| Ja ok. aber die sache ist die, dass die Anzahl der Auswahlen variabel ist. kann man da irgendwie eine schleife machen? | |
Re: Liste als Parameter für Abfrage | | | Autor: Git-Git | Datum: 20.07.15 12:58 |
| Also ich hab jetzt eine Funtktion geschrieben, die die einzelnen teil ausliest, das funktioniert soweit auch.
hab im SQL jetzt so geschrieben:
.....
WHERE (
(
([Datenbank].Arg1)=fcDatenausStrg(Arg1_TF,1) Or
([Datenbank].Arg1)=fcDatenausStrg(Arg1_TF,2) Or
([Datenbank].Arg1)=fcDatenausStrg(Arg1_TF,3) Or
([Datenbank].Arg1)=fcDatenausStrg(Arg1_TF,4)
) And
(
([Datenbank].Arg2)=fcDatenausStrg(Arg2_TF,1)
) And
(
([Datenbank].Arg3)=fcDatenausStrg(Arg3_TF,1)
));
Wenn ich jetzt 4-2 Sachen für Arg1 Auswähle funktioniert es, wenn ich nur eine ausähle nicht...
Das ist meine Funktion:
Public Function fcDatenausStrg(str As String, Komma As Integer)
Dim a As String
Dim Pos As Integer
Dim Pos2 As Integer
Dim n As Integer
n = 1
Pos = InStr(1, str, ",", vbTextCompare)
If str = "" Then
fcDatenausStrg = "nix"
ElseIf Pos = 0 Then
fcDatenausStrg = "nix"
ElseIf Komma > 2 Then
Do While n < Komma - 1
Pos = InStr(Pos + 1, str, ",", vbTextCompare)
n = n + 1
If Pos = 0 Then
a = "nix"
Exit Do
End If
Loop
Pos2 = InStr(Pos + 1, str, ",", vbTextCompare)
If Pos > Pos2 Then
fcDatenausStrg = "nix"
ElseIf a = "nix" Then
fcDatenausStrg = a
Else
fcDatenausStrg = Mid(str, Pos + 1, Pos2 - Pos - 1)
End If
ElseIf Komma = 2 Then
Pos2 = InStr(Pos + 1, str, ",", vbTextCompare)
If Pos2 = 0 Then
fcDatenausStrg = Mid(str, 1, Pos - 1)
Else
fcDatenausStrg = Mid(str, Pos + 1, Pos2 - Pos - 1)
End If
ElseIf Komma = 1 Then
fcDatenausStrg = Mid(str, 1, Pos - 1)
End If
End Function
Sieht vielleicht jemand woran das liegt?
| |
Re: Liste als Parameter für Abfrage | | | Autor: Git-Git | Datum: 21.07.15 10:54 |
| Hab die Funktion etwas verbessert.
Public Function fcDatenausStrg(str As String, Komma As Integer)
Dim a As String
Dim Pos As Integer
Dim Pos2 As Integer
Dim n As Integer
n = 1
Pos = InStr(1, str, ",", vbTextCompare)
If str = "" Then
fcDatenausStrg = "nix"
ElseIf Pos = 0 Then
fcDatenausStrg = "nix"
ElseIf Komma > 1 Then
Do While n < Komma - 1
Pos = InStr(Pos + 1, str, ",", vbTextCompare)
n = n + 1
If Pos = 0 Then
a = "nix"
Exit Do
End If
Loop
Pos2 = InStr(Pos + 1, str, ",", vbTextCompare)
If Pos > Pos2 Then
fcDatenausStrg = "nix"
ElseIf a = "nix" Then
fcDatenausStrg = a
Else
fcDatenausStrg = Mid(str, Pos + 1, Pos2 - Pos - 1)
End If
ElseIf Komma = 1 Then
fcDatenausStrg = Mid(str, 1, Pos - 1)
End If
End Function | |
Re: Liste als Parameter für Abfrage | | | Autor: Git-Git | Datum: 21.07.15 11:00 |
| OK Jetzt funktioniert es, ich danke euch VIELMALS!!!!!!! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|