Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог UpdateRecord но без CashedUpdates 
:(
    Опции темы
Delphist
Дата 1.12.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Есть FIBDataSet. Когда я подтверждаю изменения через Post. То у меня на Insert должен сработать один код на Update другой. Расположить в InsertSql и UpdateSql нет возможности из-за того, что Sql формируется динамически в программе. Как узнать, что после подтверждения данных методом Post была вставка или обновление, чтобы правидьно применить запросы.
Моя идея легко реализуется через UpdateRecord, но это требует CashedUpdates = True, а это мне нужно.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 1.12.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



чесно говоря, мало что не понял, что ты хочешь  smile 
PM MAIL   Вверх
Reptile
Дата 1.12.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 30.9.2006
Где: Украина, Первомай ск

Репутация: нет
Всего: 3



Цитата(Delphist @  1.12.2006,  16:52 Найти цитируемый пост)
Как узнать, что после подтверждения данных методом Post была вставка или обновление

Перед выполнением выбери из таблицы MAX(id) и после выполнения тоже, если отличны - была вставка.
Или я не так понял?

PM MAIL   Вверх
Delphist
Дата 1.12.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Цитата(Akella @  1.12.2006,  18:01 Найти цитируемый пост)
чесно говоря, мало что понял, что ты хочешь    

Есть такой код: 
Код

  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
...


Добавлено @ 17:19 
Цитата(Reptile @  1.12.2006,  18:15 Найти цитируемый пост)
Перед выполнением выбери из таблицы MAX(id) и после выполнения тоже, если отличны - была вставка.
Или я не так понял?

В принципе способ не плохой. Какий есть еще варианты.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 1.12.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



ты лог делаешь?
может лучше так?
Код

procedure TDM.fibTransWriteAfterSQLExecute(Query: TFIBQuery; SQLType: TFIBSQLTypes);
begin
  if LoginData.Enable then
    case SQLType of
  //    SQLSelect: ;
      SQLInsert: fmMain.PrepearLogData(Query, alInsert);
      SQLUpdate: fmMain.PrepearLogData(Query, alUpdate);
      SQLDelete: fmMain.PrepearLogData(Query, alDelete);
  //    SQLDDL: ;
  //    SQLExecProcedure: ;
    end;
end;


PM MAIL   Вверх
Delphist
Дата 1.12.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Цитата(Akella @  1.12.2006,  18:46 Найти цитируемый пост)
ты лог делаешь?

Какой лог? И откуда ты взял AfterSQLExecute


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 1.12.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Akella @  1.12.2006,  17:46 Найти цитируемый пост)
fibTrans

это компонента-транзакция.
лог - я имел ввиду действия пользователей, аудит

Добавлено @ 17:55 
читай всё
Цитата(Akella @  1.12.2006,  17:46 Найти цитируемый пост)
fibTransWriteAfterSQLExecute


а не только


Цитата(Delphist @  1.12.2006,  17:51 Найти цитируемый пост)
AfterSQLExecute 


Добавлено @ 17:56 
Цитата(Akella @  1.12.2006,  17:54 Найти цитируемый пост)
fibTransWriteAfterSQLExecute

из этого можно понять, что fibTransWriteAfterSQLExecute - это компонента, пишущая транзакция, событие после выполнения запроса

Добавлено @ 17:56 
хотябы догадаться
PM MAIL   Вверх
Delphist
Дата 1.12.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 1
Всего: 3



Цитата(Akella @  1.12.2006,  18:54 Найти цитируемый пост)
из этого можно понять, что fibTransWriteAfterSQLExecute - это компонента

Это самопальная компонента или компонента идущая вместе FIB'ами


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 4.12.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



нет, это не самопальная  smile 

ищи в палитре TpFibTransaction
PM MAIL   Вверх
Alex
Дата 8.12.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



А кто запрещает изменять сами запросы у FIBDataSet во время работы и не заниматься в очередной раз изобретением велосипеда?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.