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