Форум: "Базы";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];
ВнизИз XML в базу данных Найти похожие ветки
← →
bigbill (2002-11-08 07:13) [0]проблема при относительно большом числе "записей" (>1000)
Надо: из XML файлов добавлять (append) в базу данных.
Решение:
создаем файл трансформации:
ToDp.xtr
открываем XML:
xmltransform1.SourceXmlFile:=opendialog1.FileName;
присоединяем к клиенту:
ClientDataSet1.XMLData:=XMLTransform1.Data;
включаем:
ClientDataSet1.Active:=true;
результат выводится в DBGrid1.
Грабли: если элементов в XML мало (штук 20 - 30) все работает как часы, а если много - 1200 - то вылетает с сообщением:
Access violation MIDAS address 65ххх
Как победить эти грабли? и с чем они связаны понять не могу :((
После выбора нужных строчек в DBGrid1 (по кнопке) добавляю в базу (работает):
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
if dbgrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to dbgrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
table1.Append;
table1.FieldValues["name"]:=DBGrid1.Fields[0].asstring;
...
table1.FieldValues["last"]:=DBGrid1.Fields[9].asstring;
table1.Post;
end;
end;
Может быть сразу из XML в базу (а не через DBGrid)?
НЕ знаю как :((
Плиз, помогите!
Заранее спасибо!
← →
asmith (2002-11-08 18:13) [1]В MIDAS.dll достаточно много глюков, возможно, это один из них. Можно попробовать проапдейтить ее, в сети есть исправления, правда, не уверен в их официальности. Других выходов навскидку вижу два:
1. парсировать XML с помощью MSXML
2. использовать Delphi XML Mapping Tool.
А дальше - как уже сделано:
table1.Append;
table1.FieldValues["name"]:=strNameAttribute;
...
table1.FieldValues["last"]:=strLastAttribute;
table1.Post;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c