Announcement

Collapse
No announcement yet.

TQuery liefert unterschiedliche Ergebnisse in Verb. mit Params

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TQuery liefert unterschiedliche Ergebnisse in Verb. mit Params

    Hallo BDE-Profs,<br><br><br>
    folgendes Problem<br><br>
    in einer query (siehe unten stehenden Auszug) baue ich die sql-anweisung dynamisch auf. Verwende ich feste Werte anstatt der Params liefert die Query die korrekten Ergebnisse, sonst fehlen in der Ergebnismenge einige Datensätze.

    Meine Testumgebung: BDE 5.01 / Delphi 5 Ent. / dBase-Tabellen (Version 7)
    alles lokal, nur ein kleiner Testrahmen, auf allen durch die Parames genutzten Feldern liegt jeweils ein Index.<br>

    Auszug aus dem Quellcode<br>

    //<br>
    // der unten stehenden Auszug bringt die erwarteten ergebnisse<br>
    //<br>
    if Query1.Active then Query1.Close;<br>
    with Query1.SQL do<br>
    begin<br>
    Clear;<br>
    Add('SELECT * FROM "adressenperson.dbf" a');<br>
    Add(' JOIN "radrpersobjekt.dbf" b');<br>
    Add(' ON (a.ap_ident = b.id_adrpers) AND');<br>
    Add(' (b.id_ougrpa = 151)');<br>
    Add('WHERE (b.id_objekt = 361) AND');<br>
    Add(' (b.id_ougrobj = 24)');<br>
    Add('ORDER BY b.id_sort'); <br>
    end;<br>
    Query1.Open;<br>
    end;<br>
    <br>
    //<br>
    // der unten stehenden Auszug bringt FEHLERHAFTE ergebnisse<br>
    //<br>

    if Query1.Active then Query1.Close;<br>
    with Query1.SQL do<br>
    begin<br>
    Clear;<br>
    Add('SELECT * FROM "adressenperson.dbf" a');<br>
    Add(' JOIN "radrpersobjekt.dbf" b');<br>
    Add(' ON (a.ap_ident = b.id_adrpers) AND');<br>
    Add(' (b.id_ougrpa = :a1)');<br>
    Add('WHERE (b.id_objekt = :b2) AND');<br>
    Add(' (b.id_ougrobj = :c3)');<br>
    Add('ORDER BY b.id_sort'); <br>
    end;<br>
    Query1.ParamByName('a1').AsInteger:=151;<br>
    Query1.ParamByName('c3').AsInteger:=24;<br>
    Query1.ParamByName('b2').AsInteger:=361;<br>
    Query1.Open;<br>
    end;<br>
    <br>
    <br>
    Hätte irgend einer einen Tip, worin das Problem bestehen könnte?<br>

    Danke Torsten

  • #2
    Hallo Torsten,<br><br>
    probier mal im fehlerhaften Beispiel auch die Params zu löschen,<br>
    also sowas wie:<br>
    with Query1 do begin<br>
    __if Active() then Close();<br>
    __SQL.Clear();<br>
    __Params.Clear();<br>
    __SQL.Add('...');<br>
    __ParamByName('...').AsInteger:= 361;<br>
    __Open();<br>
    end; // with<br><br>
    MfG<br><br>
    Stefan Schreie

    Comment


    • #3
      Hallo Stefan,<br><br>
      danke für den Tip, aus irgendwelchen Gründen funktionierts jetzt (nachdem ich die Params gelöscht habe), obwohl Paramcount vorher 0 ist

      <br><br>
      Mfg Torste

      Comment

      Working...
      X