Tobi: DB Abfrage

Hallo,

ich weiss nicht mehr weiter...Warum funktioniert das nicht:

DBRecordSet.Source = "SELECT *  FROM Table1 WHERE ID_NUMBER LIKE '%" + Replace(DBRecordSet__VarID, "'", "''") + "%' AND GROUP LIKE '%" + Replace(DBRecordSet__VarGroup, "'", "''") + "%'  ORDER BY ID_NUMBER ASC"

Den Variablen habe ich beiden vorher einen Default-Wert zugeordnet, kommen sonst aus einem HTML-Form:

<%
Dim DBRecordSet__VarID
DBRecordSet__VarID = "1"
if (Request.QueryString("id_number") <> "") then DBRecordSet__VarID = Request.QueryString("id_number")
%>

Kann jemand helfen? FEhlermeldung sagt, dass die SELECT Abfrage nicht stimmt....

Gruss und Danke,

Tobi

  1. Hallo Tobi,

    GROUP ist ein reserviertes Wort in SQL und sollte nie als Spaltenname dienen! Und in einer SQL-Abfrage müsste, wenn die Spalte schon so heissen muss. ... [GROUP] LIKE ... stehen.

    Hoffe, das wars schon.

    Grüsse
    Uwe

    1. Hallo Uwe,

      perfekt! Mit [GROUP] funktioniert es!

      Danke!

      Tobi

      Hallo Tobi,

      GROUP ist ein reserviertes Wort in SQL und sollte nie als Spaltenname dienen! Und in einer SQL-Abfrage müsste, wenn die Spalte schon so heissen muss. ... [GROUP] LIKE ... stehen.

      Hoffe, das wars schon.

      Grüsse
      Uwe

  2. Hallo miteinander,

    hast du dir das SQL mal vor der Ausführung anzeigen lassen -> mit Response.Write .. ???

    DBRecordSet.Source = "SELECT *  FROM Table1 WHERE ID_NUMBER LIKE '%" + Replace(DBRecordSet__VarID, "'", "''") + "%' AND GROUP LIKE '%" + Replace(DBRecordSet__VarGroup, "'", "''") + "%'  ORDER BY ID_NUMBER ASC"

    außerdem scheint dein DB Design suboptimal zu sein: id_number mit LIKE '%...%' abfragen ...
    außerdem, was machen die vielen Hochkommas da drin...

    Kann jemand helfen? FEhlermeldung sagt, dass die SELECT Abfrage nicht stimmt....

    ... kann viele Ursachen haben:
    [ ] Syntax error (near .... )
    [ ] Keyword here not possible
    [ ] Type Mismatch
    [ ] Arguments are of wrong type ...

    etwas spezifischer wäre gut zwecks Hilfe.

    Viele Grüße aus dem Süden, Frank

    1. Hallo,

      Esrtmal, sorry, bin ein ASP-Newbie...der Code ist generiert von Ultradev (mit den Hochkomamta). Ja, die Abfrage ist nicht optimal, sollte aber auch nur ein Beispiel sein...Ich wollte den Ultradev Code (die SELECT ABFRAGE) nur um eine weitere Variable erweitern, d.h. der Code

      DBRecordSet.Source = "SELECT *  FROM Table1 WHERE ID_NUMBER LIKE '%" + Replace(DBRecordSet__VarID, "'", "''") + "%' ORDER BY ID_NUMBER ASC"

      stammt von Ultradev und funzt, habe versucht die SQL Abfrage zu erweitern, dann bringt er aber eine Syntaxfehlermeldung. Muss ich da vielleicht irgendwo Klammern setzen? Vielleicht liegts auch an der GROUP Variablen...

      Gruss

      Tobi

      Hallo miteinander,

      hast du dir das SQL mal vor der Ausführung anzeigen lassen -> mit Response.Write .. ???

      DBRecordSet.Source = "SELECT *  FROM Table1 WHERE ID_NUMBER LIKE '%" + Replace(DBRecordSet__VarID, "'", "''") + "%' AND GROUP LIKE '%" + Replace(DBRecordSet__VarGroup, "'", "''") + "%'  ORDER BY ID_NUMBER ASC"

      außerdem scheint dein DB Design suboptimal zu sein: id_number mit LIKE '%...%' abfragen ...
      außerdem, was machen die vielen Hochkommas da drin...

      Kann jemand helfen? FEhlermeldung sagt, dass die SELECT Abfrage nicht stimmt....

      ... kann viele Ursachen haben:
      [ ] Syntax error (near .... )
      [ ] Keyword here not possible
      [ ] Type Mismatch
      [ ] Arguments are of wrong type ...

      etwas spezifischer wäre gut zwecks Hilfe.

      Viele Grüße aus dem Süden, Frank

      1. Hallo Tobi,

        n00b ? macht ja nix, solange man lernwillig ist. :-)

        mit "suboptimales DB Design" meinte ich, dass du ein Feld "id_number" (betone _number) hast, welches anscheinend vom Typ Text (number, text... macht irgendwie wenig sinn...) ist, bei numerischen Feldern greifen LIKE's nicht bzw. ergeben Fehler. Außerdem bewirken LIKE's "full table scans", die performancemindernd sind....

        echt, dieses SQL wurde von Dreamweaver UltraDev erbrochen? ganz allein, automatisch? nun ja, das Replace auf die Hochkommas könnte ich mir grad vorstellen, könnten einer SQL-Injection entgegenwirken. Aber sicher bin ich mir da nicht. Würde mich wundern, wenn Dreamweaver so weit denken könnte, aber war ja auch die UltraDev Version :-9  Scherz beiseite.

        du hast leider nicht meiner Bitte entsprochen, die Fehlermeldung zu posten - nagut, meine Bitte war nicht explizit genug....

        aber wie Uwe Nohl schon richtig tippte: GROUP, denn das ist ein keyword.

        ein Tipp für die Zukunft: wenn Fehler auftreten, bitte den Fehlercode, die ~beschreibung posten, das erleichtert uns das Antworten, denn hellsehen können wir nicht.

        Viele Grüße aus dem Süden, Frank

        1. Hallo Frank,

          Hallo Tobi,

          n00b ? macht ja nix, solange man lernwillig ist. :-)

          Lernwillig bin ich bestimmt...aber wir waren ja alle mal n00bs...

          mit "suboptimales DB Design" meinte ich, dass du ein Feld "id_number" (betone _number) hast, welches anscheinend vom Typ Text (number, text... macht irgendwie wenig sinn...) ist, bei numerischen Feldern greifen LIKE's nicht bzw. ergeben Fehler.

          Ja das war mir schon klar...erstens: das Feld ist als Zahl definiert (wie number ja schon sagt ^^) und zweitens: hast Du Recht, das eine Like Abfrage da wenig sinn macht...;o), aber wie gesagt, wollte ich nur austesten, wie ich zwei Variablen in der SELECT Abfrage unterbringe - vollkommen sinnfrei. Es ergibt zwar keine Fehler, aber gibt zum Beispiel alle Datensaetze aus, die die Variable enthalten....ich gebe zu, nicht sinnvoll, aber darum ging es mir ja gar nicht.

          Außerdem bewirken LIKE's "full table scans", die performancemindernd sind....

          Das ist gut zu wissen. EQUALS nicht?

          echt, dieses SQL wurde von Dreamweaver UltraDev erbrochen? ganz allein, automatisch? nun ja, das Replace auf die Hochkommas könnte ich mir grad vorstellen, könnten einer SQL-Injection entgegenwirken. Aber sicher bin ich mir da nicht. Würde mich wundern, wenn Dreamweaver so weit denken könnte, aber war ja auch die UltraDev Version :-9  Scherz beiseite.

          du hast leider nicht meiner Bitte entsprochen, die Fehlermeldung zu posten - nagut, meine Bitte war nicht explizit genug....

          Doch, habe ich, ich schrieb, das ein Syntaxfehler angezeigt wird, zwar nicht gnauen Wortlaut, aber das setzen der Klammern hat das ja bestaetigt....

          aber wie Uwe Nohl schon richtig tippte: GROUP, denn das ist ein keyword.

          ein Tipp für die Zukunft: wenn Fehler auftreten, bitte den Fehlercode, die ~beschreibung posten, das erleichtert uns das Antworten, denn hellsehen können wir nicht.

          Viele Grüße aus dem Süden, Frank

          Aber da habe ich jetzt ein anderes Problem: Wie setze ich Wildcards fuer default ein? Bei der Definition der Variablen habe ich "*" und "%" getestet, funzt aber nicht....

          Danke fuer die Tipps und Gruss aus Washington DC,

          Tobias