Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Сохранение записи в БД ФБ Найти похожие ветки
← →
DelphiN! © (2005-02-20 13:29) [0]Использую 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;
Почему изменения не сохраняються в таблице ?
← →
DSKalugin © (2005-02-20 17:43) [1]Изменения вступают в силу только после
Transaction.commit
← →
Anatoly Podgoretsky © (2005-02-20 18:15) [2]А потому что Post нет, вместо него два append
← →
ЮЮ © (2005-02-21 03:41) [3]Потому что при вставке, ИМХО, работает запрос ukInsert.
З.Ы. Зачем вообще нужен костыль в ввиде "Tar_UpdateSQL.Apply(ukModify);"? Почему просто не указать Tar_UpdateSQL в качестве UpdateObject-а для Query. Или, вообще, вместо IBQuery используй IBDataSet, где все в одном флаконе (си. TIBDataSet.[Insert|<прочие>]SQL)
← →
DelphiN! © (2005-02-21 07:54) [4]
> [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 указать, спасибо
← →
DelphiN! © (2005-02-21 08:29) [5]А можно какнибудь сохранить данные в таблице, чтобы Query вообще не закрывался после обновления ?
← →
DelphiN! © (2005-02-21 08:44) [6]Чтобы Query не закрывался после обновления разобрался как - Transaction1.CommitRetaining;
Кстати, как удалять записи ? После Query.Delete у меня вылетает ошибкаUpdate Failed
Почему ?
← →
ЮЮ © (2005-02-21 08:58) [7]>После Query.Delete у меня вылетает ошибка Update Failed Почему
Запрос на удаление покажи, для начала. И кратенько о структуре таблмцы :)
← →
Anatoly Podgoretsky © (2005-02-21 09:04) [8]И приводи точный код, не к чему нам пытаться делать выводы по ложному.
← →
DelphiN! © (2005-02-21 09:11) [9]Вот структура таблицы :
Имя поля Тип поля Размер
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 дает ошибку ?
← →
ЮЮ © (2005-02-21 09:19) [10]>Запрос на удаление :
>Query.Delete; //Тут ошибка Update Failed
Запрос на удаление, который лежит в TIBUpdateSQL !!!
З.Ы.
Как раз запрос такого вида (в TIBUpdateSQL )
"DELETE FROM BRON WHERE USER = "Unknown"
и выдвст ошибку, т.к. в WHERE должно стоять условие по ключевому полю и удаляться не более одной записи (а может и точно одна)
← →
DelphiN! © (2005-02-21 09:22) [11]delete from BRON
where
COMP_ = :OLD_COMP_ and
PRIOR_ = :OLD_PRIOR_ and
SKIDKA_ = :OLD_SKIDKA_ and
TIMEPO_ = :OLD_TIMEPO_ and
TIMES_ = :OLD_TIMES_ and
USER_ = :OLD_USER_ and
USLUG_ = :OLD_USLUG_
← →
ЮЮ © (2005-02-21 09:25) [12]и все поля заполнены? Нет ни одного NULL? Не майся д..ю - создай первичный ключ - и проблем станет меньще, возможно и UpdeteSQL не потребуется
← →
DelphiN! © (2005-02-21 09:43) [13]
> [13] ЮЮ © (21.02.05 09:25)
> и все поля заполнены?
Заполнены
> создай первичный ключ
Моя твоя не понимать :)
← →
Johnmen © (2005-02-21 09:49) [14]>Моя твоя не понимать :)
Естественно. Так и должно быть.
Человек, не знакомый с основами, не поймёт элементарных ответов...
← →
Sergey13 © (2005-02-21 09:49) [15]2[13] DelphiN! © (21.02.05 09:43)
> Моя твоя не понимать :)
Значит без приглашения программиста не обойтись.
← →
DelphiN! © (2005-02-21 09:54) [16]
> [14] Johnmen © (21.02.05 09:49)
> >Моя твоя не понимать :)
>
> Естественно. Так и должно быть.
> Человек, не знакомый с основами, не поймёт элементарных
> ответов...
Это первый мой опыт работы с СУБД
> [15] Sergey13 © (21.02.05 09:49)
> Значит без приглашения программиста не обойтись.
Да не, думаю разберусь ...
Можно еще вопрос, как можно обновить данные в Query, не закрывая Query
Тоесть сейчас я обновляю так :Query.Active := false; //Закрываю
Query.Active := true; //Открываю
← →
Johnmen © (2005-02-21 10:10) [17]>DelphiN! © (21.02.05 09:54) [16]
>Это первый мой опыт работы с СУБД
Да нет никакого опыта !
Есть просто огромная лень смотреть в книги. И есть халявная надежда, что здесь тебе прочтут цикл лекций "Программирование баз данных за 3 дня"
:(
← →
ЮЮ © (2005-02-21 10:12) [18]Если для того, чтобы в запрос попали добавленные кем-то другим записи, то только так. А зачем "обновлять" записи, которые ты же и исправляешь? Они и так должны быть одинаковыми, что в БД, чо в твоем Query.
← →
DelphiN! © (2005-02-21 10:33) [19]Не всегда я, данные можно и удаленно менять
> [17] Johnmen © (21.02.05 10:10)
Я сейчас как раз таки и читаю "Введение в Interbase", просто только начал
---
← →
DelphiN! © (2005-02-21 10:33) [20]Не всегда я, данные можно и удаленно менять
> [17] Johnmen © (21.02.05 10:10)
Я сейчас как раз таки и читаю "Введение в Interbase", просто только начал
---
---
← →
Johnmen © (2005-02-21 10:46) [21]>DelphiN! © (21.02.05 10:33) [20]
>Я сейчас как раз таки и читаю "Введение в Interbase", просто
>только начал
Вот это правильно ! Только вопросы надо задавать по прочтении и усвоениии...:)
← →
DelphiN! © (2005-02-21 11:08) [22]
> Вот это правильно ! Только вопросы надо задавать по прочтении
> и усвоениии...:)
Если бы мне это было не к спеху именно так бы и сделал
← →
DelphiN! © (2005-02-21 12:24) [23]Обнаружил еще 1-н интересный момент:
После открытия Query одной таблицы, где колличество записей = 9, Query.RecordCount = 1 (!!!). Стоит только присоеденить к Query DBGrid(при этом на текущей форме, чтобы его было видно), как RecoredCount сразу же = 9.
Я в полном замешательстве, в чем дело ?
← →
ЮЮ © (2005-02-21 12:27) [24]Сделай грид пониже - получишишь от 1 до 9 :)
см. метод FetchAll
← →
Sergey13 © (2005-02-21 12:31) [25]2 [23] DelphiN! © (21.02.05 12:24)
>Обнаружил еще 1-н интересный момент:
О сколько нам ошибок трудных
Готовит просвещенья дух.
И опыт, сын ошибок трудных,
И гений, парадокса друг.
(с) А.С.Пушкин.
8-)
← →
DelphiN! © (2005-02-21 12:35) [26]
> [24] ЮЮ © (21.02.05 12:27)
Клево, заработало !
> [25] Sergey13 © (21.02.05 12:31)
:))
← →
Johnmen © (2005-02-21 12:53) [27]Sergey13 © (21.02.05 12:31) [25]
О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг,
И случай, бог изобретатель...
© 1829, А. С. Пушкин
← →
Sergey13 © (2005-02-21 12:56) [28]2[27] Johnmen © (21.02.05 12:53)
Везде мне лишние ошибки мерещатся. 8-)
← →
DelphiN! © (2005-02-21 14:53) [29]Так что мне делать с ошибкой
Update failed
При выполнении Query.Delete;
Кстати, когда я перезапускаю проект, то запись удаляется нормально, но потом потом снова таже проблемма
← →
DelphiN! © (2005-02-22 06:42) [30]Народ, ну же не молчите !
Страницы: 1 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.035 c