Einzelnen Beitrag anzeigen

kdrexler

Registriert seit: 12. Mai 2012
3 Beiträge
 
Delphi 6 Professional
 
#3

AW: undefinierter Bezeichner (self)

  Alt 21. Nov 2023, 08:22
Hier die komplette unit.
Ustammdatenerfassung - aus deiser Unit kommt der Aufruf Fstammdatenspeichern.clik(self)

Delphi-Quellcode:
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.
  Mit Zitat antworten Zitat