Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 22:35   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию Перекидывание денег с одного счета на другой

Здравствуйте ребята . Для себя ставил задача , Но не могу решать , :D снять и перекинуть из одного счета на другом денег .

Создал MS SQL таблица

Код:
create table Bankshot(
id int identity(1,1),
fio varchar(30),
dat_operac datetime,
shot money
);
Добавляю запись

Код:
	insert into Bankshot (fio, dat_operac, shot) 
	values ('Петренко Андреи Фасилич','20.07.2013','250')
	insert into Bankshot (fio, dat_operac, shot) 
	values ('Ачико Нефаридзе','22.07.2013','210')
	insert into Bankshot (fio, dat_operac, shot) 
	values ('Микифоров Максим','25.07.2013','165')

Снять и перекинуть денег через Managment Studio на MS SQL делаю так и работает хорошо

Код:
 ---- -------------  Перекидывание денег с одного счета на другой -------- 
	begin tran
	update Bankshot set shot = shot-30 where fio = 'Ачико Нефаридзе';
	update Bankshot set shot = shot+30 where fio = 'Микифоров Максим';
	commit tran
	-------------------------------------------------------------------- 
    select id, fio, dat_operac, shot
    from Bankshot
------------------------------------------------------------------------
Вопрос Как это операция реализовать через Delphi ? Хочу что на Form был DBLookupComboBox1 = 'Ачико Нефаридзе'; и DBLookupComboBox2 'Микифоров Максим'; и Edit1 = для выбора денег.

Начинаю сначала первый update через Delphi

Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  if (DBLookupComboBox1.Text ='') or(DBLookupComboBox2.Text ='') or (Edit1.Text = '') then
   Showmessage('Çàïîëíèòå âñå ïîëÿ')
   else
  begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('update Bankshot ');
     ADOQuery1.SQL.Add('set shot = shot - '''+ (Edit1.Text) +'');
     ADOQuery1.SQL.Add(' where fio = '''+DBLookupComboBox1.Text+'');
     ADOQuery1.ExecSQL;
  end;
end;
виводить ошибка : 'Не удалось преобразовать значение типа char к money'


питаюсь преобразовать на числа но что то делаю не правильно
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  if (DBLookupComboBox1.Text ='') or(DBLookupComboBox2.Text ='') or (Edit1.Text = '') then
   Showmessage('Çàïîëíèòå âñå ïîëÿ')
   else
  begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('update Bankshot ');
     ADOQuery1.SQL.Add('set shot = shot - '''+ QuotedStr(Edit1.Text) +'');
     ADOQuery1.SQL.Add(' where fio = '''+DBLookupComboBox1.Text+'');
     ADOQuery1.ExecSQL;
  end;
end;
Ребята, пожалуйста помогите написать это запрос правильно ...
xxbesoxx вне форума Ответить с цитированием
Старый 15.10.2013, 23:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ADOQuery1.SQL.Add('set shot = shot - '''+ (Edit1.Text) +'');
Убери их. Тебе оковычивать число не нужно в арифметических операциях.
Цитата:
Создал MS SQL таблица
Опаньки... А теперь обьясни почему не сделать процедуру типа:
Код:
CREATE PROCEDURE Exchange (
 @From nvarchar(30),@To nvarchar(30),@Money money
)
AS
BEGIN
 update Bankshot set shot = shot -@Money where fio =@From
 update Bankshot set shot = shot +@Money where fio =@To 
END
И не заюзать так:
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  if (DBLookupComboBox1.Text ='') or(DBLookupComboBox2.Text ='') or (Edit1.Text = '') then
   Showmessage('Çàïîëíèòå âñå ïîëÿ')
   else
  begin
     ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('exec Exchange (:from,:to,:summ) ');
     ADOQuery1.Parameters.ParamByName('from').value:=DBLookupComboBox1.Text;
     ADOQuery1.Parameters.ParamByName('to').value:=DBLookupComboBox2.Text;
     ADOQuery1.Parameters.ParamByName('summ').value:=StrToFloat(Edit1.Text);
     ADOQuery1.ExecSQL;
  end;
end;
И пусть механика запросов лежит полностью на СУБД.
I'm learning to live...

Последний раз редактировалось Stilet; 15.10.2013 в 23:43.
Stilet вне форума Ответить с цитированием
Старый 15.10.2013, 23:55   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

если так тоже ошибка 'Незакрытые кавычки в конце симбольное чтроки ''

Код:
  ADOQuery1.SQL.Add('set shot = shot -  '+ QuotedStr(Edit1.Text) +'');
Пожалуйста покажите как ?
xxbesoxx вне форума Ответить с цитированием
Старый 16.10.2013, 00:01   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ADOQuery1.SQL.Add('set shot = shot - '+ Edit1.Text);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.10.2013, 00:07   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ADOQuery1.SQL.Add('set shot = shot - '+ Edit1.Text);
Тоже ошибка ! Что я делаю неправильно ?
Цитата:
procedure TForm1.btn1Click(Sender: TObject);
begin
if (DBLookupComboBox1.Text ='') or(DBLookupComboBox2.Text ='') or (Edit1.Text = '') then
Showmessage('Çàïîëíèòå âñå ïîëÿ')
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update Bankshot ');
ADOQuery1.SQL.Add('set shot = shot - '+ Edit1.Text);
ADOQuery1.SQL.Add(' where fio = '''+DBLookupComboBox1.Text+'');
ADOQuery1.ExecSQL;
end;
end;
Изображения
Тип файла: jpg Deneg.jpg (66.2 Кб, 119 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 16.10.2013, 00:11   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Stilet Попробую процедур . Спасибо друзья за помощь, за советь! Люблю это форум . Здесь много профессионалы есть .... Попробую
xxbesoxx вне форума Ответить с цитированием
Старый 16.10.2013, 00:14   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
'Незакрытые кавычки в конце симбольное чтроки ''
Так ведь не только в одном месте
Вообще числа не оковычивай в твоем случае ни через ''' ни функцией.
Цитата:
Попробую процедур
Не просто попробуй, а используй эту возможность активно - из моего опыта совет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2013, 00:23   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так ведь не только в одном месте
Вообще числа не оковычивай в твоем случае ни через ''' ни функцией.

Не просто попробуй, а используй эту возможность активно - из моего опыта совет.
Я прошу прошения . Создал процедура как вы показали пример . Но тоже ошибка . Может для процедур надо ADOStoredProc1 ???
Изображения
Тип файла: jpg Deneg2.jpg (70.9 Кб, 119 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 16.10.2013, 00:45   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Что я делаю неправильно ?
всё,

выкинуть ADOQuery1.Close;
выкинуть ADOQuery1.SQL.Clear;
выкинуть ADOQuery1.SQL.Add('update Bankshot ');
выкинуть ADOQuery1.SQL.Add('set shot = shot - '+ Edit1.Text);
выкинуть ADOQuery1.SQL.Add(' where fio = '''+DBLookupComboBox1.Text+'');
выкинуть ADOQuery1
eval вне форума Ответить с цитированием
Старый 16.10.2013, 00:55   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

выкинуть Да .... не сложно ! Что потом ?
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гиперссылки с одного листа на другой, v2 redmilks Microsoft Office Excel 5 04.05.2018 10:07
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
Совместная работа в сети-использование результатов счета другой машины Dima1111 Работа с сетью в Delphi 5 06.01.2011 10:25
DBGrid из одного в другой MSD БД в Delphi 3 28.04.2010 15:41
Самый типичный пример транзакций - перевод денег с одного счета на другой. аня741 Помощь студентам 1 20.03.2009 00:10