Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

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 ©
Прочитал статейку ! Там только теория, и как я понял у автора небыло проблем с постом в квери... Странно всё это !


 
gunner   (2004-08-25 13:53) [41]

Всё нашлась засада. Проблемма именно в DB2
попробовал на MSSQL2000 всё в лёт работает !
ААААААААА куда бежать !


 
KSergey ©   (2004-08-25 14:30) [42]

1.Индексы строить
2.Поискать обновленный драйвер доступа к DB2.
3.Поискать другую технологию доступа к DB2.


 
gunner   (2004-08-25 15:02) [43]

> KSergey © спасибо тебе
и всем спасибо кто принял участие в форуме ! Проблему порешал !
Правда пришлось пакеты обмена данными поснифить от приложения к СУБД а поковырятся в них.
Одним словом СУБД различает регистр букв в название своих объектов. Скорее всего драйвер кривоват который не делает UPCASE от всех названий объектов !



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

Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 1.786 c
4-1092375374
RDen
2004-08-13 09:36
2004.09.26
Как сделать, чтобы шапка формы в XP выглядела в классическом виде


9-1085863701
kas-t
2004-05-30 00:48
2004.09.26
DelphiX: Antialiasing (сглаживание)


8-1088345691
DukeArtem
2004-06-27 18:14
2004.09.26
Помогите с движком!


6-1089846891
_Demik_
2004-07-15 03:14
2004.09.26
-= Поток медиа данных микрофона в нет или голосовой чат =-


3-1093872229
Relaxxx
2004-08-30 17:23
2004.09.26
Не могу толком записать в блоб поле картинку в оракл через ODAC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский