Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сбростить BDE базу данных в XML файл 
:(
    Опции темы
Poseidon
Дата 18.5.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 3
Всего: 133



Код
Procedure CreateXML(Alias:string; XMLName:string); 
 var i,j,x,y:integer; 
     f:TextFile; 
     Tables:TStringList; 
     Table:TTable; 

 Function FixValue(Value:string):string; 
   var n:integer; 
 begin 
   Result:=''; 
   For n:=1 to length(Value) do 
     if Value[n] in ['0'..'9','a'..'z','A'..'Z','.',',','-',' ','/','*',':','{','}','_','@','\','+','%'] then 
       result:=Result+Value[n] 
     else 
       result:=Result+'&#'+inttostr(ord(Value[n]))+';'; 
 end; 

 Procedure WriteValue(Indent:integer; Name, ParamName, ParamValue, Value:string); 
   var temp:string; 
   const Empty='                                                             '; 
 begin 
   Temp:=Copy(empty,1,Indent); 
   temp:=temp+'<'+Name; 
   if ParamName='' then temp:=temp+'>' else temp:=temp+' '+Paramname+'="'+FixValue(ParamValue)+'">'; 
   Temp:=Temp+FixValue(Value)+'</'+Name+'>'; 
   Writeln(f,temp); 
 end; 

 Procedure WriteTag(Indent:integer; Name, ParamName, ParamValue:string; Open:boolean=True); 
   var temp:string; 
   const Empty='                                                             '; 
 begin 
   Temp:=Copy(empty,1,Indent); 
   if Open then temp:=temp+'<'+Name else temp:=temp+'</'+Name; 
   if ParamName='' then temp:=temp+'>' else temp:=temp+' '+Paramname+'="'+FixValue(ParamValue)+'">'; 
   Writeln(f,temp); 
 end; 

begin 
 Tables:=TStringList.Create; 
 Table:=TTable.Create(nil); 
 try 
   session.GetTableNames(Alias, '*.db',False, False, Tables); 
   Table.DatabaseName:=Alias; 
   assignFile(f,XMLName); 
   reWrite(f); 
   WriteTag(0, Alias, '', '', True); 
   for i:=0 to Tables.Count-1 do 
     begin 
       Table.Active:=false; 
       Table.TableName:=Tables[i]; 
       WriteTag(1, Table.tablename, '', '', True); 
       Table.Active:=true; 
       Table.First; 
       For j:=0 to Table.RecordCount-1 do 
         begin 
           WriteTag(2, 'Rec', '', '', True); 
           For x:=0 to Table.fields.count-1 do   
             WriteValue(4, Table.fields[x].FieldName, '', '', Table.fields[x].asstring); 
           WriteTag(2, 'Rec', '', '', False); 
           Table.Next; 
         end; 
       WriteTag(1, Table.tablename, '', '', False); 
     end; 
   WriteTag(0, Alias, '', '', False); 
   CloseFile(f); 
 finally 
   Tables.free; 
   Table.free; 
 end; 

end; 



procedure TForm1.Button1Click(Sender: TObject); 
begin 
 CreateXML('MyDatabase', 'c:\XMLFile.xml'); 
end; 

XML формируется в ввиде 

 <MyDatabase> 
   <Table1> 
     <Rec> 
       <Field1>Value1</Field1> 
       <Field2>Value2</Field2> 
       <Field3>Value3</Field3> 
     </Rec> 
     <Rec> 
       <Field1>Value1</Field1> 
       <Field2>Value2</Field2> 
       <Field3>Value3</Field3> 
     </Rec> 
   </Table1> 
   <Table2> 
     <Rec> 
       <Field1>Value1</Field1> 
       <Field2>Value2</Field2> 
       <Field3>Value3</Field3> 
     </Rec> 
     <Rec> 
       <Field1>Value1</Field1> 
       <Field2>Value2</Field2> 
       <Field3>Value3</Field3> 
     </Rec> 
   </Table2> 
 </MyDatabase> 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.