![]() |
|
|
#1
|
||||
|
||||
|
Всем доброе, вот такой вопрос пишу вот такую штуку Update полей
Код:
dm.Arh.Active:=false;
dm.Arh.SQL.clear;
dm.Arh.SQL.Add('update "TREB2" "SKLAD"');
dm.Arh.SQL.Add('SET sklad.kol=sklad.KOL-treb2.KOL, sklad.SUMMA=sklad.SUMMA-Treb2.SUMMA');
dm.Arh.SQL.Add('where TREB2.LINKID=sklad.ID');
dm.Arh.ExecSQL;
dm.Arh.SQL.Text:='select * from "TREB2" where flag=7';
dm.Arh.Active:=True;после чего изменений нет нечего не ошибок просто нечего.... Подскажите кто сталкивался? в чем проблема??? |
|
#2
|
||||
|
||||
|
Код:
dm.Arh.SQL.clear;
dm.Arh.SQL.Add('update treb2, sklad');
dm.Arh.SQL.Add('SET sklad.kol=sklad.KOL-treb2.KOL, sklad.SUMMA=sklad.SUMMA-Treb2.SUMMA');
dm.Arh.SQL.Add('where TREB2.LINKID=sklad.ID');
dm.Arh.ExecSQL; |
|
#3
|
||||
|
||||
|
Тут как я вижу тока запятая добавленна но это тоже не помогает на запятую вообще ругается.... (да в принципи я так тоже пробывал)
Если кому нужно использую Firebird 1.5 Delphi 2010 |
|
#4
|
||||
|
||||
|
тогда смотри в сторону : where TREB2.LINKID=sklad.ID
|
|
#5
|
||||
|
||||
|
А что здесь может быть не верно?
|
|
#6
|
||||
|
||||
|
может запрос на выборку у тебя неправильный...
дай хоть структуру таблиц. |
|
#7
|
||||
|
||||
|
и причем здесь : dm.Arh.SQL.Text:='select * from "TREB2" where flag=7'; ?
если изминения идут в SKLAD? что хочешь там увидеть? Последний раз редактировалось movnet, 24.02.2011 в 18:25. |
|
#8
|
||||
|
||||
|
а так не пробовал:
Цитата:
|
|
#9
|
||||
|
||||
|
Нет не помогает, я впринципе понял ошибку, но не понимаю как её исправить....
Суть в том что я пытаюсь сделать апдейт двух таблиц за раз: Код:
dm.Arh.SQL.Add('update "TREB2" "SKLAD"');Нужно делать aпдейт одной таблицы: Код:
UPDATE SKLAD SET Kol=Kol-CAST((SELECT Kol FROM TREB2 WHERE Flag=7) AS INT), Summa=Summa-CAST((SELECT Summa FROM TREB2 WHERE Flag=7) AS INT), WHERE Id=1\\ вот как здесь указать что апдейт только тех записей где Sklad.id=treb2.LinkID |
|
#10
|
||||
|
||||
|
тогда создай Хранимую Процедуру и делай апдейт 2-х таблиц сразу в теле одной процедуры
|
|
#11
|
||||
|
||||
|
Нет хранимая процедура рано....
Код:
dm.Arh.SQL.clear;
dm.Arh.SQL.Add('update "SKLAD"');
dm.Arh.SQL.Add('SET Kol=Kol-CAST((SELECT Kol FROM TREB2 WHERE Flag=7) AS INT),');
dm.Arh.SQL.Add('Summa=Summa-CAST((SELECT Summa FROM TREB2 WHERE Flag=7) AS INT)');
dm.Arh.SQL.Add('WHERE Sklad.id IN (SELECT treb2.LinkID FROM treb2 WHERE Sklad.id=treb2.LinkID )');
dm.Arh.ExecSQL;
end;вот немного переделанный запрос но возникает ошибка так как выбирается не одна запись а больее примерно штук 7 как обойти ошибку (скрин ошибки приложил) |
|
#12
|
||||
|
||||
|
AS INT - дублируется
Код:
dm.Arh.SQL.clear;
dm.Arh.SQL.Add('update "SKLAD"');
dm.Arh.SQL.Add('SET Kol=Kol-CAST((SELECT Kol FROM TREB2 WHERE Flag=7) AS INT),');
dm.Arh.SQL.Add('Summa=Summa-CAST((SELECT Summa FROM TREB2 WHERE Flag=7) AS INT_1)');
dm.Arh.SQL.Add('WHERE Sklad.id IN (SELECT treb2.LinkID FROM treb2 WHERE Sklad.id=treb2.LinkID )');
dm.Arh.ExecSQL;
end;Последний раз редактировалось movnet, 25.02.2011 в 15:09. |
|
#13
|
||||
|
||||
|
нет не помогло, блин что за черная полоса....
вообще ругается на "INT_1" Ошибку приложил.... |
|
#14
|
||||
|
||||
|
Попробуй INT1
|
|
#15
|
||||
|
||||
|
тоже нет, пробывал и INT1 и INN и ITN непомогает....
|