Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
String Variable in SQL Abfrage
zurück: Abfrage einer mysql-Datenbank mit ENCODE-Verschlüsselung weiter: Datensatz löschen - Fehler 1017 - Datensatz ist gelöscht Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Jul 2005, 13:34
Rufname:

String Variable in SQL Abfrage - String Variable in SQL Abfrage

Nach oben
       

Hallo alle zusammen!!!

Ich habe in einem Formular ein Listenfeld mit Mehrfachauswahl (option Erweitert ist aktiviert) erstellt. Danach lese ich die selektierten Felder über folgenden code in eine Variable. Der Code wird durch klicken eines Buttons aktiviert:
Code:
    Dim i As Variant
    Dim strAusgabe As String

    strAusgabe = ""
    For Each i In Me!Name_Deines_Listenfeldes.ItemsSelected
        If Not strAusgabe = "" Then strAusgabe = strAusgabe & ","
        strAusgabe = strAusgabe & Me!Name_Deines_Listenfeldes.Column(0, i)
    Next i

Mein Problem ist nun, dass ich die Variable (strAusgabe) gerne in eine meiner Abfragen integrieren würde und ich keinen Plan habe wie ich das anstellen soll.
Zitat:
Du kannst eine Variable nicht direkt in einer Abfrage verwenden. Erzeuge stattdessen in einem Standardmodul eine Funktion, die nichts anderes tut, als den Wert der Variablen zurückzugeben. z.B.
Code:
Public Function fctSendVar() ' hier evtl. noch den Typ angeben
    fctSendVar = DeineGlobaleVariable
End Function

In der Abfrage schreibst du dann statt der Variablen den Namen der Funktion inkl. Klammern.

Hab dieses dazu schon mal gefunden und auch ausprobiert funktioniert nur nicht.
Für Hilfe wäre ich euch sehr dankbar!!!
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 09:20
Rufname:
Wohnort: Berlin


AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       

Was willst Du denn genau mit der Abfrage anstellen? Ein Recodset kannst Du z.B. so erstellen:
Code:
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM [DeineAbfrage] " & _
                                     "WHERE Feld In (" & strAusgabe & ")")

mfg Rita
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 10:11
Rufname:

recordset... - recordset...

Nach oben
       

Hallo Rita erstmal danke für Deine Antwort!
Was ich damit bezwecken will ist eigentlich ganz einfach. Ich habe eine bereits bestehende Abfrage, die ich mal Standardabfrage nennen will. Nun will ich dem User dieser Datenbank die Möglichkeit geben, über ein Formular, Kriterien für diese Abfrage zu erstellen; also z.B. über Kombiboxen oder auch Listfeldern mit Mehrfachauswahl. Auf dem Formular befindet sich dann ein Button nachdem er das Ergebnis der Abfrage sehen kann. So kann die Abfrage schnell auf die gewünschten Informationen angepasst werden.

Mal angenommen ich würde das jetzt über einen recordset lösen wie Du es vorgeschlagen hast. Wie verarbeite ich den dann weiter z.B. in eine Tabelle usw. Muss ehrlich sagen, dass ich nicht wirklich fit bin in vba! kann ich nicht einfach auch nur den SQL Code mit dem Kriterium ausführen in der Art execute.recordset?

Schon mal vielen Dank und Gruß
Latscho
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 10:31
Rufname:
Wohnort: Berlin

AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       

In diesem Fall würde ich nicht die Abfrage selbst anzeigen, sondern ein Formular(z.B. in der Datenblattansicht). Dort kannst Du entsprechend die angezeigten Datensätze einschränken:
Code:
    Dim sql As String

    sql = "[Feld] In (" & strAusgabe & ")"
    DoCmd.OpenForm "DeinFormular", acFormDS, , sql

mfg Rita
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 10:47
Rufname:


!? - !?

Nach oben
       

Ich hab irgendwie das Gefühl wir reden aneinander vorbei Wink.
Ich habe ja bereits ein Formular mit einem Listenfeld mit Mehrfachauswahl und z.B. eine Kombibox wo ich Kriterien für die Abfrage eingeben kann. Bei dem Kombifeld übergebe ich die eingabe an die Abfrage wie folgt:
Code:
SELECT *
FROM ...
WHERE Kunde=[Forms]![frm_PPTA]![Kunde]

Das geht aber ja bekanntlich nicht bei einem Listenfeld mit Mehrfachauswahl. Deshalb hab ich mir erstmal die selektierten Felder des Listenfeldes in einen String "StrAusgabe" eingelesen. Die Frage ist nur wie kann ich diesen String nun als Kriterium in die Aktionsabfrage einbauen.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 10:59
Rufname:
Wohnort: Berlin

AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       

Das geht mit einer Variablen nicht, da die Abfrage ja außerhalb des VBA-Programms existiert(oder anders ausgedrückt, Deine Variable ist nur während der Abarbeitung Deiner Prozedur gültig. ) Das heißt, die ausgewählten Einschränkungen musst Du auch in VBA auswerten.

mfg Rita
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 11:41
Rufname:

ok - ok

Nach oben
       

Ok und genau da liegt dann bei mir das Prob. Wie kann ich mein SQL statement nun in der betreffenden Prozedur ausfürhren lassen, damit ich die Variable benutzen kann bzw. geht das überhaupt. Wie gesagt ich hab nicht wirklich Ahnung von VBA! Ich dachte nach deinem ersten Vorschlag, dass man das Ergebnis der Abfrage nicht in einem recordset speichert sonder einfach auch über eine solche Anweisung die Aktionsfrage auführen lassen kann. Gibt es da nicht einen "Execute" Befehl anstatt "Set"; ich mein ich hätte da mal sowas gelesen.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 12:01
Rufname:
Wohnort: Berlin

AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       

Ich habe doch schon geschrieben: Nicht die Abfrage anzeigen, sondern ein Formular in Datenblattansicht. Das sieht dann genau so aus, wie die Abfrage. Und beim Öffnen des Formulars kannst Du die Einschränkungen angeben.

mfg Rita
Willi Wipp
Moderator


Verfasst am:
05. Jul 2005, 12:40
Rufname:
Wohnort: Raum Wiesbaden

Re: String Variable in SQL Abfrage - Re: String Variable in SQL Abfrage

Nach oben
       

Hi Ihr Zwei,

leider muss ich Dir wiedersprechen rita2008 Wink
Man muss hierfuer eine globale (Public) Variable in einem Modul (nicht Berichts- oder Formular-Modul) anlegen.
Das Modul speichert man z.B. als modFnsGetListe.
In diesem Modul legt man auch eine Globale (Public) Funktion FnsGetListe an
Code:
Option Compare Database
Option Explicit

Public gsListe  As String

Public Function FnsGetListe() As String
    FnsGetListe$ = gsListe$
End Function
Siehe auch Auf Globale Variablen/Eigenschaften zugreifen.

Die globale Variable gsListe fuellst Du wieder z.B. ueber Deine Befehlsschaltflaeche.
Man kann aber auch ein Ereignis wie z.B. Nach Aktualisierung (AfterUpdate) verwenden
Code:
Private Sub DeinListenfeld_AfterUpdate()
    Dim vItem   As Variant
   
    gsListe$ = ""
    For Each vItem In Me!DeinListenfeld.ItemsSelected
        gsListe$ = gsListe$ & ", '" & Me!DeinListenfeld.ItemData(vItem) & "'"
    Next vItem
    If gsListe$ <> "" Then gsListe$ = Mid$(gsListe$, 3)
'    Debug.Print gsListe$ ' Nur zum Testen
End Sub

Bei der Abfrage muss man nun einen Trick verwenden, da meines Wissens das Folgende nicht funktioniert
Code:
...
WHERE DeinText In (FnsGetListe())
Aber mann kann folgendes machen
Code:
...
WHERE FnsGetListe() Like '*' & [DeinText] & '*'
AND   Nz([DeinText],"")<>""
Die zweite Klausel ist notwendig um DS mit leeren Eintraege und Null-Eintraegen abzufangen.
_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 13:36
Rufname:

AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       

Hallo Willi genau in der Art würde ich es gerne machen. Hab gerade auch mal deinen Vorschlag ausprobiert und leider tut sich da gar nichts bei der Abfrage. Er zeigt mir keine Ergebnisse an Sad. Hab natürlich alles an meine Datenbank angepasst. Mit [DeinText] meinst Du ja bestimmt den Feldnamen der Abfrage wonach ich matchen will.

Wie gesagt es funktioniert wenn ich lediglich eine Auswahl treffe per Kombifeld und diesen Code verwende:
Code:
SELECT *
FROM ...
WHERE [tbl_Belastungen].[Kunde])=[Forms]![frm_PPTA]![Kunde]

Füge ich Deinen jedoch hinzu passiert nichts:
Code:
.....
WHERE (FnsGetListe() Like '*' & [DeinText] & '*'
AND   Nz([DeinText],"")<>"")
AND   [tbl_Belastungen].[Kunde]=[Forms]![frm_PPTA]![Kunde]

Hmm irgendwie muss es doch gehen oder übersehe ich da noch was!?
Willi Wipp
Moderator


Verfasst am:
05. Jul 2005, 13:58
Rufname:
Wohnort: Raum Wiesbaden

Re: String Variable in SQL Abfrage (II) - Re: String Variable in SQL Abfrage (II)

Nach oben
       

Hi Latscho,

hast Du mal die Zeile
Code:
    Debug.Print gsListe$ ' Nur zum Testen
aktiviert?
Vielleicht hast Du Ja die falsche Spalte erwischt?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Latscho
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2005, 14:47
Rufname:

;-) - ;-)

Nach oben
       

Latscho am 05. Jul 2005 um 14:31 hat folgendes geschrieben:
ja habe ich bereits gemacht passiert ebenfalls nichts. Was sollte dann denn passieren Smile !?
Ich habe aber auch irgendwie das Gefühl das der String gar nicht befüllt wird. Wie müssen eigentlich die Einstellungen für das Listenfeld aussehen? Oder gibt es sogar bestimmte Anforderungen an die Daten, dass es sich z.B. nur um den Primärschlüssel bei der Datenherkunft handeln muss.
Bei mir wird das Listenfeld über eine Abfrage auf eine Tabelle gefüllt, wobei diese nicht den Primärschlüssel darstellen.
Ich hoffe ich bekomm das bald zum laufen verzweifle hier schon bald. Hab alle möglichen Tricks schon probiert, wobei mir die Vorgehensweise einleuchtend erscheint und völlig i.O. ist.
Danke Willi und Rita jedenfalls schon mal soweit ich hoffe ihr könnt mir auch noch weiter über die Zielinie helfen Smile.

Ok Willi hast Recht gehabt. Hab mir nochmal die Datenherkunft meines Listenfeldes genauer angeschaut!!!
Vor lauter Bäumen sieht man manchmal den Wald nicht mehr. Als gebunde Spalte war dort der Primärschlüssel ausgewählt (wahrscheinlich weil ich es mit dem Assistenten gemacht hatte) und nicht die 2. betreffende Spalte !!! Nun klappt alles wie ich es mir vorgestellt habe!
So vielen vielen Dank für alle Eure Beiträge! Ohne Euch hätte ich es nicht geschafft Smile! Macht weiter so und erfreut weitere User dieses Board mit Euren nützlichen Beiträgen !

Gruß

Latscho
BLBGünter
Einsteiger


Verfasst am:
02. Mai 2007, 10:25
Rufname:


AW: String Variable in SQL Abfrage - AW: String Variable in SQL Abfrage

Nach oben
       Version: Office 2003

BLBGünter am 30. Apr 2007 um 09:39 hat folgendes geschrieben:
Morgen,

habe nach langem Suchen wohl die Lösung für mein Problem in diesem Thema gefunden. Leider funktioniert es nicht ganz…. Crying or Very sad

Habe folgendes globale Modul erstellt:
Code:
Option Compare Database
Option Explicit

Public Auswahl As String

Public Function FnsGetListe() As String
    FnsGetListe$ = Auswahl
End Function
Dazu gibt es noch die Funktion für meine Mehrfachauswahl:
Code:
Private Sub Befehl5_Click()
    Dim i As Variant
    Dim Auswahl As String
   
    ' Prüfen, ob Veranstaltung in der Liste Veranstaltung ausgewählt wurde.
    ' Bei Mehrfachauswahl geht das über die Anzahl der selektierten Einträge.
    If Me!listGeldstueckelung.ItemsSelected.Count = 0 Then
        MsgBox "Sie müssen erste einen Artikel aus der Liste " & _
               "'Geldstückelung' auswählen", vbInformation, Me.Caption
        Exit Sub
    End If
    ' Schleife über alle selektieren Einträge des Listenfeldes
    Auswahl = ""
    For Each i In Me!listGeldstueckelung.ItemsSelected
        If (IsNull(Auswahl)) Then
            Auswahl = Me!listGeldstueckelung.Column(0, i)
          Else
            Auswahl = Auswahl & " " & Me!listGeldstueckelung.Column(0, i)
        End If
    Next i
    If Auswahl <> "" Then Auswahl = Mid$(Auswahl, 2)
    Debug.Print Auswahl
    Screen.ActiveForm.Refresh
End Sub
Der SQL-Code lautet auszugsweise:
Code:
WHERE  (tbl_Funktion_Zeitraum.IDFunktion=1
OR      tbl_Funktion_Zeitraum.IDFunktion=6)
AND    (tbl_Veranstaltung_Zeitraum.Abgerechnet=-1
AND     FnsGetListe() Like '*' & tbl_Gage.IDVeranstZeitraum & '*'
AND     Nz((tbl_Gage.IDVeranstZeitraum),"")<>"");
Wenn ich nunmehr in meinem Listfeld eine Auswahl (oder auch mehrere) treffe, dann wird das richtige Ergebnis zurückgegeben, allerdings habe ich kein Ergebnis in der Abfrage. Ich denke, dass ich ein Fehler im Modul und/oder im SQL-Code habe.
Nur wo??
Es wäre sehr nett, wenn mir jemand auf die Sprünge helfen könnte.

Vielen Dank im voraus!!

Gruß

Günter

Morgen,

hat sich erledigt.

Wenn man den Vorschlag von Willi Wipp genau übernimmt, dann funktioniert es natürlich!

Gruß

Günter
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage verlinken 4 dfo 1326 10. Feb 2004, 22:17
Willi Wipp Abfrage verlinken
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht 1 caro456 1832 27. Jan 2004, 20:03
Willi Wipp Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Access abfrage nach 2 parametern 1 Weedy 3466 13. Jan 2004, 00:21
reke Access abfrage nach 2 parametern
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, ob eine Abfrage ein Ergebnis hat 3 Esdo 3934 09. Dez 2003, 15:53
Fedaykin Abfrage, ob eine Abfrage ein Ergebnis hat
Keine neuen Beiträge Access Tabellen & Abfragen: Access 97 Abfrage Duplikate 9 gast 2419 02. Dez 2003, 14:39
Kay Access 97 Abfrage Duplikate
Keine neuen Beiträge Access Tabellen & Abfragen: Hilfe beim Tabellen erstellen in Access - SQL 1 Tomy 6703 27. Nov 2003, 15:53
Caladan Hilfe beim Tabellen erstellen in Access - SQL
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfrage mit VBA 3 daMike 1729 26. Nov 2003, 17:58
daMike SQL Abfrage mit VBA
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit Spalte zur Durchnummerierung 2 Hanno 921 20. Nov 2003, 12:18
Hanno Abfrage mit Spalte zur Durchnummerierung
Keine neuen Beiträge Access Tabellen & Abfragen: SQL db Tabellen in Access als Eingabemaske inkludieren 1 Werner 1827 18. Nov 2003, 16:48
BaSti SQL db Tabellen in Access als Eingabemaske inkludieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe