powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADODataSet и автоматическое обновление
5 сообщений из 5, страница 1 из 1
ADODataSet и автоматическое обновление
    #34749513
Kenonen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Ислользую ADODataSet в BCB6.
Данные в ADODataSet получаю запросом от Oracle view, который объединяет несколько таблиц:

Код: plaintext
1.
2.
3.
ADODataSet->CommandText = "SELECT * FROM SOME_VIEW";
ADODataSet->CursorLocation = clUseServer;
ADODataSet->CursorType = ctKeyset;

ADODataSet связан с DBGrib, который занимается отображаением полученных данных.
Данные в процессе работы приложения изменяются с помощью вызова хранимых процедур.
Хотелось бы, чтобы после изменения данных, модифицированные значения полей, сразу же отображались в DBGrid.
Пока что делаю после каждого изменения ADODataSet->Requery(), но такой код IMHO неэффективен :(

Может есть решение этой задачи более правильное и изящное, чем переоткрытие всего набора данных?
...
Рейтинг: 0 / 0
ADODataSet и автоматическое обновление
    #34749742
Тныц.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что вы все так ADO любите? :) Поищи по форуму (+ по ветке Delphi) сколько раз возникали проблемы при использовании ADO для доступа к Oracle.
Не знаю, умеет ли что-нибудь подобное ADO (может Resync, но это не совсем то), но нормальные DataSet'ы умеют делать RefreshRecord - т.е. считывается только обновлённая строчка, а не весь набор заново. В ODAC'e, например, можно задать SQLRefresh (как запрос, так и хранимую процедуру) - получение одной строки по певичному либо другому уникальному ключу. Тогда при вызове RefreshRecord будет перечитываться активная запись набора данных.
...
Рейтинг: 0 / 0
ADODataSet и автоматическое обновление
    #34752497
Kenonen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не то что любим ADO, но так остается место для маневра в случаем изменения "движка" БД, можно безболезненно и почти без изменений использовать написанный ранее клиент.
По форуму искал включая ветку Delphi - не нашел ничего подходящего.
Пробовал использовать свойства ADO соединения:

Код: plaintext
1.
2.
3.
ADODSProviders->Properties->Item[WideString("Update Resync")]->Value = adResyncAll;
ADODSProviders->Properties->Item[WideString("Unique Table")]->Value = WideString("SOME_VIEW");
ADODSProviders->Properties->Item[WideString("Resync Command")]->Value = WideString("SELECT * FROM SOME_VIEW WHERE RECORD_ID=?");

Но это тоже не помогло.
...
Рейтинг: 0 / 0
ADODataSet и автоматическое обновление
    #34753147
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сколько бился не нашёл более "работчего" способа обновления
DataSet->Close();
DataSet->Open();
ну можно ещё запоминать где пользователь курсор оставлял через Bookmark
...
Рейтинг: 0 / 0
ADODataSet и автоматическое обновление
    #34756448
Kenonen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за советы.
Придется сейчас все оставить как есть, а на будущее отказаться от использования ADO с Oracle.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADODataSet и автоматическое обновление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]