![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аналог UpdateRecord но без CashedUpdates
DelphiLexx © (2006-12-01 16:53:00)Есть FIBDataSet. Когда я подтверждаю изменения через Post. То у меня на Insert должен сработать один код на Update другой. Расположить в InsertSql и UpdateSql нет возможности из-за того, что Sql формируется динамически в программе. Как узнать, что после подтверждения данных методом Post была вставка или обновление, чтобы правидьно применить запросы.
Моя идея легко реализуется через UpdateRecord, но это требует CashedUpdates = True, а это мне нужно.
DelphiLexx (2006-12-01 18:12:00) [1]
> еще при отмене обратно в false вернуть.
Тогда можно проще организовать в BeforePost
if FIBDataSet.State in [dsInsert] then
...
Рамиль (2006-12-01 18:06:00) [2]еще при отмене обратно в false вернуть.
Рамиль (2006-12-01 18:04:00) [3]OnNewRecord
IsNewRecord := true;
AfterPost
if IsNewRecord then ...
IsNewRecord := false;
DelphiLexx (2006-12-01 17:23:00) [4]
> DelphiLexx
Есть такой код:
MemoryDS.Append;
MemoryDS.FieldByName('RAW_ID').AsInteger := P.ArrayData[0];
MemoryDS.FieldByName('RAW_NAME').AsString := P.ArrayData[1];
MemoryDS.Post;
После Post'a должна сработать процедура ExecSql - моя самопольная, которая выполняет любой SQL-запрос.
if (был insert) then
ExecSQL(DBConnection,
'insert into MY_TABLE (RAW_ID, RAW_NAME) ' +
'values(:RAW_ID, :RAW_NAME)',
[MemoryDS.FieldByName('RAW_ID').AsInteger,
MemoryDS.FieldByName('RAW_NAME').AsString], tmpTran);
else if (был Update) then
...