Главная страница
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.022 c
15-1302018111
И. Павел
2011-04-05 19:41
2011.07.17
Ищу роман С. Кинга "Под куполом"


15-1301479509
R_R
2011-03-30 14:05
2011.07.17
Как вы относитесь к языку моделирования GPSS?


15-1301662418
Baks
2011-04-01 16:53
2011.07.17
Как лучше записать несколько TBitmap в один файл


4-1224073189
Dymok
2008-10-15 16:19
2011.07.17
Оценить сколько времени простаивает машина


15-1301689794
Юрий
2011-04-02 00:29
2011.07.17
С днем рождения ! 2 апреля 2011 суббота