|
#1
|
||||
|
||||
Update
Всем доброе, вот такой вопрос пишу вот такую штуку 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
|
||||
|
||||
а так не пробовал:
Цитата:
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#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-х таблиц сразу в теле одной процедуры
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#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 непомогает....
|