Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
Внизкак лучше загрузить данные в базу? (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c