Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.07.17;
Скачать: [xml.tar.bz2];

Вниз

Возникла проблема с выполнением запросов 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
2-1302269300
johnjar
2011-04-08 17:28
2011.07.17
OpenGl GLine и GL_POINTS


15-1301471301
И. Павел
2011-03-30 11:48
2011.07.17
Как узнать id добавленной записи в БД?


15-1301996213
zoolooz
2011-04-05 13:36
2011.07.17
Преобразование диапазонов


2-1301942963
lordalexander
2011-04-04 22:49
2011.07.17
старый добрый HTML


15-1301692279
istok
2011-04-02 01:11
2011.07.17
Просьба попороть иконки...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский