![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DbGreed... Как сохранить данные? [D6, MSSQL]
RomDron © (2003-09-24 16:56:00)
При заполнении DBgreed с помощью хранимой процедуры (ADO) мы устанавливаем соединение и получаем данные. Но когда выставляем Active=false то Dbgreed очищается. Нельзя-ли этого избежать? К примеру я хочу отключится от базы но данные то в кэше хранятся? Почему нельзя ими воспользоваться? (Конечно стандартный Greed показывает токо часть данных, но во первых пусть хоть эту часть, а во вторых в некоторых нестандартных компонентах в кэш Greed`а можно скинуть все данные).
Vlad (2003-09-25 15:20:00) [1]
>RomDron © (25.09.03 14:53) [25]
Только не путай, Query конечно закрывается, а соединение с базой данных при этом остается открытым.
Vlad (2003-09-25 15:17:00) [2]
>RomDron © (25.09.03 14:53) [25]
Именно так.
RomDron (2003-09-25 14:53:00) [3]
> Vlad
Я проверил потому и спрашиваю. Просто получается что програмно Active в Query выставлять не надо? И ClDatSet сам открывает, обновляет и закрывает соединение при изменении его Active?
Vlad (2003-09-25 14:40:00) [4]
>RomDron © (25.09.03 13:36) [23]
Если сделать Close;Open(или Active:=false;Active:=true) то получешь обновленный набор данных.
PS Неужели самому проверить слабо ?
RomDron (2003-09-25 13:36:00) [5]
А когда ClientDataSet переводим в Active идет обновление данных из базы?
Vlad (2003-09-25 12:23:00) [6]
>Delirium © (25.09.03 12:15) [21]
Ну вобщем да, увеличение кэшсайза - практически тоже самое что CursorLocation = clUseClient
RomDron © - Стоит попробовать.
Delirium (2003-09-25 12:15:00) [7]
"CacheSize нужно устанавливать такой, чтоб фетчились сразу все записи. А иначе туго придется :)" - ничего подобного, в момент разрыва соединения все записи локализуются в RecordSet-e не зависимо от CacheSize (я, например, всегда держу его равным 1). Главное чтобы CursorLocation был clUseClient.
Vlad (2003-09-25 12:14:00) [8]
У ClientDataSet есть проперть такая, ProviderName называется
RomDron (2003-09-25 12:12:00) [9]
Может заодно подскажите как подключить DataSetProvider->ClientDataSet ? Что-то я не найду где..
Vlad (2003-09-25 12:04:00) [10]
>Delirium © (25.09.03 11:56) [17]
Интересно, никогда не пробовал, но подозреваю что в таком случае CacheSize нужно устанавливать такой, чтоб фетчились сразу все записи. А иначе туго придется :)
Delirium (2003-09-25 11:56:00) [11]
"...Но когда выставляем Active=false то Dbgreed очищается..." -
если работаешь с ADO, то чтобы оставить активный RecordSet и разорвать соединение с сервером в Delphi достаточно сделать так:
...
ADOQuery1.Open;
ADOQuery1.Connection:=nil;
...
Vlad (2003-09-25 10:02:00) [12]
>Необходимо только просмотр и выбор конкретной позиции
DisableControls уже не подходит.
Короче. На русском документацию нигде не встречал, но кратко опишу:
Берешь и кидаешь на форму следующие компоненты:
Query->DataSetProvider->ClientDataSet->DataSource->DBGrid
Написано в том порядке, в каком компоненты подключать к друг другу.
Затем делаешь ClientDataSet.Active:=true и будет тебе счастье!
Query при этом останется закрыт, а данные будут сидеть, как ты говоришь, в кэше, называемом TClientDataSet и грид будет их отображать.
Anatoly Podgoretsky (2003-09-25 09:46:00) [13]
MsGuns © (24.09.03 19:52) [13]
И не найдешь, поскульку прямо сказано другое, просматириваться
RomDron (2003-09-25 09:04:00) [14]
Данные в гриде НЕ ДОЛЖНЫ редактироваться (в гриде)!!! Все изменения происходят в своих формах с помощью StoredProc!! В том-то и дело! Необходимо только просмотр и выбор конкретной позиции.
MsGuns (2003-09-24 19:52:00) [15]
>Vlad © (24.09.03 18:27) [11]
>>MsGuns © (24.09.03 18:16) [10]
>Мда... только с данными то как работать потом ?
Еще раз перечитал сабж внимательно. И не нашел там даже намека но то, что данные в НД (ну, гриде, блин !) должны редактиться !
Alex_Raider (2003-09-24 19:42:00) [16]
Вообще-то,
Cached Updates := true;
но....
Vlad (2003-09-24 18:27:00) [17]
>MsGuns © (24.09.03 18:16) [10]
Мда... только с данными то как работать потом ?
MsGuns (2003-09-24 18:16:00) [18]
Дай датасету DisableControls и в гриде ничего не будет меняться
RomDron (2003-09-24 17:29:00) [19]
Спасибо!! А по ClientDataSet на русском описаница нету? Что-то его то я из внимания упустил. Как-то не пользовался никогда!
Johnmen (2003-09-24 17:21:00) [20]
>RomDron © (24.09.03 17:06) [3]
>Как я предполагал если Grid заполняется, то явно в кэш (Куда-же еще??).
Grid да, но не DBGrid. Чувствуешь разницу ? :)