Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аналог 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
...


Наверх

Титульная страница Поиск, карта сайта Написать письмо