| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Ну судя по статье, Вы уже нарушили рекомендации для ключевого поля
см 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 для ключевого поля? Если такие установки оптимальны для приложения, почему они не выставлены по умолчанию? Все это похоже на шаманство. |