procedure TForm2.Button1Click(Sender: TObject);
var
mastersl : TStringList;
detailsl : TStringList;
fieldssl : TStringList;
logsl : TStringList;
ndx : Integer;
anz,i,po, datensaetze,fidx, flag,didx,wmax,lidx : Integer;
pfad, datei,fields, jetzt, fehlfeld,felder,werte :
string;
begin
OpenDialog1.Execute;
Listbox1.Items := OpenDialog1.Files;
mastersl := TStringList.Create;
// Master StringList
detailsl := TStringList.Create;
// Detail StringList
fieldssl := TStringList.Create;
// Felder StringList
logsl := TStringList.Create;
// Log StringList
for i :=0
to ListBox1.Items.Count -1
do
begin
pfad := Listbox1.Items[i];
datei := pfad;
po := pos('
\',datei);
while (po > 0)
do
begin
delete(datei,1,po);
po := pos('
\',datei);
end;
begin
Adoquery1.SQL.Text := '
select * from information_schema.tables where table_name=''
dpd_'+datei+'
''
' ;
adoquery1.Active := true;
end;
if adoquery1.RecordCount > 0
then
begin
logsl.Add('
Die Tabelle '+datei+'
wurde gefunden ');
fieldssl.Delimiter := '
|';
mastersl.LoadFromFile(pfad);
fields := mastersl.strings[5];
po := pos('
',fields);
delete(fields,1,po);
fieldssl.DelimitedText := fields;
wmax := fieldssl.count-1;
for fidx := 0
to wmax -1
do
begin
if felder = '
'
then
begin
felder := '
['+fieldssl.strings[fidx]+'
]';
end
else
begin
felder := felder + '
,['+fieldssl.strings[fidx]+'
]';
end;
end;
flag := 0;
fehlfeld := '
';
werte := '
';
for fidx := 0
to Pred(wmax)
do
begin
if werte = '
'
then
begin
werte := '
:wert'+inttostr(fidx);
end
else
begin
werte := werte +'
,:wert'+inttostr(fidx);
end;
end;
for fidx := 0
to Pred(wmax)-1
do
begin
Adoquery2.SQL.Text := '
select * from information_schema.columns where table_name=''
dpd_'+datei+'
''
and Column_name=''
'+fieldssl.strings[fidx]+'
''
' ;
AdoQuery2.Active := true;
if adoquery2.RecordCount > 0
then
begin
//logsl.Add('Das Feld '+fieldssl[fidx]+' wurde gefunden ');
try
detailsl.Delimiter := '
|';
// Trennzeichen der Einträge pro Zeile
mastersl.LoadFromFile(pfad);
for ndx := 7
to Pred (mastersl.Count)
do
begin
detailsl.Clear;
detailsl.DelimitedText := mastersl.Strings[ndx];
datensaetze := 0;
with arbeitsquery
do
begin
Close;
SQL.Text := '
INSERT INTO DPD_'+datei+'
('+felder+'
) VALUES ('+werte+'
)';
ParamCheck := True;
for didx := 0
to wmax -1
do
begin
if detailsl.strings[didx] = '
'
then
begin
Parameters.ParamByName('
wert'+inttostr(didx)).value := '
NULL';
logsl.add ('
wert'+inttostr(didx)+'
NULL');
end
else
begin
Parameters.ParamByName('
wert'+inttostr(didx)).value := detailsl.Strings[didx];
logsl.add ('
wert'+inttostr(didx)+'
'+detailsl.Strings[didx]);
end;
end;
Datensaetze := Datensaetze +1;
ExecSQL;
end;
end;
finally
FreeAndNil (mastersl);
FreeAndNil (detailsl);
end;
end
else
begin
flag := 1;
fehlfeld := fehlfeld + '
'+fieldssl[fidx];
logsl.Add('
Das Feld '+fieldssl[fidx]+'
wurde nicht gefunden ');
end;
end;
end
else
begin
logsl.Add(pfad +'
nicht gefunden');
logsl.Add('
------------------------------------------------');
logsl.Add('
');
end;
if flag = 0
then
begin
logsl.Add('
');
logsl.Add('
Die Datei '+pfad+'
wurde korrekt eingelesen');
logsl.Add('
es wurden '+inttostr(datensaetze)+'
Datensätze importiert');
logsl.Add('
------------------------------------------------');
logsl.Add('
');
end
else
begin
logsl.Add('
');
logsl.Add('
Das/Die Felder '+fehlfeld+'
wurden nicht gefunden.');
logsl.Add('
es wurden keine Datensätze aus der Tabellen '+datei+'
importiert');
logsl.Add('
------------------------------------------------');
logsl.Add('
');
end;
end;
jetzt := datetimetostr(now);
jetzt := StringReplace(jetzt, '
:', '
.', [rfReplaceAll]);
logsl.SaveToFile('
c:/import_log_'+jetzt+'
.txt');
end;