![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите разобраться с DBGrid [D6, MSSQL]
Sim0n © (2002-08-08 08:54:00)Доброго времени суток!
Есть такая проблема...
Запрос ADOQuery возвращающий кучу столбцов...
При редактировании оных в DBGrid изменения тутже заносятся в БД...
Нужно чтобы изменения скажем постились на выходе с формы,
это понятно как... Но что нужно сделать чтобы изменения
не происходили на лету, т.е данные не отправлялись в БД сразу...
спасибо!
Jeer (2002-08-08 21:36:00) [1]>ЮЮ © (08.08.02 11:28)
>Открывать трангзакцию на непределенное время для работы >пользователя с Гридом - не лучший выход.
Не просто "не лучший..", а худший !
О чем говорим ?
>nikolo © (08.08.02 10:27)
>в котором заносить все поля в обычные Edit, Combo
Вот надежный и безотказный способ !
Чтобы не писать все ручками надо немного подумать "ножками".
Создается и наследуется среда (формы, фреймы,компоненты) значительно облегчающие работу с данными.
А если каждый раз и все ручками - никакого потенциала не хватит..
SergCat (2002-08-08 21:28:00) [2]Надеюсь, что я правильно понял вопрос...
Можно создать TADOQuery в отдельном TDataModule и делать UpdateBatch когда захочешь.
AlexSam (2002-08-08 11:46:00) [3]Мое мнение насчет таймера - откатывать вместе с предкпреждением и закрытием формы ред. данных.
MikeP (2002-08-08 11:46:00) [4]Можно спросить об этом юзера, по аналогии с тем, как работает автосохранение в Office. Только не "откатывать", а "не завершать". Откат только при нажатии Cancel в форме.
ЮЮ (2002-08-08 11:41:00) [5]А таймер будет подтверждать транзакцию или откатывать ?
MikeP (2002-08-08 11:39:00) [6]2ЮЮ
Зачем же на неопределенное, тимер поставить.
AlexSam (2002-08-08 11:36:00) [7]Я вообще не пользуюсь TDBGrid для редактирования данных, а только хранимыми процедурами c insert, update. Это муторнее в написании программы, но надежнее. Мы вообще не знаем, что должна делать программа и говорим слишком в общем.
ЮЮ (2002-08-08 11:28:00) [8]Никто не спорит в необходимости транзакции при больших объемах модификаций. Но в данном случае вопрос-то в другом. Открывать трангзакцию на непределенное время для работы пользователя с Гридом - не лучший выход.
AlexSam (2002-08-08 11:18:00) [9]Для ЮЮ, просто производилась большая конвертация данных из текстовой базы в SQL7.
Для wicked, для этого и существуют блокировки, представь, что на разных ПК будут бессвязно редактировать одни данные и накладывать измненеия друг на друга. Что получится?
Johnmen (2002-08-08 11:13:00) [10]>AlexSam (08.08.02 09:18) - Да !
>ЮЮ © (08.08.02 11:05) - Ха-ха...Сарказм необоснован.
ЮЮ (2002-08-08 11:05:00) [11]>Уважаемый ЮЮ, я не только начитался, но и наработался. Для ускорения процесса записи я в одной программе объединял в танзакции 200.000 Insert-ов.
Неужели в Январе открыли, в Декабре, когда пользователь через грид вбил 200 000 строк, закрыли? :-)
MikeP (2002-08-08 10:56:00) [12]TClientDataSet
SaS13 (2002-08-08 10:45:00) [13]>При редактировании оных в DBGrid изменения тутже заносятся в БД...
>Нужно чтобы изменения скажем постились на выходе с формы
я так понял что на форме отображается Грид и в нем правка производится, а потом всем скопом либо сохр. либо нет
3JIA9I CyKA (2002-08-08 10:41:00) [14]А как Вы в гриде правите "целый набор"?
SaS13 (2002-08-08 10:32:00) [15]
> nikolo © (08.08.02 10:27)
А если требуется не одну запись, а целый набор?
nikolo (2002-08-08 10:27:00) [16]Проще не редактировать в Grid, а открывать обычное Dialog-окно, в котором заносить все поля в обычные Edit, Combo и т.д., а по событию OnClose спрашивать "сохранить" или нет, ну и соответственно делать транзакцию. Может не совсем круто, но точно надежно, давно так делаю и никаких проблем.
wicked (2002-08-08 10:22:00) [17]транзакции подойдут, если ты один будешь работать с данными...
если же не один, то все, кто напорется на строчки в таблице, которые находятся под транзакцией, будут вынуждены ждать её завершения... или mssql распознает deadlock и отошьёт их сам...
то есть совет SaS13 © более предпочтителен...
AlexSam (2002-08-08 10:00:00) [18]Уважаемый ЮЮ, я не только начитался, но и наработался. Для ускорения процесса записи я в одной программе объединял в танзакции 200.000 Insert-ов.
SaS13 (2002-08-08 09:41:00) [19]
> Sim0n (08.08.02 08:54)
Используй временный НД
ЮЮ (2002-08-08 09:31:00) [20]Устанавливать такую продолжительную транзакцию? Где это ты такого начитался? ?-)