Показать сообщение отдельно
  #10  
Старый 26.04.2009, 19:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Приведу пример как это будет происходить на Дельфи применительно к вашей задаче:
Допустим есть таблица в которой содержиться информацио о клиенте: ClientInfo(ID,PIN,FirstName,MiddleName,LastName,Ba lance) и таблица в которой записываются операции со счетами. OperationJournal(ClientID,Operation,OperationDate)
Мы хотим получить список всех операций клиента с PIN='0000001'
Код:
Q := TAdoQuery.Create(nil);
Q.Connection := AdoConnection1;
Q.SQL.Text := ‘select OperationJournal.* from ClientInfo inner join OperationJournal on OperationJournal.ClientID=ClientInfo.ID where ClientInfo.Pin = :Pin’ ;
Q.Parameters.ParamValues[‘Pin’] := ‘0000001’;
Q.Open;
Далее, хотим провести операцию снятия 1000 руб со счета клиента с PIN='0000001'.
Здесь уже одним запросом не сделать, т.к изменятся будут сразу две таблицы.
Сначала получим код клиента с PIN='0000001':
Код:
Q := TAdoQuery.Create(nil);
Q.Connection := AdoConnection1;
Q.SQL.Text := ‘Select ID from ClientInfo where PIN=:Pin’ ;
Q.Parameters.ParamValues[‘Pin’] := ‘0000001’;
Q.Open;
ClientID := Q.FieldValues[‘ID’];
Затем внесем в журнал операций информацию о снятия со счета 1000 рублей:
Код:
Q.SQL.Text := ’Insert into OperationJournal (ClientID,Operation,OperationDate) Values(:ID,:Operation,:Date);
Q.Parameters.ParamValues[‘ID’] := ClientID;
Q.Parameters.ParamValues[‘Operation’] := 'Снятие со счета';
Q.Parameters.ParamValues[‘Date’] := Now;
Q.ExecSQL;
И наконец уменьшим сумму на счете клиента:
Код:
Q.SQL.Text := ’Update ClientInfo set Balance = Balance + :Value where ID=:ClientID’;
Q.Parameters.ParamValues[‘ID’] := ClientID;
Q.Parameters.ParamValues[‘Value’] := -1000;
Q.ExecSQL;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием