![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение записи в БД ФБ [D6, Win2k, WinXP]
DelphiN! © (2005-02-20 13:29:00)Использую IbQuery IbUpdateSQl при добавлении записи методом IBQuery.Append; Запись не сохраняеется в базе, хотя я в idUpdateSQl сгенерировал SQL код всех событий, почему ?
Добавляю запись так:
Query.Append;
Query.FieldByName('Field').AsString := 'Value';
Query.Append;
procedure QueryAfterPost(DataSet: TDataSet);
begin
Tar_UpdateSQL.Apply(ukModify);
end;
Почему изменения не сохраняються в таблице ?
ЮЮ (2005-02-21 09:19:00) [21]>Запрос на удаление :
>Query.Delete; //Тут ошибка Update Failed
Запрос на удаление, который лежит в TIBUpdateSQL !!!
З.Ы.
Как раз запрос такого вида (в TIBUpdateSQL )
'DELETE FROM BRON WHERE USER = 'Unknown'
и выдвст ошибку, т.к. в WHERE должно стоять условие по ключевому полю и удаляться не более одной записи (а может и точно одна)
DelphiN! (2005-02-21 09:11:00) [22]Вот структура таблицы :
Имя поля Тип поля Размер
COMP_ VARCHAR 20
TimeS_ DATE
TimePo_ DATE
USER_ VARCHAR 20
USLUG_ VARCHAR 20
SKIDKA_ INTEGER
PRIOR_ INTEGER
Запрос на удаление :
Query.Delete; //Тут ошибка Update Failed
Если удаляю так:
BRON.SQL.Text := 'DELETE FROM BRON WHERE USER = 'Unknown';';
BRON.ExecSQL;
То все OK
Почему Query.Delete дает ошибку ?
Anatoly Podgoretsky (2005-02-21 09:04:00) [23]И приводи точный код, не к чему нам пытаться делать выводы по ложному.
ЮЮ (2005-02-21 08:58:00) [24]>После Query.Delete у меня вылетает ошибка Update Failed Почему
Запрос на удаление покажи, для начала. И кратенько о структуре таблмцы :)
DelphiN! (2005-02-21 08:44:00) [25]Чтобы Query не закрывался после обновления разобрался как - Transaction1.CommitRetaining;
Кстати, как удалять записи ? После Query.Delete у меня вылетает ошибкаUpdate FailedПочему ?
DelphiN! (2005-02-21 08:29:00) [26]А можно какнибудь сохранить данные в таблице, чтобы Query вообще не закрывался после обновления ?
DelphiN! (2005-02-21 07:54:00) [27]
> [2] Anatoly Podgoretsky © (20.02.05 18:15)
> А потому что Post нет, вместо него два append
Я просто описался, в реальной программе у меня Post
> [1] DSKalugin © (20.02.05 17:43)
> Изменения вступают в силу только после
> Transaction.commit
Интересно получается, я создал тестовый проект, и там данные нормально записываються без Transaction.commit, а в реальном проекте не записывались, но как вставил в AfterPost Transiction.Commit стали записываться, почему в тестовом проекте без Transiction.Commit записывалось все ?
Также после Transiction.Commit Query закрывается, почему ? Как и где лучше его открыть снова ?
> [3] ЮЮ © (21.02.05 03:41)
Я уже понял, что можно просто UpdateObject указать, спасибо
ЮЮ (2005-02-21 03:41:00) [28]Потому что при вставке, ИМХО, работает запрос ukInsert.
З.Ы. Зачем вообще нужен костыль в ввиде "Tar_UpdateSQL.Apply(ukModify);"? Почему просто не указать Tar_UpdateSQL в качестве UpdateObject-а для Query. Или, вообще, вместо IBQuery используй IBDataSet, где все в одном флаконе (си. TIBDataSet.[Insert|<прочие>]SQL)
Anatoly Podgoretsky (2005-02-20 18:15:00) [29]А потому что Post нет, вместо него два append
DSKalugin (2005-02-20 17:43:00) [30]Изменения вступают в силу только после
Transaction.commit