Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Post данных из DataSet в базу   Найти похожие ветки 

 
gunner   (2004-08-23 10:01) [0]

Приветствую !
Каким образом сделать чтобы при редактировании данных в датасете и скролировании на следущую запись, данные не постились в БД ?


 
Sergey13 ©   (2004-08-23 10:10) [1]

Не редактировать?


 
gunner   (2004-08-23 10:13) [2]

> Sergey13 ©
Например если в DBGrid редактирую строчку, а потом скролируюсь на след запись, то датасет пытается запостить изменённые данные в БД. Вот этого мне как раз и не нада !


 
Sergey13 ©   (2004-08-23 10:18) [3]

2[2] gunner   (23.08.04 10:13)
Тогда напиши чего нада!


 
Anatoly Podgoretsky ©   (2004-08-23 10:20) [4]

Read Only


 
gunner   (2004-08-23 10:24) [5]

Похоже я излагаю не совсем ясно !
Вобщем есть датасет с данными есть грида отображающая их !
Так вот мне нужно в гриде редактировать данные тобиш в датасете, но мне не нужно  чтобы они при этом постились в БД. А именно так и происходит когда я пытаюсь проскролироваться по гриде с отредактированными данными !


 
Erik1   (2004-08-23 10:25) [6]

Во время AftePost возбудиить исключение, например Abort;


 
Sergey13 ©   (2004-08-23 10:27) [7]

Отключить датасет от БД. Например копировать НД в таблицу в памяти RxMemoryData или нечто похожее и работать с ней.


 
gunner   (2004-08-23 10:30) [8]

> Sergey13
Это будет решением как говорится в ЛОБ.
Интересней было бы заставить датасет постить данные не автоматом а по комманде !


 
AleKo   (2004-08-23 10:31) [9]

Создай ClientdataSet переноси туда записи и делай с ними что хочешь.


 
Sergey13 ©   (2004-08-23 10:32) [10]

2[8] gunner   (23.08.04 10:30)
>Это будет решением как говорится в ЛОБ.
Как решаешь - так (по тому месту 8-) и получаешь. 8-)


 
gunner   (2004-08-23 10:39) [11]

> AleKo  
Спасибо за совет ! Наверное это самое правельное решение !


 
Zacho ©   (2004-08-23 10:42) [12]

Похоже, ему просто надо CachedUpdates


 
gunner   (2004-08-23 10:48) [13]

> Zacho
И на какой эвент его повесить BeforePost ?


 
roottim ©   (2004-08-23 10:51) [14]

>Zacho ©   (23.08.04 10:42) [12]
ага, только он пользуется "компонентом" TDataSet


 
gunner   (2004-08-23 10:54) [15]

ок ща проверю !


 
AleKo   (2004-08-23 10:55) [16]

Попробуй это.

TDataSet.OnPostError

Occurs when an application attempts to modify or insert a record and an exception is raised.

type TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction) of object;
property OnPostError: TDataSetErrorEvent;

Action is

Value Meaning

daFail Abort the operation that led to an error and display an error message.
daAbort Abort the operation that led to an error without displaying a message.
daRetry Repeat the operation that led to an error. The cause of the error should be corrected within the event handler before returning this value.


 
gunner   (2004-08-23 11:03) [17]

> AleKo
Предлагаешь вызвать OnPostError в BeforePost вручную, чтобы спровацировать отмену Поста ?


 
AleKo   (2004-08-23 11:10) [18]

Да.


 
AleKo   (2004-08-23 11:12) [19]

Канечно нужно подкмать откуда вызывать исключение.
Может попробовать BeforeScroll


 
gunner   (2004-08-23 11:20) [20]

> AleKo
Не прокатывает... всёравно он данные пытается запостить. Наверное самое правельно это использовать ClientDataSet


 
roottim ©   (2004-08-23 12:59) [21]

когданибуть прозвычит тут фраза компонент доступа?
для BDE см ответ Zacho


 
KSergey ©   (2004-08-23 13:08) [22]

А кто-то может объяснить чем ClientDataSet отличсется от RxMemoryData да еще так, что ClientDataSet не есть "решение в лоб"??
А вообще услышать про компоненты доступа конечно хотелось бы...


 
gunner   (2004-08-23 15:27) [23]

> KSergey
В RxMemoryData данные пришлось бы загонять вручную, а в ClientDataSet на автомате !


 
gunner   (2004-08-23 15:27) [24]

Удалено модератором


 
Sergey13 ©   (2004-08-23 16:21) [25]

2[23] gunner   (23.08.04 15:27)
>В RxMemoryData данные пришлось бы загонять вручную, а в ClientDataSet на автомате !
Там просто автомат другой системы. 8-)


 
gunner   (2004-08-24 08:27) [26]

Вобщем стандартного механизма решения этой задачи нет ! Только через доболнительные нахлабучки !


 
roottim ©   (2004-08-24 08:41) [27]

[21]


 
Sergey13 ©   (2004-08-24 09:10) [28]

2[26] gunner   (24.08.04 08:27)
>Вобщем стандартного механизма решения этой задачи нет !
Так и задача то не совсем стандартная - редактировать но не запоминать.


 
gunner   (2004-08-24 13:11) [29]

> Sergey13 ©
ДА ! А вобще история вся начилась с того что в ADOQuery банально не работает Post !


 
KSergey ©   (2004-08-24 13:39) [30]

> [29] gunner   (24.08.04 13:11)
> ДА ! А вобще история вся начилась с того что в ADOQuery

Ну неужели мы таки дождались озвучания компонент доступа?! О, слава всевышнему!

Тогда см. в сторону UpdateBatch и вокруг этого (LockType) - вот и все. И будет буквально
> при редактировании данных в датасете и скролировании на
> следущую запись, данные не постились в БД


 
elected   (2004-08-24 14:31) [31]

включи CashedUpdate


 
gunner   (2004-08-24 16:45) [32]

> elected
Прошу прощения, это что такое CashedUpdate ?


 
gunner   (2004-08-24 16:50) [33]

> KSergey ©
UpdateBatch решит проблему с Post в ADOQuery или всего лишь позволит не постить данные в БД при изменения в датасете ?


 
KSergey ©   (2004-08-24 16:58) [34]

> [33] gunner   (24.08.04 16:50)

Перечитав (бегло) я не нашел какого-либо описания проблемы с постом. Лишь упоминание, да и то совершенно не понятно как относящееся к теме. А потому не понятно что должно решиться.


 
A_N_D ©   (2004-08-24 17:20) [35]

TADOQuery.LockType поставь ltBatchOptimistic


 
AleKo   (2004-08-25 02:18) [36]

Можно использовать StringGrid.
Никаких проблем с сохранением данных.


 
gunner   (2004-08-25 09:41) [37]

> A_N_D ©
Спасибо TADOQuery.LockType с этим ясно !

> KSergey ©
Тут этой проблемы не было озвучено, но я пришёл к озвученной проблеме с постом при редактировании из - за того что если отредактировать данные в датасете (ADOQuery), а потом сделать Post, то ADOQuery вылетает с экскепшином "table name is an undefined name"
Вот и пришлось мне делать все апдейты в ручную и заставлять кверю не постить данные при их редактировании.
Вот !


 
KSergey ©   (2004-08-25 10:04) [38]

> [37] gunner   (25.08.04 09:41)

Мдя..
Такой ошибки еще не видел, обычно имею другую.

Настоятельно рекомендую прочитать все 3 части опуса
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=408

Лучшего мне не попадалось.


 
gunner   (2004-08-25 12:33) [39]

> KSergey ©
Щас заценю обязательно :)


 
gunner   (2004-08-25 13:14) [40]

> KSergey ©
Прочитал статейку ! Там только теория, и как я понял у автора небыло проблем с постом в квери... Странно всё это !



Страницы: 1 2 вся ветка

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

Наверх




Память: 0.55 MB
Время: 0.023 c
4-1092908245
Awod
2004-08-19 13:37
2004.09.26
Восстановление окна из свёрнутого сосояния


4-1092151693
Ego
2004-08-10 19:28
2004.09.26
можно ли сделать "ловушку" без использования библиотеки?


1-1094835977
Rimas
2004-09-10 21:06
2004.09.26
Свойства панели задач


1-1095083230
sloug
2004-09-13 17:47
2004.09.26
Цвет текста в TDBMemo


1-1094599162
Jetus
2004-09-08 03:19
2004.09.26
MSI и Delphi