Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TDatasetProvider


Автор: Лена 1.12.2006, 13:31
У меня связь с базой такая: ADOQuery -> TDatasetProvider -> TClientDataset -> TDatasource грид
Всего семь таблиц, каждая связана своей цепочкой. У весх таблиц есть ключевое поле.

Cвойство UpdateMode у всех семи компонентов TDatasetProvider установлено у меня так: upWhereKeyOnly. 
Для полей, в редакторе полей ADOQuery и ClientDataset, свойство ProviderFlags для ключевого поля установлено так:
pfInUpdate = true
pfInWhere = false
pfInKey = true
pfHidden = false
Для всех остальных полей установки ProviderFlags такие:
pfInUpdate = true
pfInWhere = false
pfInKey = false
pfHidden = false
Для всех полей свойство Origin у меня пустое.
Об настройках этих свойств прочитала здесь: http://www.megalib.com/books/7/MIDASBasics.htm
Однако толком не могу понять. Скажите, такие настройки оптимальны для надежной работы приложения? Как выставить их правильно, чтобы все надежно работало?

Автор: Vyacheslav 1.12.2006, 14:30
Ну судя по статье, Вы уже нарушили рекомендации для ключевого поля
Цитата

Для нашего примера лучший подход состоит в том, чтобы установить [pfInUpdate, pfInWhere, pfInKey] в ProviderFlags поля DEPT_NO 

см pfInWhere

Автор: Лена 1.12.2006, 14:53
Спасибо.
Значит окончательный вариант такой:
Для ключевых полей таблиц так:
pfInUpdate = true
pfInWhere = true
pfInKey = true
pfHidden = false
Для остальных полей:
pfInUpdate = true
pfInWhere = false
pfInKey = false
pfHidden = false
Cвойство UpdateMode у всех семи компонентов TDatasetProvider  upWhereKeyOnly. 
Для всех полей свойство Origin пустое.
Такие ProviderFlags для полей надо установить во всех ADOQuery и ClientDataset-ах или только во всех полях ADOQuery?

У меня раньше появлялась ошибка: 'Record was changed by another user', потом после моих изменений она пропала. Надеюсь, она снова не появиться после добавления pfInWhere = true для ключевого поля? Если такие установки оптимальны для приложения, почему они не выставлены по умолчанию?
Все это похоже на шаманство.   smile 





Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)