-
Цукор5 (08.05.13 14:21) [0]Есть следующий запрос:
SELECT A.*, B.* FROM NEWLENTA A, NEWLENTAITEM B WHERE B.IDNEWLENTA=A.ID AND (A.CASHID=:CASHID)
прекрасно выполняется в IbExpert и в моем приложении (Delphi7).
Меняю, для удобства так:
SELECT A.*, B.* FROM NEWLENTA A, NEWLENTAITEM B WHERE B.IDNEWLENTA=A.ID AND ((A.CASHID=:CASHID) OR (:CASHID=0))
выполняется в IbExpert, а в моем приложении ну никак.
В чем может быть дело?
Код:
IBQuery1.Close;
IBQuery1.SQL.Clear;
IbQuery1.SQL.Add( 'SELECT A.*, B.* FROM NEWLENTA A, NEWLENTAITEM B WHERE B.IDNEWLENTA=A.ID ' );
IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID) OR (:CASHID=0))');
IBQuery1.ParamByName('CASHID').AsInteger:=0;
IBQuery1.Open; -
O'ShinW © (08.05.13 14:40) [1]если так?
IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID1) OR (:CASHID2=0))');
IBQuery1.ParamByName('CASHID1').AsInteger:=0;
IBQuery1.ParamByName('CASHID2').AsInteger:=0 -
> В чем может быть дело?
2 параметра с одинаковым именем. -
IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID) OR (:CASHID=0))');
IBQuery1.Params.Items[0].AsInteger:=0;
IBQuery1.Params.Items[1].AsInteger:=0; -
Цукор5 (08.05.13 15:02) [4]
IBQuery1.Close;
IBQuery1.SQL.Clear;
IbQuery1.SQL.Add( 'SELECT * FROM NEWLENTA WHERE ((CASHID=:CASHID1) OR (:CASHID2=0)) ' );
IBQuery1.ParamByName('CASHID1').AsInteger:=0;
IBQuery1.ParamByName('CASHID2').AsInteger:=0;
IBQuery1.Open;
Получаю: Parameter 'CASHID2' not fount
Хотя, опять таки, IbExpert прекрасно отрабатывает. -
Цукор5 (08.05.13 15:07) [5]2 sniknik © (08.05.13 14:58) [3]
Да, так работает.
Одно но, у меня несколько форм, в которых кодAND ((A.CASHID=:CASHID) OR (:CASHID=0))
прекрасно отрабатывает (название таблиц другие). Что случилось с этой формой ума не приложу... -
Цукор5 (08.05.13 15:45) [6]Разобрался. Посмотрел имена параметров. Так вот, выяснилось, что имена у них:
-CASHID
-CASHID=0
Поставил пробел в запросе.
IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID) OR (:CASHID = 0))');
Имена стали одинаковые. Все заработало. Всем спасибо! -
> [6] Цукор5 (08.05.13 15:45)
> Поставил пробел в запросе
Это где такое поведение? -
Цукор5 (08.05.13 16:49) [8]Delphi7
-
O'ShinW © (08.05.13 17:36) [9]верю(проверять лень)..
тоже сталкивался, были проблемы с записью вида
> IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID) OR (:CASHID = 0
решилось при переписании на аля
> IbQuery1.SQL.Add(' AND ((A.CASHID=:CASHID) OR (0 = :CASHID -
> [8] Цукор5 (08.05.13 16:49)
> Delphi7
IBX обновлённые? -
Anatoly Podgoretsky © (11.05.13 16:09) [11]Что бы любое значение, просто не указывай WHERE