Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как добраться до динамических свойств Properties класса ADOQuery

37K
10 июля 2008 года
russian_style
13 / / 06.07.2008
Кто нибудь из вас пользовался свойствами Update Resync из динамических свойств ADOQuery? Помогите мне до них добраться.
Или подскажите мне как обновить только одну изменённую запись вместо переоткрытия всего набора.
332
10 июля 2008 года
Valiant
416 / / 27.09.2004
Использовать кэширование не пробовали ???
37K
10 июля 2008 года
russian_style
13 / / 06.07.2008
Кэширование я не пробовал. Думаю оно тут не поможет.
37K
11 июля 2008 года
russian_style
13 / / 06.07.2008
Цитата: Valiant
Использовать кэширование не пробовали ???



Я имел ввиду обновление на стороне клиента.

332
11 июля 2008 года
Valiant
416 / / 27.09.2004
гм... ну вообщем это именно то что вам нужно.
При соединении с базой у клиента создаётся локальная копия базы, и после upplyupdates все изменённые записи обновляются в базе.
37K
11 июля 2008 года
russian_style
13 / / 06.07.2008
Извините я 9 лет не прикасался к компьютерам. Подзабыл слегка. Могли бы вы мне сделать маленький пример использования CashedUpdates и ApplyUpdates.
Если добавляю запись выхожу из неё, потом опять захожу и редактирую, жалуется что не может найти строку для изменения. Там есть поля автоинкрементные и со значениями по умолчанию. На сервере изменения происходят, на клиентском датасете они не отражаются пока не сделаете Опен() Клоуз() мне не хотелось бы переоткрывать базу когда можно обновить всего лишь одну запись.
1
12 июля 2008 года
kot_
7.3K / / 20.01.2000
Для этих целей стоит использовать связку: TADOQuary+TDataSetProvaider+TClientDataSet
37K
14 июля 2008 года
russian_style
13 / / 06.07.2008
Для этих целей стоит использовать связку: TADOQuary+TDataSetProvaider+TClientDataSet

Как?
332
14 июля 2008 года
Valiant
416 / / 27.09.2004
Цитата: russian_style

Если добавляю запись выхожу из неё, потом опять захожу и редактирую, жалуется что не может найти строку для изменения. Там есть поля автоинкрементные и со значениями по умолчанию.


Ничего не понял... куда выходите ??? куда заходите??? какую БД используете ???

Цитата: russian_style

На сервере изменения происходят, на клиентском датасете они не отражаются пока не сделаете Опен() Клоуз() мне не хотелось бы переоткрывать базу когда можно обновить всего лишь одну запись.



Не надо закрывать и снова открывать соединение просто обновите TableX->Refresh();

332
14 июля 2008 года
Valiant
416 / / 27.09.2004
Цитата: russian_style
Для этих целей стоит использовать связку: TADOQuary+TDataSetProvaider+TClientDataSet

Как?



скачайте книгу Архангельского по BCB6 там есть пример, просто долго приводить

37K
14 июля 2008 года
russian_style
13 / / 06.07.2008
Ладно. Подробно так подробно. Не злитесь что написал в двух местах. Я подумал что вопрос всё таки про БД. Я не програмирую давно но сейчас мне надо автоматизировать своё рабочее место. Это единственная причина почему я здесь. Программирую вечерами после работы так что извините если не успеваю читать правила форума.

База у меня АССESS. Язык С++Builder. Соединяюсь через АДО.
Так как я много буду переделывать прогу. решил отделить логику от реализации. Я создаю классы имитирующие объекты хранящиеся в БД. для обращения к БД эти классы пользуются методами считывания и записи в БД. Что бы сделать более универсальный способ обращения к БД пользуюсь SQL. В случае замены БД на какую нибудь серверную POSTGRE или MySQL я буду менять только методы считывания и записи в БД.

Натыкаюсь на мелкие проблемы с немелкими решениями.
Представьте что ваш DATASET скачал данные с БД. теперь вы добавляете новую запись и запись успешно добавлена. В этой записи есть инкрементное поле и поле со значениями по умолчанию. Как вы догадались эти поля заполнились значениями на серверной стороне, но на вашем DATASETе эти изменения не отражены. В результате чего если вы попытаетесь изменить только что добавленную и сохраненую запись АДО будет ругаться что не найдена строка для изменения. в АДО РЕКОРДСЕТАХ есть динамические свойства Update Criteria и Update Resync они решили бы мою проблему. Но до них почемуто из С++ Builder не добраться. Я считал С++ Builder мощным языком и она ощутима но здесь чувствую слабину и никто не знает что можно сделать. Думаю с этим как я понял сталкивались не только я. Но вразумительных ответов без использования Обжект Паскаля нет. Думаю вам будет это интересно поковыряться. Я тоже ковыряюсь но пока return 0.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог