Форум: "Базы";
Текущий архив: 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.005 c