Когда вы используете ADODataSet1.LoadFromFile('c:\test.xml')
, вы фактически создаете отключенный DataSet
.
Ваш вариант заключается в создании временной погрешности TADODataSet
(MyXMLDataSet
).
MyXMLDataSet
не нужен объект Connection
(или строка подключения).
Использовать MyXMLDataSet.LoadFromFile('c:\test.xml')
, а затем прокручивать его по строкам и публиковать новые строки до ADOTable1
или редактировать существующие строки.
Вот пример:
MyXMLDataSet := TADODataSet.Create(nil);
try
MyXMLDataSet.LoadFromFile('c:\test.xml');
ADOTable1.Connection.BeginTrans;
try
while not MyXMLDataSet.Eof do
begin
if not ADOTable1.Locate('ID', MyXMLDataSet.FieldByName('ID').AsString, []) then
begin
// add new record
ADOTable1.Append;
ADOTable1.FieldByName('ID').AsString := MyXMLDataSet.FieldByName('ID').AsString;
// other fields...
ADOTable1.Post;
end
else
begin
// edit record
end;
MyXMLDataSet.Next;
end; // while
ADOTable1.Connection.CommitTrans;
except
ADOTable1.Connection.RollbackTrans;
raise;
end;
finally
MyXMLDataSet.Free;
end;
Примечание: приведенный выше код не оптимизирован/тестирование.
Есть ли способ загрузить данные в мой набор данных ADOTable1.LoadFromFile ('c: \ test.xml') таким образом не применяет данные к моей базе данных –