![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возникла проблема с выполнением запросов ADOQuery. [D6, D7]
stalex2000 © (2009-12-25 13:29:00)Необходимо выбрать часть данных в таблице, Делаеться через
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
Anatoly Podgoretsky (2009-12-25 14:32:00) [1]> stalex2000 (25.12.2009 13:29:00) [0]
Не понятно, так быть не должно, но для начала попробуй сделать соединение и указать явно поля, заодно выбрось
ADOQuery, замени на TAdoDataset
Виталий Панасенко (2009-12-25 14:23:00) [2]а на TextArt:= Form_main.ADOQuery_TovarInfoKatArt.AsString; не пробовал поменять? хотя все равно.. странннннннооооо ккккаааакто..:-)
stalex2000 (2009-12-25 14:14:00) [3]Ega23
Спасибо помогло.
Всё нормально стало работать при замене
TextArt:= Form_main.ADOQuery_TovarInfoKatArt.Value;
на
TextArt:= Form_main.ADOQuery_TovarInfoKat.FieldByName('Art').AsString;
Виталий Панасенко (2009-12-25 14:02:00) [4]по моему, звиздежь и провокация..:-)
Ega23 (2009-12-25 13:36:00) [5]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;