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

Вниз

помогите разобраться с DBGrid   Найти похожие ветки 

 
Sim0n   (2002-08-08 08:54) [0]

Доброго времени суток!
Есть такая проблема...
Запрос ADOQuery возвращающий кучу столбцов...
При редактировании оных в DBGrid изменения тутже заносятся в БД...
Нужно чтобы изменения скажем постились на выходе с формы,
это понятно как... Но что нужно сделать чтобы изменения
не происходили на лету, т.е данные не отправлялись в БД сразу...
спасибо!


 
AlexSam   (2002-08-08 09:18) [1]

Используй транзакции. Допустим, на событии открытия редактирующей формы ставим ADOConnection1.BeginTrans, при закрытии ADOConnection1.CommitTrans(сохранить) или ADOConnection1.RollbackTrans(не сохр.). И почитай про транзакции SQL Server!!!


 
ЮЮ   (2002-08-08 09:31) [2]

Устанавливать такую продолжительную транзакцию? Где это ты такого начитался? ?-)


 
SaS13   (2002-08-08 09:41) [3]


> Sim0n (08.08.02 08:54)

Используй временный НД


 
AlexSam   (2002-08-08 10:00) [4]

Уважаемый ЮЮ, я не только начитался, но и наработался. Для ускорения процесса записи я в одной программе объединял в танзакции 200.000 Insert-ов.


 
wicked   (2002-08-08 10:22) [5]

транзакции подойдут, если ты один будешь работать с данными...
если же не один, то все, кто напорется на строчки в таблице, которые находятся под транзакцией, будут вынуждены ждать её завершения... или mssql распознает deadlock и отошьёт их сам...
то есть совет SaS13 © более предпочтителен...


 
nikolo   (2002-08-08 10:27) [6]

Проще не редактировать в Grid, а открывать обычное Dialog-окно, в котором заносить все поля в обычные Edit, Combo и т.д., а по событию OnClose спрашивать "сохранить" или нет, ну и соответственно делать транзакцию. Может не совсем круто, но точно надежно, давно так делаю и никаких проблем.


 
SaS13   (2002-08-08 10:32) [7]


> nikolo © (08.08.02 10:27)

А если требуется не одну запись, а целый набор?


 
3JIA9I CyKA   (2002-08-08 10:41) [8]

А как Вы в гриде правите "целый набор"?


 
SaS13   (2002-08-08 10:45) [9]

>При редактировании оных в DBGrid изменения тутже заносятся в БД...
>Нужно чтобы изменения скажем постились на выходе с формы
я так понял что на форме отображается Грид и в нем правка производится, а потом всем скопом либо сохр. либо нет


 
MikeP   (2002-08-08 10:56) [10]

TClientDataSet


 
ЮЮ   (2002-08-08 11:05) [11]

>Уважаемый ЮЮ, я не только начитался, но и наработался. Для ускорения процесса записи я в одной программе объединял в танзакции 200.000 Insert-ов.

Неужели в Январе открыли, в Декабре, когда пользователь через грид вбил 200 000 строк, закрыли? :-)


 
Johnmen   (2002-08-08 11:13) [12]

>AlexSam (08.08.02 09:18) - Да !
>ЮЮ © (08.08.02 11:05) - Ха-ха...Сарказм необоснован.


 
AlexSam   (2002-08-08 11:18) [13]

Для ЮЮ, просто производилась большая конвертация данных из текстовой базы в SQL7.

Для wicked, для этого и существуют блокировки, представь, что на разных ПК будут бессвязно редактировать одни данные и накладывать измненеия друг на друга. Что получится?


 
ЮЮ   (2002-08-08 11:28) [14]

Никто не спорит в необходимости транзакции при больших объемах модификаций. Но в данном случае вопрос-то в другом. Открывать трангзакцию на непределенное время для работы пользователя с Гридом - не лучший выход.


 
AlexSam   (2002-08-08 11:36) [15]

Я вообще не пользуюсь TDBGrid для редактирования данных, а только хранимыми процедурами c insert, update. Это муторнее в написании программы, но надежнее. Мы вообще не знаем, что должна делать программа и говорим слишком в общем.


 
MikeP   (2002-08-08 11:39) [16]

2ЮЮ
Зачем же на неопределенное, тимер поставить.


 
ЮЮ   (2002-08-08 11:41) [17]

А таймер будет подтверждать транзакцию или откатывать ?


 
MikeP   (2002-08-08 11:46) [18]

Можно спросить об этом юзера, по аналогии с тем, как работает автосохранение в Office. Только не "откатывать", а "не завершать". Откат только при нажатии Cancel в форме.


 
AlexSam   (2002-08-08 11:46) [19]

Мое мнение насчет таймера - откатывать вместе с предкпреждением и закрытием формы ред. данных.


 
SergCat   (2002-08-08 21:28) [20]

Надеюсь, что я правильно понял вопрос...
Можно создать TADOQuery в отдельном TDataModule и делать UpdateBatch когда захочешь.


 
Jeer   (2002-08-08 21:36) [21]

>ЮЮ © (08.08.02 11:28)
>Открывать трангзакцию на непределенное время для работы >пользователя с Гридом - не лучший выход.

Не просто "не лучший..", а худший !
О чем говорим ?

>nikolo © (08.08.02 10:27)
>в котором заносить все поля в обычные Edit, Combo

Вот надежный и безотказный способ !
Чтобы не писать все ручками надо немного подумать "ножками".
Создается и наследуется среда (формы, фреймы,компоненты) значительно облегчающие работу с данными.
А если каждый раз и все ручками - никакого потенциала не хватит..



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

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

Наверх




Память: 0.48 MB
Время: 0.007 c
3-95679
Soft(Unpowered Kiborg)
2002-08-08 11:04
2002.08.29
UDF функции в SQL серверах


14-95947
TTCustomDelphiMaster
2002-08-03 16:09
2002.08.29
Проблема с XP


6-95932
Егоров Николай
2002-06-15 19:37
2002.08.29
Как правильно получить(отправить) TMemoryStream используя TNMUDP?


7-95986
МИФИст
2002-06-18 21:34
2002.08.29
Выбор строки в ListView


3-95662
sergey32
2002-08-07 17:48
2002.08.29
Не работают хранимые процедуры





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