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

Вниз

Вставка строки в бд   Найти похожие ветки 

 
Natangelina   (2003-01-07 01:24) [0]

Необходимо вставить данные в таблицу бд. Данные берутся с Form2.

if form2. showmodal =mrOk then
begin
table1.insert;
Tr.commit; /tr - транзакция
end
table1.insert;

При исполнении этой процедуры вместо встаки строки , она исправляет предыдущие данные


 
Alexandr   (2003-01-07 07:52) [1]

бред какй-то написан, увы.


 
natangelina   (2003-01-07 14:03) [2]

Имеетсяч table1 в которую надо записать новую строку. ввожу данные через dbedit1, но вместо добавления строки, редактируюстся данные. Использую процедуру tabel1.insert.


 
Sergey Masloff   (2003-01-07 14:13) [3]

natangelina ©
Ну, я, кажется, понял. Вы Insert вызываете уже после того, как данные в свой DBEdit ввели? Это не есть правильно ;-) Вы вводите данные, при этом DBEdit через DataSource переводит DataSet в состояние dsEdit - ну дальше все понятно. А потом, уже что-то наредактировав вы вставляете новую строку Insert-ом


 
natangelina   (2003-01-07 15:32) [4]


> Sergey Masloff (07.01.03 14:13)
> natangelina ©
> Ну, я, кажется, понял. Вы Insert вызываете уже после того,
> как данные в свой DBEdit ввели? Это не есть правильно ;-)
> Вы вводите данные, при этом DBEdit через DataSource переводит
> DataSet в состояние dsEdit - ну дальше все понятно. А потом,
> уже что-то наредактировав вы вставляете новую строку Insert-ом

А как мне сделать так , чтобы строка вставлялась , а не редактировалась?


 
Sergey Masloff   (2003-01-07 21:18) [5]

Insert вставляет пустую запись готовую для редактирования. Соответственно делаете Insert(), вводите ваши данные и делаете Post. Потом, по желанию и Commit транзакции (если вы ей делали Start до этого).
Кстати, посмотрите примеры в {Delphi}/Demos/Db что ли... Это намного быстрее и полезнее ожидания ответов в конференциях...


 
Мышь   (2003-01-07 22:49) [6]

Видимо, стоит сделать так:


Query1.Insert;
if Form2.ShowModal = mrOk
then Post
else Cancel;


Если что-нибудь от if до then может испортить состояние DataSet"a (перевести его из состояния dsInsert в dsBrowse), то перед Post стоит еще сделать проверку "If Query.Sate = dsInsert".
После того, как стало понятно, что нужно сделать с новой записью (забыть или в Базу запомнить) уже можно играться с транзакциями, ApplyUpdate"ами и так далее.
Кстати, если после then появился Commit, значит перед if где-то есть StartTransaction, да? Так делать не хорошо, так как в момент отображения диалога на сервере будет открытая транзакция, а при использовании транзакций следует максимально возможно минимизировать их время.


 
Мышь   (2003-01-07 22:52) [7]

Ну, в смысле Query.Post и Query.Cancel


 
Sergey Masloff   (2003-01-08 09:08) [8]

Мышь ©
Если у тебя есть данные которые ты получил через TIBQuery и видишь в DB-контролах то транзакция у тебя уже стартована явно или неявно. Так что говорить в таком случае о времени "держания" транзакции бессмысленно.
Если же сильно хочется экономить на времени между Start и Commit то нужно кэшировать данные на клиенте (через ClientDataSet или по другому - неважно)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-86942
Игорь
2003-01-15 02:50
2003.01.27
Какой компонент подойдёт для чтения doc файла?


14-87085
Аль
2003-01-09 03:35
2003.01.27
А что такое ИМХО? объясните...... эт по рашен?


8-86970
Dmitry V. Averuanov
2002-10-09 17:48
2003.01.27
Как воспроизводить (и возможно ли вообще) в оверлейном режиме ?


4-87211
ProtoSoft
2002-12-05 01:32
2003.01.27
А теперь може кто расскажет, как организовать вот такие вещи:


4-87220
AlexG
2002-12-12 14:05
2003.01.27
Win32Api и VCL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский