Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

DbGreed... Как сохранить данные?   Найти похожие ветки 

 
RomDron ©   (2003-09-24 16:56) [0]

При заполнении DBgreed с помощью хранимой процедуры (ADO) мы устанавливаем соединение и получаем данные. Но когда выставляем Active=false то Dbgreed очищается. Нельзя-ли этого избежать? К примеру я хочу отключится от базы но данные то в кэше хранятся? Почему нельзя ими воспользоваться? (Конечно стандартный Greed показывает токо часть данных, но во первых пусть хоть эту часть, а во вторых в некоторых нестандартных компонентах в кэш Greed`а можно скинуть все данные).


 
Vlad ©   (2003-09-24 17:01) [1]

Кто нибудь слышал о каком нибудь кэше в DBGride ? Или я чего-то упустил...
Данные можно скинуть в ClientDataSet, например.


 
Плохиш_   (2003-09-24 17:04) [2]

2RomDron © (24.09.03 16:56)

Ну так и сделай свой собственный нестандартный компонент


 
RomDron ©   (2003-09-24 17:06) [3]

Как я предполагал если Grid заполняется, то явно в кэш (Куда-же еще??).
А пример с ClientDataSet можно?


 
RomDron ©   (2003-09-24 17:07) [4]

Плохиш_ : Так значит стандартными средствами никак?


 
stud ©   (2003-09-24 17:07) [5]

а зачем aсtive=false?? если нужно отображать данные?


 
RomDron ©   (2003-09-24 17:08) [6]

Мне надо открыть соединение, получить данные в грид, закрыть соединение и просматривать полученное...


 
Vlad ©   (2003-09-24 17:11) [7]

>RomDron © (24.09.03 17:08) [6]
Говорю, для этих целей служит ClientDataSet. См. в хелпе, там все про него подробно описано.


 
Johnmen ©   (2003-09-24 17:21) [8]

>RomDron © (24.09.03 17:06) [3]
>Как я предполагал если Grid заполняется, то явно в кэш (Куда-же еще??).

Grid да, но не DBGrid. Чувствуешь разницу ? :)


 
RomDron ©   (2003-09-24 17:29) [9]

Спасибо!! А по ClientDataSet на русском описаница нету? Что-то его то я из внимания упустил. Как-то не пользовался никогда!


 
MsGuns ©   (2003-09-24 18:16) [10]

Дай датасету DisableControls и в гриде ничего не будет меняться


 
Vlad ©   (2003-09-24 18:27) [11]

>MsGuns © (24.09.03 18:16) [10]
Мда... только с данными то как работать потом ?


 
Alex_Raider ©   (2003-09-24 19:42) [12]

Вообще-то,
Cached Updates := true;

но....


 
MsGuns ©   (2003-09-24 19:52) [13]

>Vlad © (24.09.03 18:27) [11]
>>MsGuns © (24.09.03 18:16) [10]
>Мда... только с данными то как работать потом ?

Еще раз перечитал сабж внимательно. И не нашел там даже намека но то, что данные в НД (ну, гриде, блин !) должны редактиться !


 
RomDron ©   (2003-09-25 09:04) [14]

Данные в гриде НЕ ДОЛЖНЫ редактироваться (в гриде)!!! Все изменения происходят в своих формах с помощью StoredProc!! В том-то и дело! Необходимо только просмотр и выбор конкретной позиции.


 
Anatoly Podgoretsky ©   (2003-09-25 09:46) [15]

MsGuns © (24.09.03 19:52) [13]
И не найдешь, поскульку прямо сказано другое, просматириваться


 
Vlad ©   (2003-09-25 10:02) [16]

>Необходимо только просмотр и выбор конкретной позиции
DisableControls уже не подходит.
Короче. На русском документацию нигде не встречал, но кратко опишу:
Берешь и кидаешь на форму следующие компоненты:
Query->DataSetProvider->ClientDataSet->DataSource->DBGrid
Написано в том порядке, в каком компоненты подключать к друг другу.
Затем делаешь ClientDataSet.Active:=true и будет тебе счастье!
Query при этом останется закрыт, а данные будут сидеть, как ты говоришь, в кэше, называемом TClientDataSet и грид будет их отображать.


 
Delirium ©   (2003-09-25 11:56) [17]

"...Но когда выставляем Active=false то Dbgreed очищается..." -
если работаешь с ADO, то чтобы оставить активный RecordSet и разорвать соединение с сервером в Delphi достаточно сделать так:

...
ADOQuery1.Open;
ADOQuery1.Connection:=nil;
...


 
Vlad ©   (2003-09-25 12:04) [18]

>Delirium © (25.09.03 11:56) [17]
Интересно, никогда не пробовал, но подозреваю что в таком случае CacheSize нужно устанавливать такой, чтоб фетчились сразу все записи. А иначе туго придется :)


 
RomDron ©   (2003-09-25 12:12) [19]

Может заодно подскажите как подключить DataSetProvider->ClientDataSet ? Что-то я не найду где..


 
Vlad ©   (2003-09-25 12:14) [20]

У ClientDataSet есть проперть такая, ProviderName называется


 
Delirium ©   (2003-09-25 12:15) [21]

"CacheSize нужно устанавливать такой, чтоб фетчились сразу все записи. А иначе туго придется :)" - ничего подобного, в момент разрыва соединения все записи локализуются в RecordSet-e не зависимо от CacheSize (я, например, всегда держу его равным 1). Главное чтобы CursorLocation был clUseClient.


 
Vlad ©   (2003-09-25 12:23) [22]

>Delirium © (25.09.03 12:15) [21]
Ну вобщем да, увеличение кэшсайза - практически тоже самое что CursorLocation = clUseClient
RomDron © - Стоит попробовать.


 
RomDron ©   (2003-09-25 13:36) [23]

А когда ClientDataSet переводим в Active идет обновление данных из базы?


 
Vlad ©   (2003-09-25 14:40) [24]

>RomDron © (25.09.03 13:36) [23]
Если сделать Close;Open(или Active:=false;Active:=true) то получешь обновленный набор данных.
PS Неужели самому проверить слабо ?


 
RomDron ©   (2003-09-25 14:53) [25]

> Vlad
Я проверил потому и спрашиваю. Просто получается что програмно Active в Query выставлять не надо? И ClDatSet сам открывает, обновляет и закрывает соединение при изменении его Active?


 
Vlad ©   (2003-09-25 15:17) [26]

>RomDron © (25.09.03 14:53) [25]
Именно так.


 
Vlad ©   (2003-09-25 15:20) [27]

>RomDron © (25.09.03 14:53) [25]
Только не путай, Query конечно закрывается, а соединение с базой данных при этом остается открытым.



Страницы: 1 вся ветка

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.018 c
1-51241
phantom2040
2003-10-03 16:24
2003.10.16
Помогите


11-51156
Darts
2002-12-23 12:56
2003.10.16
Будет ли KOL портирован на FreePascal?


1-51301
Zhouck
2003-10-04 13:15
2003.10.16
Можно ли использовать в Delphi формы из C++Builder(с кодом)


1-51239
Andy BitOff
2003-10-02 21:56
2003.10.16
Как сделать выезжающую часть окно.


7-51537
Evgeniy
2003-07-31 09:32
2003.10.16
Изображение под формой