Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Проблемы с TSQLQuery


Автор: Anatoliy99 27.5.2010, 20:38
Юзаю бесплатную turbodelphi и dbexpress с TSQLQuery

          Q3.Close;
          Q3.SQL.clear;
          Q3.SQL.Text := 'select fotofile from fotos where cid=1';
          Q3.Open;
       
Получаю Значение q3.FieldByName('fotofile').value

Дальше делаю

          Q3.Close;
          Q3.SQL.clear;
          Q3.SQL.Text := 'select fotofile from fotos where cid=2';
          Q3.Open;

По этому значению cid в таблице нет ни одной записи и должен быть null, 
НО поле 
               q3.FieldByName('fotofile').value 
содержит значение предыдущего запроса! 

Такого не наблюдается, если в выборке есть хоть одна запись, то есть не null.
Как очистить результаты предыдущего запроса? Подскажите плз!


Автор: Antimol 2.6.2010, 11:55
Может быть попробовать не очищать, а привести к какому то типу, например: q3.FieldByName('fotofile').AsInteger

Автор: superVad 2.6.2010, 13:18
Я не уверен что там должен быть нулл. Там вообще должна быть ошибка - т.к. ты обращаешься к несуществующей записи.
И можешь юзать параметры, а не переписывать весь запрос - красивей как то будет smile

Автор: Antimol 2.6.2010, 13:51
если нет значений, тогда возвращает null, а null это не 0, а неопределеное значение

Автор: morpheyushka 2.6.2010, 15:33
Цитата(Anatoliy99 @  27.5.2010,  20:38 Найти цитируемый пост)
Как очистить результаты предыдущего запроса? Подскажите плз!

Нафига такое делать??????
В твоем случае нужно делать так:
Код

if Q3.RecordCount <> 1 then
  Exit
else 
  //работаем с изображением

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)