Вниз
Скачать: CL | DM;

помогите разобраться с 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.009 c
6-95921
Nikollay
2002-06-20 18:59
2002.08.29
Как уменьшить размер пакета протокола FTP?


4-96029
SergeySA
2002-06-26 18:13
2002.08.29
Как взять цвет c контрола (например с кнопки) в чужём окне?


1-95906
msg
2002-08-16 08:56
2002.08.29
Как убрать с окна рамку 3х мерности


3-95660
Cossys
2002-08-08 10:02
2002.08.29
Нужен компонент или как это сделать?


1-95799
ga3
2002-08-19 05:58
2002.08.29
Задачка для математиков или близких к ним




   Наверх