Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: 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 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
3-95646
masanovetc
2002-08-06 11:40
2002.08.29
Как сделать запрос при помощи временных таблиц?


3-95653
nikolo
2002-08-07 18:00
2002.08.29
Работа с памятью


14-95949
IronHawk
2002-08-03 23:59
2002.08.29
Где » архивы старых форумов « ???


1-95841
[BAD]Angel
2002-08-17 12:45
2002.08.29
Люди, спасайте!!! Уже который день мучаюсь...


1-95900
Shrek
2002-08-18 19:57
2002.08.29
Размер приложения 2 мегабайта в место 300 КЛб!