Главная страница
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.016 c
2-1205655917
NewSer
2008-03-16 11:25
2008.04.13
Как проверить уникальность вводимого в ключевое поле значения?


2-1205923008
Pavelkq
2008-03-19 13:36
2008.04.13
OnRightClick для CheсkListBox


4-1185861953
Раф
2007-07-31 10:05
2008.04.13
Как в 1С можно с Делфи запустить определенный пункт меню


2-1205998640
Andrewtitoff
2008-03-20 10:37
2008.04.13
Как правильно подключить обьект или в чем ошибка?...


15-1201783465
DevilDevil
2008-01-31 15:44
2008.04.13
Помогите компонентом-табличкой...