Главная страница
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.009 c
2-1302557511
zulus
2011-04-12 01:31
2011.07.17
Интеграция кода ид С++ DLL В Delphi


11-1235129408
DonJad
2009-02-20 14:30
2011.07.17
KOL размер приложения в оперативной памяти


15-1301911713
OW
2011-04-04 14:08
2011.07.17
Об интерфейсе windows


15-1301862593
Юрий
2011-04-04 00:29
2011.07.17
С днем рождения ! 4 апреля 2011 понедельник


15-1301721561
Kerk
2011-04-02 09:19
2011.07.17
Новые видеокурсы :)