Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Сохранение записи в БД ФБ   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.041 c
6-1105613964
Jungle
2005-01-13 13:59
2005.03.20
Запуск прогаммы на удалённом компьютере


14-1109196159
Случайно забредший
2005-02-24 01:02
2005.03.20
Где там галочку поставить, чтоб ехешник работал без Дельфи?


6-1106410897
ferr
2005-01-22 19:21
2005.03.20
idTCP


3-1108986324
Layner
2005-02-21 14:45
2005.03.20
Как "поймать" сообщения при выполнении запросов к MSSQL


14-1109525705
Piter
2005-02-27 20:35
2005.03.20
Где достать декомпилятор для Visual Basic?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский