Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC - сохранение серверного набора данных на диск? / 6 сообщений из 6, страница 1 из 1
02.10.2003, 17:53
    #32282449
Guilty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
Есть задача, для которой оптимально было бы использовать следущий алгоритм работы:

1. получение набора данных с сервера
2. сохранение данных на диск и закрыть сессию
3. загрузить набор в память с диска и поработать с ними - внести изменения и т.д.
4. сохранить измененные данные на сервер

Вся проблема во втором пункте, он необходим для того, чтобы при непредсказуемом обрыве связи с сервером не терялся открытый набор данных, а так же изменения, которые уже успели в него внести.
Так вот при использовании ODAC - компонентов (ибо сервер Oracle), столкнулся с проблемой: компоненты предоставляющие доступ к набору данных, в том или ином виде, не имеют метод сохранения данных на диск. Но вот компонент VirtualTable имеет таковой метод, чем он идеально вроде бы подходит для решения 3-го пункта. Но мне непонятно, если есть способ загрузить данные с диска у VirtualTable, то сначала они там должны появиться, т.е. мы их должны получить с сервера? Я в ступоре. Т.е. я так понимаю компоненты работающие с серверными наборами данных должны иметь методы сохранения на диск в формате, который потом используется VirtualTable? А иначе какой смысл в этом компоненте.
...
Рейтинг: 0 / 0
03.10.2003, 09:17
    #32282781
Guilty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
Граждане, кто имеет какие-нибудь соображения по этому поводу, пожалуйста не проходите мимо.
...
Рейтинг: 0 / 0
03.10.2003, 16:59
    #32283590
Alex_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
Честно говоря, не совсем понятно в чем проблема ...
Есть два метода:
VirtualTable.LoadFromFile('prixorders.vtd'); - загрузить из файла;
VirtualTable.SaveToFile('prixorders.vtd'); - сохранить в файл;

Если есть вопросы то пиши ....
...
Рейтинг: 0 / 0
06.10.2003, 14:14
    #32285072
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
Не знаю как в ODAC, но можно положить на форму Provider + ClientDataSet. У провайдера указать ссылку на DataSet(откуда берутся данные), у CDS указать провайдера. ClientDataSet.Open и можно закрывать коннект/транзакцию и т.д. После редактирования CDS.SaveToFile(...) и CDS.LoadFromFile(). По желанию можно использовать в качестве файла XML или CDS(внутренний формат). Для посылки изменений на сервер. CDS.ApplayUpdates и все. Но надо посмотреть поддерживает ли провайдер ODAC.
...
Рейтинг: 0 / 0
07.10.2003, 01:01
    #32285667
Guilty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
2 Alex_D
Господи боже, ну конечно же, все делается двумя-тремя строчками..
Наподобие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  VirtualTable1.Open;
  with OraStoredProc1 do
  begin
    for i:= 0  to FieldCount- 1  do
      VirtualTable1.AddField(Fields[i].FieldName,
                                    Fields[i].DataType,
                                    Fields[i].DataSize);
    
    First;
    while not Eof do
    begin
      VirtualTable1.Append;
      for i:= 0  to FieldCount- 1  do
        VirtualTable1.Fields[i].Value := Fields[i].Value;
      VirtualTable1.Post;
      Next;
    end;
  end


и чего я полез в форум топик открывать? ;))
С другой стороны прочитал постинг Denis Uskov, не приходилось такими вещами пользоваться, теперь хоть узнал.. ;))
...
Рейтинг: 0 / 0
10.10.2003, 23:48
    #32290507
Guilty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC - сохранение серверного набора данных на диск?
И даже еще проще это делается, просто надо было внимательнее читать хелп:
Код: plaintext
1.
2.
  VirtualTable1.Assign(OraStoredProc1);
  VirtualTable1.Open;


А потом можно отключиться от сервера и сохранять данные или делать с ними все что угодно, не боясь разрыва с сервером:
Код: plaintext
1.
2.
3.
  OraSession1.Close;
......
  VirtualTable1.SaveToFile(...);

Все оказалось еще более просто
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ODAC - сохранение серверного набора данных на диск? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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