Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.54 MB
Время: 0.048 c
3-1108905629
Sergeant ///
2005-02-20 16:20
2005.03.20
Параметр LookupCombobox


3-1108984897
SeZuka
2005-02-21 14:21
2005.03.20
Использование команды SET (MSSQL) и компонент ADO


14-1109922298
Vasya.ru
2005-03-04 10:44
2005.03.20
Математики, вопрос для вас


11-1092545574
TRUF
2004-08-15 08:52
2005.03.20
TKOLCPUID


1-1110228576
Луарвик
2005-03-07 23:49
2005.03.20
Шифрование текста