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

Вниз

как лучше загрузить данные в базу? (ADO, Access)   Найти похожие ветки 

 
umbra ©   (2008-01-15 12:49) [0]

есть кусок таблицы, сохраненный в файл методом TADODataSet.SaveToFile. Загружаем его с помощью TADODataSet.LoadFromFile. Как лучше занести данные в базу?
Пока что ничего кроме UPDATE в цикле по записям придумать не могу.


 
palva ©   (2008-01-15 14:44) [1]

Чтобы не делать цикл можно использовать метод UpdateBatch


 
umbra ©   (2008-01-15 14:56) [2]


> Чтобы не делать цикл можно использовать метод UpdateBatch


А как? Я просто плохо понимаю, что происходит при загрузке датасета из файла, и не знаю, где почитать. Что, например, происходит с предыдущим значением свойства CommandText?


 
palva ©   (2008-01-15 16:42) [3]

Вы хотите загружать в открытый датасет? По-моему так не получится.
Перед загрузкой Dataset все равно закроется. Нужно загружать в другой (неоткрытый) датасет, при загрузке он откроется. Затем надо в цикле переносить данные. Других способов я не знаю.

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.Open;
ADOConnection1.Execute("create table table1 (i1 integer)");
ADOConnection1.Execute("insert into table1(i1) values(5)");
ADOConnection1.Execute("insert into table1(i1) values(6)");
ADOConnection1.Execute("insert into table1(i1) values(7)");
ADOConnection1.Execute("insert into table1(i1) values(8)");
ADOConnection1.Execute("create table table2 (i1 integer)");
ADOConnection1.Execute("insert into table2(i1) values(41)");
ADOConnection1.Execute("insert into table2(i1) values(42)");
ADOConnection1.Execute("insert into table2(i1) values(43)");
ADOConnection1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 AdoDataset1.Connection := ADOConnection1;
 AdoDataset2.Connection := ADOConnection1;
 AdoDataset1.CommandText := "table1";
 AdoDataset1.CursorType := ctStatic;
 AdoDataset1.LockType := ltReadOnly;
 AdoDataset1.CommandType := cmdTable;
 AdoDataset1.Open;
 ADODataset1.SaveToFile("file.xml");
 AdoDataset1.Close;
 ADODataset2.LoadFromFile("file.xml");

 AdoDataset1.CursorType := ctDynamic;
 AdoDataset1.CommandText := "table2";
 AdoDataset1.LockType := ltBatchOptimistic;
 AdoDataset1.CommandType := cmdTable;
 AdoDataset1.Open;
 while not ADODataset2.Eof do begin
   AdoDataset1.Append;
   AdoDataset1.Fields[0] := AdoDataset2.Fields[0];
   AdoDataset1.Next;
   AdoDataset2.Next;
 end;
 AdoDataset1.UpdateBatch();
 ADODataset1.Close;
 ADODataset2.Close;
end;

Может sniknik что предложит. Он знаток.


 
umbra ©   (2008-01-15 17:12) [4]


> Перед загрузкой Dataset все равно закроется. Нужно загружать
> в другой (неоткрытый) датасет, при загрузке он откроется.
>  Затем надо в цикле переносить данные.

спасибо. Я тоже уже понял, что без отдельного датасета и цикла не обойтись



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-1194027587
Slim
2007-11-02 21:19
2008.02.10
MDI форма заполняла главную форму (от ToolBar-а до самого низа)


2-1200553630
NaRuTo
2008-01-17 10:07
2008.02.10
Добавление файлов в программу.


4-1183512056
DagOT-R
2007-07-04 05:20
2008.02.10
Видимые окна


15-1199978159
vajo
2008-01-10 18:15
2008.02.10
Как подключить интернет в Win Vista Busines?


15-1200156462
Dmitry S
2008-01-12 19:47
2008.02.10
вопрос про prototype и js