Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизКак реализовать табличную часть? Найти похожие ветки
← →
APXi (2006-08-04 14:16) [0]Предложите варианты реализации табличной части, что бы пользователь мог редактировать данные на форме, а потом с помощью кнопки "Записать" записывались данные в базу, либо спомощью кнопки "Отмена" форма закрывалась без изменений.
Пробовал с помощью ClientDataSet на насколько я помню при переносе программы, он будет требовать библиотеку (ole), правда непомню какую.
Как делали Вы?
← →
Dok (2006-08-04 14:18) [1]TDataset.Post() + F1
TDataset.Cancel() + F1
← →
Johnmen © (2006-08-04 14:27) [2]Чего предлагать то? Всё уже давно предложено в букварях и учебниках!
← →
Sergey13 © (2006-08-04 14:32) [3]> [0] APXi (04.08.06 14:16)
Еще один аспект. Чем дольше юзер работает не фиксируя изменений, тем больше верятность конфликтных ситуаций в БД.
← →
sniknik © (2006-08-04 14:43) [4]> он будет требовать библиотеку (ole), правда непомню какую.
midas.dll (можно подключить модуль midaslib и требовать не будет, будет включон в программу)
> Как делали Вы?
использую ADO (ADODataSet).
← →
APXi (2006-08-04 15:14) [5]> Dok
>TDataset.Post() + F1
>TDataset.Cancel() + F1
Мне надо не отдельную запись отменить а всю табличную часть дока.
>Johnmen
> Всё уже давно предложено в букварях и учебниках!
Дай ссылочку если не трудно.
>sniknik
>использую ADO (ADODataSet)
я тоже его использую.
← →
Stanislav © (2006-08-04 15:16) [6]LockType:=ctBathOptimistic
← →
Sergey13 © (2006-08-04 15:19) [7]> [5] APXi (04.08.06 15:14)
Есть много (в том числе и халявных) компонент а-ля "таблица в памяти". Пиши в нее в гриде как в промежуточную и переноси по кнопке.
← →
APXi (2006-08-04 15:27) [8]>[7]
Тока такой выход и вижу, проще использовать стринг грид, и самому заполнять, во многих компонентах много косяков.
← →
Stanislav © (2006-08-04 15:30) [9]А чем не устраевает
Stanislav © (04.08.06 15:16) [6] ?
← →
Desdechado © (2006-08-04 15:34) [10]> Мне надо не отдельную запись отменить а всю табличную часть дока.
Это транзакцией называется.
← →
Sergey13 © (2006-08-04 15:36) [11]> [8] APXi (04.08.06 15:27)
> Тока такой выход и вижу, проще использовать стринг грид,
> и самому заполнять, во многих компонентах много косяков.
Если есть уверенность что у тебя косяков будет меньше, тогда оно конечно.
← →
sniknik © (2006-08-04 15:45) [12]Stanislav © (04.08.06 15:30) [9]
> А чем не устраевает
> Stanislav © (04.08.06 15:16) [6] ?
ну какже, это же надо учить чегото стандартное... лучше поискать чтото непонятное (таблици в памяти e.t.s.). ;о))
ну не любят у нас учится, все пытаются найти какойто "чудо" компонент на все случаи жизни (даже если он из тогоже стандартного унаследован с изменением единственного свойства).
:-(
← →
Johnmen © (2006-08-04 15:49) [13]
> sniknik © (04.08.06 15:45) [12]
Точно-точно! Это как вера в доброго царя-батюшку. Он прикажет и всем будет полный рулез на веки-вечные...:)
А чтобы самому какие-никакие телодвижения сделать - увольте, лень типа. Поищем царя...
← →
ANB © (2006-08-04 15:54) [14]
> Мне надо не отдельную запись отменить а всю табличную часть
> дока.
Зачем ? Пользователю будет неудобно.
← →
Stanislav © (2006-08-04 16:06) [15]sniknik © (04.08.06 15:45) [12]
Ага, апотом будет: "А как все быстро переписать из StringGrid в БД"
и так далее...
← →
APXi (2006-08-04 16:08) [16]> [10]
и что транзакция бедет висеть пока пользователь открыл док и пошел чай пить?
> [11]
я уверен, что я смогу разобраться как сделать лучше
← →
Desdechado © (2006-08-04 16:13) [17]> и что транзакция бедет висеть пока пользователь открыл док
> и пошел чай пить?
Это смотря как сделаешь. Если транзакция блокирующая, то да.
Если же по принципу "кто последний, тот и папа", то транзакцию можно сделать короткую, только на время записи окончательных результатов. А все раздумья на предмет "и вот эту строчку добавим - ой нет не туда - уберем - добавим сюда - а эту подправил" происходят в локальном буфере, а результаты по кнопке "сохранить" сбрасываются в одной транзакции на сервер или откатываются по кнопке "я передумал".
← →
sniknik © (2006-08-04 16:16) [18]>> [10]
> и что транзакция бедет висеть пока пользователь открыл док и пошел чай пить?
если сделаеш транзакцией то да, будет висет и другим работать мешать (тебе в основном гемор...).
но вообщето думал речь шла о кешированных изменениях.
>> [11]
> я уверен, что я смогу разобраться как сделать лучше
со "стринг грид" за основу???? не получится.
а "косяки" о которых упоминал (большая часть, гдето так процентов 99.8 к 0,2 ), это твои "косяки"...
← →
Jeer © (2006-08-04 16:26) [19]APXi (04.08.06 14:16)
Отдели edit от DBAware и будет тебе полное счастье.
← →
APXi (2006-08-05 10:12) [20][17]
порекомендуй в чем кешировать изменения эти записи?
[18]
я тоже про кеширование говорю, просто некоторые (см. выше) про транзакции говорят.
Как делаете вы?
← →
sniknik © (2006-08-05 12:40) [21]> Как делаете вы?
??? сообщаю, за день (c [4]) ничего не изменилось... я по прежнему использую ADODataSet...
← →
Desdechado © (2006-08-07 11:29) [22]Кэширование реализовано (AFAIK) во всех неоднонаправленных датасетах. Его не нужно придумывать самому. И за счет кэшированных изменений можно реализовать короткие транзакции, которые сбрасывают изменения из кэша на сервер.
Читать справку Cached Updates, TUpdateSQL, ApplyUpdates
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.046 c