Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.52 MB
Время: 0.034 c
3-1155018993
Dolmat
2006-08-08 10:36
2006.10.08
Какой порт по умолчанию IB слушает


1-1156399727
tButton
2006-08-24 10:08
2006.10.08
рендеринг кучи текста


9-1136934366
GLMaterialLibrary1
2006-01-11 02:06
2006.10.08
GLScene Как сделать тоже самое только в поток?


2-1158365499
EOWL
2006-09-16 04:11
2006.10.08
Как скрыть поле или метод в потомке класса


3-1155172585
Александр007
2006-08-10 05:16
2006.10.08
Доступ к чужой базе Paradox