Форум: "Базы";
Текущий архив: 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