Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

Применение SQL ко всему списку   Найти похожие ветки 

 
SveT   (2008-03-20 01:14) [0]

При выполнении загружается спикок значений, подсчет идет только по первому значению, и соответственно апдейтится только это значение:

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" заполнялись ко всему списку записей, а не только к первой записи.
Спасибо!


 
ЦУП ©   (2008-03-20 01:25) [1]

Вообще, надо изучать SQL.

Формат UPDATE с простым подзапросом:

UPDATE MyTable1 SET
 T1Field1=MyValueConst
WHERE T1Field2 IN (SELECT T2Field2 FROM MyTable2 WHERE ...)


 
SveT   (2008-03-20 01:30) [2]


> Вообще, надо изучать SQL.


Я и изую, и с вашей помощью тоже. (когда нет под рукой книги)

Спасибо.


 
Германн ©   (2008-03-20 01:50) [3]


> ЦУП ©   (20.03.08 01:25) [1]
>
> Вообще, надо изучать SQL.
>

Вот это точно.


 
Германн ©   (2008-03-20 01:53) [4]

Пардон. Забыл добавить, что "такой простой подзапрос" врядли поможет в случае LocalSQL для решения сабжа.
Имхо.


 
Германн ©   (2008-03-20 02:15) [5]


> 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;

тебе поможет. Но поскольку реальная ситуация с таблицами не объяснена в сабже, этот совет может быть не оптимальным.


 
SveT   (2008-03-20 08:45) [6]

to
> Германн ©

, спасибо за совет с циклом, но
[Error] OPERins.pas(137): "DO" expected but identifier "p2" found


 
SveT   (2008-03-20 09:00) [7]

нет DO


 
SveT   (2008-03-20 09:05) [8]

Этот цикл - бесконечен (программа зависает, ресурсы 99,9%). Данные перестали вствляться, соот-но вычислений нет.


 
Johnmen ©   (2008-03-20 09:16) [9]

Копипаст сделан. Пора включать голову. Хотя бы слегка...


 
zorik ©   (2008-03-20 09:18) [10]

Посмотри внимательно! begin ... end решит проблему



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1204204894
Виталий Панасенко(дом)
2008-02-28 16:21
2008.04.13
Механизм переоценки мат.ценностей(товара)


11-1180814127
Rusya
2007-06-02 23:55
2008.04.13
А теперь ecmListEdit


15-1204489156
Bogdan1024
2008-03-02 23:19
2008.04.13
Программист - это научный работник?


15-1204225524
Kerk
2008-02-28 22:05
2008.04.13
Три процента


2-1205829385
Sonia
2008-03-18 11:36
2008.04.13
Файловая переменная, как параметр процедуры