Вниз
Скачать: CL | DM;

Из 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
1-93004
да
2002-11-18 20:23
2002.11.28
Как перетащить из internet explorer ссылку в мою прогу?


6-93177
Vasechkin
2002-10-01 21:43
2002.11.28
В ФАКе Нашел вот это, а у муня ругается, где я подписал. Кто-нить


4-93297
Novichek
2002-10-13 15:36
2002.11.28
отслеживание (Удаления/Создания) программ


1-93128
Part
2002-11-18 09:29
2002.11.28
Как называется кнопка Enter ?


1-93090
AVD
2002-11-14 15:25
2002.11.28
Задачка....




   Наверх