Как добраться до динамических свойств Properties класса ADOQuery
Или подскажите мне как обновить только одну изменённую запись вместо переоткрытия всего набора.
Использовать кэширование не пробовали ???
Кэширование я не пробовал. Думаю оно тут не поможет.
Цитата: Valiant
Использовать кэширование не пробовали ???
Я имел ввиду обновление на стороне клиента.
При соединении с базой у клиента создаётся локальная копия базы, и после upplyupdates все изменённые записи обновляются в базе.
Если добавляю запись выхожу из неё, потом опять захожу и редактирую, жалуется что не может найти строку для изменения. Там есть поля автоинкрементные и со значениями по умолчанию. На сервере изменения происходят, на клиентском датасете они не отражаются пока не сделаете Опен() Клоуз() мне не хотелось бы переоткрывать базу когда можно обновить всего лишь одну запись.
Для этих целей стоит использовать связку: TADOQuary+TDataSetProvaider+TClientDataSet
Как?
Цитата: russian_style
Если добавляю запись выхожу из неё, потом опять захожу и редактирую, жалуется что не может найти строку для изменения. Там есть поля автоинкрементные и со значениями по умолчанию.
Ничего не понял... куда выходите ??? куда заходите??? какую БД используете ???
Цитата: russian_style
На сервере изменения происходят, на клиентском датасете они не отражаются пока не сделаете Опен() Клоуз() мне не хотелось бы переоткрывать базу когда можно обновить всего лишь одну запись.
Не надо закрывать и снова открывать соединение просто обновите TableX->Refresh();
Цитата: russian_style
Для этих целей стоит использовать связку: TADOQuary+TDataSetProvaider+TClientDataSet
Как?
Как?
скачайте книгу Архангельского по BCB6 там есть пример, просто долго приводить
База у меня АССESS. Язык С++Builder. Соединяюсь через АДО.
Так как я много буду переделывать прогу. решил отделить логику от реализации. Я создаю классы имитирующие объекты хранящиеся в БД. для обращения к БД эти классы пользуются методами считывания и записи в БД. Что бы сделать более универсальный способ обращения к БД пользуюсь SQL. В случае замены БД на какую нибудь серверную POSTGRE или MySQL я буду менять только методы считывания и записи в БД.
Натыкаюсь на мелкие проблемы с немелкими решениями.
Представьте что ваш DATASET скачал данные с БД. теперь вы добавляете новую запись и запись успешно добавлена. В этой записи есть инкрементное поле и поле со значениями по умолчанию. Как вы догадались эти поля заполнились значениями на серверной стороне, но на вашем DATASETе эти изменения не отражены. В результате чего если вы попытаетесь изменить только что добавленную и сохраненую запись АДО будет ругаться что не найдена строка для изменения. в АДО РЕКОРДСЕТАХ есть динамические свойства Update Criteria и Update Resync они решили бы мою проблему. Но до них почемуто из С++ Builder не добраться. Я считал С++ Builder мощным языком и она ощутима но здесь чувствую слабину и никто не знает что можно сделать. Думаю с этим как я понял сталкивались не только я. Но вразумительных ответов без использования Обжект Паскаля нет. Думаю вам будет это интересно поковыряться. Я тоже ковыряюсь но пока return 0.