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
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
Comment