Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2011, 16:36
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
Вопрос 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  
Старый 24.02.2011, 17:04
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

Код:
    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  
Старый 24.02.2011, 17:30
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Тут как я вижу тока запятая добавленна но это тоже не помогает на запятую вообще ругается.... (да в принципи я так тоже пробывал)

Если кому нужно использую
Firebird 1.5
Delphi 2010
Ответить с цитированием
  #4  
Старый 24.02.2011, 17:46
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

тогда смотри в сторону : where TREB2.LINKID=sklad.ID
Ответить с цитированием
  #5  
Старый 24.02.2011, 17:55
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

А что здесь может быть не верно?
Ответить с цитированием
  #6  
Старый 24.02.2011, 18:10
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

может запрос на выборку у тебя неправильный...
дай хоть структуру таблиц.
Ответить с цитированием
  #7  
Старый 24.02.2011, 18:22
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

и причем здесь : dm.Arh.SQL.Text:='select * from "TREB2" where flag=7'; ?
если изминения идут в SKLAD?
что хочешь там увидеть?

Последний раз редактировалось movnet, 24.02.2011 в 18:25.
Ответить с цитированием
  #8  
Старый 24.02.2011, 20:04
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

а так не пробовал:
Цитата:
Сообщение от Dead_Gigabit
Код:
dm.Arh.ExecSQL;
dm.arh.commit;
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #9  
Старый 25.02.2011, 08:38
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Нет не помогает, я впринципе понял ошибку, но не понимаю как её исправить....
Суть в том что я пытаюсь сделать апдейт двух таблиц за раз:
Код:
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  
Старый 25.02.2011, 10:23
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

тогда создай Хранимую Процедуру и делай апдейт 2-х таблиц сразу в теле одной процедуры
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #11  
Старый 25.02.2011, 14:48
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

Нет хранимая процедура рано....

Код:
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

как обойти ошибку (скрин ошибки приложил)
Изображения
Тип файла: jpg Erorr.JPG (16.6 Кбайт, 8 просмотров)
Ответить с цитированием
  #12  
Старый 25.02.2011, 15:06
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

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  
Старый 25.02.2011, 15:51
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

нет не помогло, блин что за черная полоса....
вообще ругается на "INT_1"
Ошибку приложил....
Изображения
Тип файла: jpg Erorr2.JPG (18.3 Кбайт, 10 просмотров)
Ответить с цитированием
  #14  
Старый 25.02.2011, 15:57
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

Попробуй INT1
Ответить с цитированием
  #15  
Старый 25.02.2011, 16:01
Аватар для Dead_Gigabit
Dead_Gigabit Dead_Gigabit вне форума
Начинающий
 
Регистрация: 20.10.2009
Адрес: Там где холодно и сыро.... брр
Сообщения: 135
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

тоже нет, пробывал и INT1 и INN и ITN непомогает....
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter