Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.17;
Скачать: CL | DM;

Вниз

Возникла проблема с выполнением запросов ADOQuery.   Найти похожие ветки 

 
stalex2000 ©   (2009-12-25 13:29) [0]

Необходимо выбрать часть данных в таблице, Делаеться через
ADOQuery, а потом просмотреть все значения - просматриваются в цикле.

Высылаю кусок кода:


  Form_main.ADOQuery_TovarInfoKat.Close;
  Form_main.ADOQuery_TovarInfoKat.Parameters.ParamByName("PriceNull").Value:=-1;
  Form_main.ADOQuery_TovarInfoKat.Parameters.ParamByName("Kat").Value:=IntToStr(Co deKat);
  Form_main.ADOQuery_TovarInfoKat.Open;    //Выбор всех товаров в данной группе
  Form_main.ADOQuery_TovarInfoKat.First;
  while not Form_main.ADOQuery_TovarInfoKat.Eof do
    begin
     TextArt:= Form_main.ADOQuery_TovarInfoKatArt.Value;
....


Обнаружена проблема, если поле Art в запросе пустое, то в строчке TextArt:= Form_main.ADOQuery_TovarInfoKatArt.Value; переменной TextArt присваевается предыдущее значение.

Т.е., например, в таблице, Поле Art:
1256
(пусто)
(пусто)
1476
(пусто)
(пусто)

то в результате выполнения запроса, переменной TextArt в цикле будет присвоены значения:
1256
1256
1256
1476
1476
1476

т.е. пустые значения будут заменены на предыдущие.

Подскажите почему это происходит?
А главное, как это исправить?

Сам запрос:

select * from price_main, Price_Tovar_Info
where
price_main.Code = Price_Tovar_Info.Code and
kategor=:kat and
(price_1>:PriceNull)
order by tovar


 
Ega23 ©   (2009-12-25 13:36) [1]

1. Form_main.  выкинуть.
2.

var
 fld : TField;

begin
  .....
 ADOQuery_TovarInfoKat.Open;
 ADOQuery_TovarInfoKat.DisableControls;
 try
   ADOQuery_TovarInfoKat.First;
   while not ADOQuery_TovarInfoKat.Eof do
   begin
     fld := ADOQuery_TovarInfoKatArt.FieldByName(....);
     if fld.IsNull then
       TextArt:= "WTF?"
     else
       TextArt:= fld.AsString;
   end;

 finally
   ADOQuery_TovarInfoKat.EnableControls;
 end;


 
Виталий Панасенко   (2009-12-25 14:02) [2]

по моему, звиздежь и провокация..:-)


 
stalex2000 ©   (2009-12-25 14:14) [3]

Ega23

Спасибо помогло.
Всё нормально стало работать при замене

TextArt:= Form_main.ADOQuery_TovarInfoKatArt.Value;

на

TextArt:= Form_main.ADOQuery_TovarInfoKat.FieldByName("Art").AsString;


 
Виталий Панасенко   (2009-12-25 14:23) [4]

а на TextArt:= Form_main.ADOQuery_TovarInfoKatArt.AsString; не пробовал поменять? хотя все равно.. странннннннооооо ккккаааакто..:-)


 
Anatoly Podgoretsky ©   (2009-12-25 14:32) [5]

> stalex2000  (25.12.2009 13:29:00)  [0]

Не понятно, так быть не должно, но для начала попробуй сделать соединение и указать явно поля, заодно выбрось
ADOQuery, замени на TAdoDataset



Страницы: 1 вся ветка

Текущий архив: 2011.07.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1301633276
И. Павел
2011-04-01 08:47
2011.07.17
Тормозит обращение к MS SQL SERVER, причем только иногда


1-1260357382
ther
2009-12-09 14:16
2011.07.17
TChart и табличка вверху


2-1302336629
worldmen
2011-04-09 12:10
2011.07.17
Как можно отслеживать изменения вида курсора?


2-1302495929
Максон
2011-04-11 08:25
2011.07.17
Подмена окончаний в слове


15-1301622421
Palladin
2011-04-01 05:47
2011.07.17
1 апреля