1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
unit UFonctionImexport;
interface
Uses
Classes,
Variants,
dialogs,
DB,
ADODB,
SysUtils;
procedure ExportToutesTables(ADataBase : String; AStrDelimiteur,
Aseparateur : Char; AExtension : string);
implementation
procedure ExportToutesTables(ADataBase : String; AStrDelimiteur, ASeparateur : Char; AExtention: string);
const
CnnectStrA = 'Provider=Microsoft.jet.OLEDB.4.0;Data Source=';
CnnectStrC = ';Persist Security info = false';
ProvStr = 'Microsoft.Jet.OLEDB.4.0';
InfoContenu1 = 'Les fichiers suivants ont été créés : ';
InfoContenu2 = 'Impossible de se connecter à : ';
var
TablesNum,
ChampNum : Integer;
ExtensionFichier : string;
InfoMess,
NomFichier,
Recstring,
RepTravail : string;
DataBaseList,
FichiersSortieList,
ChampsList,
TablesList : TStringlist;
VT : Variant;
Cnnect : TAdoconnection;
Tbl : TAdotable;
begin
ExtensionFichier := AExtension;
DataBaseList := TStringList.Create;
FichiersSortieList := TStringList.Create;
TablesList := Tstringlist.Create;
ChampsList := Tstringlist.Create;
RepTravail := 'c:\program files\temp\outboxdata\' //ou bien utiliser ExtractFileDir(ADatabase); par exemple
InfoMess := InfoContenu1 + #13#13;
Cnnect := TAdoconnection.Create(nil);
with Cnnect do begin
LoginPrompt := false;
CursorLocation := ClUseClient;
ConnectOptions := CoConnectUnspecified;
Mode := cmUnknown;
try
Cnnect.ConnectionString := CnnectStrA+Adatabase+CnnectStrC;
Cnnect.Provider := ProvStr;
except
Showmessage(InfoContenu2 +#13+''''+ ADatabase +'''');
end; // fin du try...
Connected := true;
end; // fin du with Cnnect
Tbl := TAdotable.Create(nil);
with tbl do begin
Active := false;
Connection := Cnnect;
CursorLocation := ClUseClient;
CursorType := ctKeyset;
LockType := ltOptimistic;
MarshalOptions := moMarshalAll;
ReadOnly := false;
TableDirect := false;
TableName := '';
end;
Cnnect.GetTableNames(TablesList, false);
for TablesNum :=0 to TablesList.Count-1 do begin
NomFichier := RepTravail +
'\'+
TablesList.Strings[TablesNum]+
ExtensionFichier;
Tbl.TableName := TablesList.Strings[TablesNum];
Tbl.Active := true;
FichiersSortieList.Clear;
Tbl.First;
While not Tbl.Eof do begin
RecString := '';
for ChampNum := 0 to Tbl.FieldCount-1 do begin
Vt := VarType(Tbl.Fields[ChampNum].Value);
Case Vt of vtinteger, vtextended, vtcurrency, vtint64 :
Recstring := Recstring+
Tbl.Fields[ChampNum].AsString else
Recstring := Recstring+
AStrdelimiteur+
tbl.Fields[Champnum].AsString+
AStrdelimiteur;
end; // fin du case
if champNum < (tbl.FieldCount-1) then
RecString := RecString+
ASeparateur;
//
end; // fin du for champnum.
fichiersSortieList.Add(RecString);
Tbl.Next;
end; // fin du while tbl.
FichiersSortieList.SaveToFile(NomFichier);
InfoMess := InfoMess+
NomFichier+
#13;
Tbl.Active := false;
end; // fin de tablenum.
DatabaseList.Free;
FichiersSortieList.Free;
TablesList.Free;
ChampsList.Free;
Cnnect.Free;
Tbl.Free;
showmessage(InfoMess);
end; // fin de la procedure. |
Partager