sql-String an Variable übergeben?

  • VB6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Gast.

    sql-String an Variable übergeben?

    Hallo,
    habe folgendes Problem:
    Ich möchte einen SQL-String an die Variable "Abfrage" übergeben. Mit DB.OpenRecordset(Abfrage) gibt es eine Fehlermeldung. Wenn ich meinen String per Hand anstatt der Variablen "Abfrage" eintrage funktioniert es. Wie kann ich dieses Problem lösen?

    Gruß
    Rainer
    Hast du die Variable "Abfrage" denn auch richtig deklariert?

    Also:
    Dim Abfrage As String

    Vielleicht ist das schon der Fehler.

    Ansonsten poste mal die Fehlermeldung.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo,
    die Variable ist als String definiert.
    So sieht mein String z.B. aus:
    ("Select * from Firma where F_Sart like " & Chr(39) & "GHS*" & Chr(39) & " And F_OSA Like " & Chr(39) & "2*" & Chr(39) & "Or F_Sart like " & Chr(39) & "GS*" & Chr(39) & " And F_OSA Like " & Chr(39) & "2*" & Chr(39))

    Wenn ich ihn genau so wie er hier steht hinter den openrecordset- Befehl kopiere funktioniert es, wenn ich ihn als Variable übergebe funlktioniert es nicht.
    Fehlermeldung lautet: Das Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage nicht.
    Kannst Du damit etwas anfangen?
    Gruß Rainer
    Hi,

    du kannst die Chr(39) - Hochkommas durch richtige Hochkommas ersetzen, dann wird dein SQL übersichtlicher:

    Select * from Firma where F_Sart like " & Chr(39) & "GHS*" & Chr(39) & " And F_OSA Like " & Chr(39) & "2*" & Chr(39) & "Or F_Sart like " & Chr(39) & "GS*" & Chr(39) & " And F_OSA Like " & Chr(39) & "2*" & Chr(39)


    wird zu

    Abfrage = "Select * from Firma where F_Sart like 'GHS*' And F_OSA Like '2*' Or F_Sart like 'GS*' And F_OSA Like '2*'"



    a) du solltest die AND/OR Sachen in Klammern setzen um nicht durcheinanderzukommen, welche Sachen mit OR verknüpft sind und welche mit AND

    b) gib immer statt * nur die Feldnamen an, die du wirklich haben willst, das spart Performance, weil die Datenbank-Engine nicht erst die Feldnamen ermitteln muß

    c) evt mußt du für das .OpenRecordset angeben, daß es sich um eine Abfrage (adCMDText) und um keine Tabelle (adCMDTable) handelt. Aber funktionieren sollte es dennoch. (kann mir nicht vorstellen, daß es daran liegt, da die Variable nur ein Pointer auf den Wert ist.

    Gruß, Jenny