unit udatenabgleich;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
comobj, Excel2000, OleServer, ExtCtrls, ComCtrls, FileCtrl,
inifiles,
Mask, Menus, ExtDlgs,
Dialogs, StdCtrls, Buttons,
ustammdatenerfassung,
uinit,utypen,uconst;
type
Tfdatenabgleich =
class(TForm)
OpenDialog1: TOpenDialog;
lefamilienname: TLabeledEdit;
levorname: TLabeledEdit;
LEPersonennummer: TLabeledEdit;
BitBtn1: TBitBtn;
Excel: TExcelApplication;
ExcelWorkbook: TExcelWorkbook;
Sheet: TExcelWorksheet;
pbVerein: TProgressBar;
pbstammdatei: TProgressBar;
Label1: TLabel;
Label2: TLabel;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
const udatenabgleich_const = '
8.004/231120';
var
fdatenabgleich: Tfdatenabgleich;
Excel,sheet : variant;
excelzeile,excelspalte, Mitgliedsnummer : integer;
excel_dummy : zeile;
leer_person : tname;
leer_adresse : tadresse;
procedure Datenabgleich;
implementation
{$R *.dfm}
procedure Datenabgleich;
Begin
fdatenabgleich.Visible := true;
fdatenabgleich.Text := '
Datenabgleich - ' + udatenabgleich_const;
fdatenabgleich.Update;
fdatenabgleich.OpenDialog1.Execute;
assignfile(stammdatei,stammverzeichnisname + '
\' + datenverzeichnisname + '
\' + stammdateiname);
reset(stammdatei);
excel := createoleobject('
Excel.Application');
excel.Workbooks.Open(trim(fdatenabgleich.OpenDialog1.FileName));
sheet := excel.workbooks[1].worksheets[1];
excelzeile := 1;
fdatenabgleich.pbVerein.Max := 0;
repeat
dummy_zeile := excel.cells[excelzeile,1].value;
inc(excelzeile);
fdatenabgleich.pbverein.min := 0;
fdatenabgleich.pbVerein.Max := fdatenabgleich.pbVerein.Max +1;
until length(trim(dummy_zeile)) = 0;
fdatenabgleich.pbstammdatei.Max := filesize(stammdatei);
fdatenabgleich.pbstammdatei.Min := 0;
fdatenabgleich.pbstammdatei.Step := 1;
fdatenabgleich.pbverein.min := 0;
fdatenabgleich.pbVerein.Step := 1;
assign(adressdatei,stammverzeichnisname + '
\' + datenverzeichnisname + '
\' + adressdateiname);
reset(Adressdatei);
excelzeile := 1;
excelspalte := 1;
repeat
inc(excelzeile);
fdatenabgleich.pbVerein.StepIt;
excel_dummy := excel.cells[excelzeile,1].value;
reset(stammdatei);
gefunden := false;
fdatenabgleich.pbstammdatei.Min := 0;
repeat
fdatenabgleich.pbstammdatei.StepIt;
namens_init(person);
read(stammdatei,person);
fdatenabgleich.Update;
val(person.flag_string[personennummer_HV_const],mitgliedsnummer,valok);
if length(excel_dummy) > 0
then
if (trim(person.flag_String[personennummer_HV_const]) = trim(excel_dummy))
then
gefunden := true;
until (gefunden)
or (eof(stammdatei));
if gefunden
then
Begin
with person
do
Begin
n_name := trim(excel.cells[excelzeile,2].value);
v_name := trim(excel.cells[excelzeile,3].value);
fdatenabgleich.lefamilienname.Text := n_name;
fdatenabgleich.levorname.Text := v_name;
fdatenabgleich.LEPersonennummer.Text := excel_dummy;
fdatenabgleich.Update;
dummy_zeile := excel.cells[excelzeile,13].value;
person.geburtsdatum := strtodate(trim(dummy_zeile));
// Eintritt
person.flag_string[6] := excel.cells[excelzeile,14].value;
// Kündigung am
person.flag_string[4] := excel.cells[excelzeile,15].value;
// Kündigung zum
person.flag_string[5] := excel.cells[excelzeile,16].value;
seek(stammdatei,person.Nummer - 1);
write(stammdatei,person);
reset(adressdatei);
adressen_init(adresse);
seek(adressdatei,person.Nummer - 1);
read(adressdatei,adresse);
dummy_zeile := excel.cells[excelzeile,4].value;
adresse.adresse[plz_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,5].value;
adresse.adresse[ort_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,6].value;
adresse.adresse[strasse_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,11].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[email_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,7].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[telprivat_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,8].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[telgesch_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,9].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[mobil_const] := trim(dummy_zeile);
if length(trim(person.Verein)) <= 3
then
Begin
person.Verein := '
VFL Nürnberg';
person.flag_boolean[sg_const] := false;
person.flag_boolean[stammdatensatzaenderung_const] := true;
person.mannschaft := '
Liste Hauptverein';
end;
leer_person := person;
leer_adresse := adresse;
stammdatenerfassung(true);
person := leer_person;
adresse := leer_adresse;
abgleich(person,adresse);
end;
seek(adressdatei,adresse.Schwimmer_nummer - 1);
write(adressdatei,adresse);
if fstammdaten.Visible
then
fstammdaten.Visible := false;
end
else // Datensatz wird in SwimBase neu angelegt
Begin
namens_init(person);
adressen_init(adresse);
with person
do
Begin
n_name := trim(excel.cells[excelzeile,2].value);
v_name := trim(excel.cells[excelzeile,3].value);
fdatenabgleich.lefamilienname.Text := n_name;
fdatenabgleich.levorname.Text := v_name;
fdatenabgleich.LEPersonennummer.Text := excel_dummy;
fdatenabgleich.Update;
dummy_zeile := excel.cells[excelzeile,13].value;
person.geburtsdatum := strtodate(trim(dummy_zeile));
// Eintritt
person.flag_string[6] := excel.cells[excelzeile,14].value;
// Kündigung am
person.flag_string[4] := excel.cells[excelzeile,15].value;
// Kündigung zum
person.flag_string[5] := excel.cells[excelzeile,16].value;
adressen_init(adresse);
dummy_zeile := excel.cells[excelzeile,4].value;
adresse.adresse[plz_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,5].value;
adresse.adresse[ort_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,6].value;
adresse.adresse[strasse_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,11].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[email_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,7].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[telprivat_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,8].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[telgesch_const] := trim(dummy_zeile);
dummy_zeile := excel.cells[excelzeile,9].value;
if length(dummy_zeile) <> 0
then
adresse.adresse[mobil_const] := trim(dummy_zeile);
if length(trim(person.Verein)) <= 3
then
Begin
person.Verein := '
VFL Nürnberg';
person.flag_boolean[sg_const] := false;
person.flag_boolean[stammdatensatzaenderung_const] := true;
person.mannschaft := '
Liste Hauptverein';
end;
leer_person := person;
leer_adresse := adresse;
stammdatenerfassung(true);
person := leer_person;
adresse := leer_adresse;
abgleich(person,adresse);
fstammdaten.BSpeichernClick(self);
end;
if fstammdaten.Visible
then
fstammdaten.Visible := false;
end;
until (length(excel_dummy) = 0);
closefile(adressdatei);
closefile(stammdatei);
Excel.Quit;
//Beendet Excel
Excel := Unassigned;
fdatenabgleich.Close;
End;
end.