Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как реализовать табличную часть? [D7, Access]


Страницы:   1 2

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)

Еще один аспект. Чем дольше юзер работает не фиксируя изменений, тем больше верятность конфликтных ситуаций в БД.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо