![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Применение SQL ко всему списку [D7, XP]
SveT © (2008-03-20 01:14:00)При выполнении загружается спикок значений, подсчет идет только по первому значению, и соответственно апдейтится только это значение:
if DMFrm. ZTQuery.RecordCount>0 then begin
p2 := DMFrm. ZTQuery.FieldByName('P').AsCurrency;
K2 := DMFrm. ZTQuery.FieldByName('K').AsCurrency;
summa := RoundTo(k2 * p2,-2);
end;
DMFrm.TmpQuery.Close;
DMFrm.TmpQuery.SQL.Clear;
DMFrm.TmpQuery.SQL.Add('Update "T.db"');
DMFrm.TmpQuery.SQL.Add('SET K='+FloatToStr(K2)+',P='+FloatToStr(p2)+', SUMMA='+FloatToStr(summa));
DMFrm.TmpQuery.SQL.Add('WHERE KOD='''+DMFrm. ZTQuery.FieldByName('KOD').AsString+'''');
DMFrm.TmpQuery.ExecSQL;
Подскажите, пожалуйста, как сделать чтобы поля "P", "К" и "summa" заполнялись ко всему списку записей, а не только к первой записи.
Спасибо!
zorik (2008-03-20 09:18:00) [1]Посмотри внимательно! begin ... endрешит проблему
Johnmen (2008-03-20 09:16:00) [2]Копипаст сделан. Пора включать голову. Хотя бы слегка...
SveT (2008-03-20 09:05:00) [3]Этот цикл - бесконечен (программа зависает, ресурсы 99,9%). Данные перестали вствляться, соот-но вычислений нет.
SveT (2008-03-20 09:00:00) [4]нет DO
SveT (2008-03-20 08:45:00) [5]to
> Германн ©
, спасибо за совет с циклом, но
[Error] OPERins.pas(137): 'DO' expected but identifier 'p2' found
Германн (2008-03-20 02:15:00) [6]
> SveT (20.03.08 01:14)
>
> При выполнении загружается спикок значений, подсчет идет
> только по первому значению, и соответственно апдейтится
> только это значение:
>
Цикл:
while not DMFrm. ZTQuery.EOF
p2 := DMFrm. ZTQuery.FieldByName('P').AsCurrency;
K2 := DMFrm. ZTQuery.FieldByName('K').AsCurrency;
summa := RoundTo(k2 * p2,-2);
DMFrm.TmpQuery.Close;
DMFrm.TmpQuery.SQL.Clear;
DMFrm.TmpQuery.SQL.Add('Update "T.db"');
DMFrm.TmpQuery.SQL.Add('SET K='+FloatToStr(K2)+',P='+FloatToStr(p2)+', SUMMA='+FloatToStr(summa));
DMFrm.TmpQuery.SQL.Add('WHERE KOD='''+DMFrm. ZTQuery.FieldByName('KOD').AsString+'''');
DMFrm.TmpQuery.ExecSQL;
Next;
end;
тебе поможет. Но поскольку реальная ситуация с таблицами не объяснена в сабже, этот совет может быть не оптимальным.
Германн (2008-03-20 01:53:00) [7]Пардон. Забыл добавить, что "такой простой подзапрос" врядли поможет в случае LocalSQL для решения сабжа.
Имхо.
Германн (2008-03-20 01:50:00) [8]
> ЦУП © (20.03.08 01:25) [1]
>
> Вообще, надо изучать SQL.
>
Вот это точно.
SveT (2008-03-20 01:30:00) [9]
> Вообще, надо изучать SQL.
Я и изую, и с вашей помощью тоже. (когда нет под рукой книги)
Спасибо.
ЦУП (2008-03-20 01:25:00) [10]Вообще, надо изучать SQL.
Формат UPDATE с простым подзапросом:
UPDATE MyTable1 SET
T1Field1=MyValueConst
WHERE T1Field2 IN (SELECT T2Field2 FROM MyTable2 WHERE ...)