17. Juni 2008 15:19
fnZeigeMonatsdaten(parMANr : Code[10];parMonat : Integer;parJahr : Integer)
//********************************************************************************
//*****
//********************************************************************************
varStartdatumL := fnHoleGrenzDatum(parMonat,parJahr,'ERSTER');
varEndeDatumL := fnHoleGrenzDatum(parMonat,parJahr,'LETZTER');
AnzahlWerktage := hFunktionen.fnArbeitstageImMonat(parMonat,parJahr);
varSuchDatumL := varStartdatumL;
tmpArbeitszeiten.RESET;
tmpArbeitszeiten.DELETEALL;
WHILE varSuchDatumL <= varEndeDatumL DO BEGIN
varZEArbeitszeitenL.RESET;
varZEArbeitszeitenL.SETRANGE("Personal Nr.", parMANr);
varZEArbeitszeitenL.SETRANGE(Datum, varSuchDatumL);
IF varZEArbeitszeitenL.FINDSET(FALSE) THEN BEGIN
tmpArbeitszeiten.INIT;
tmpArbeitszeiten."Personal Nr." := parMANr;
tmpArbeitszeiten.Datum := varSuchDatumL;
tmpArbeitszeiten.Mitarbeiter := varZEArbeitszeitenL.fnHoleMitarbeiterName(parMANr);
tmpArbeitszeiten.Erfassungszeit := fnLetzteArbeitszeitBuchung(parMANr,varSuchDatumL);
tmpArbeitszeiten.Startzeit := fnHoleMinStartzeit(parMANr,varSuchDatumL);
tmpArbeitszeiten.Endezeit := fnHoleMaxEndezeit(parMANr,varSuchDatumL);
tmpArbeitszeiten."Startzeit Abrechnung" :=
tmpArbeitszeiten.fnRundeAbrechnungszeit(TRUE,
CREATEDATETIME(varSuchDatumL,tmpArbeitszeiten.Startzeit));
tmpArbeitszeiten."Endezeit Abrechnung" :=
tmpArbeitszeiten.fnRundeAbrechnungszeit(FALSE,
CREATEDATETIME(varSuchDatumL,tmpArbeitszeiten.Endezeit));
IF varZEArbeitszeitenL.COUNT > 1 THEN BEGIN
tmpArbeitszeiten.Buchungsnotiz := 'mehrere Einträge';
tmpArbeitszeiten.Typ := '?';
tmpArbeitszeiten."Typ-Bezeichung" := 'Mehrfacheintrag';
END ELSE BEGIN
tmpArbeitszeiten.Buchungsnotiz := varZEArbeitszeitenL.Buchungsnotiz;
tmpArbeitszeiten.Typ := Typ;
tmpArbeitszeiten."Typ-Bezeichung" := varZEArbeitszeitenL."Typ-Bezeichung";
END;
tmpArbeitszeiten.Gruppierung := varZEArbeitszeitenL.Gruppierung;
tmpArbeitszeiten.Funktion := varZEArbeitszeitenL.Funktion;
tmpArbeitszeiten.INSERT;
END ELSE BEGIN
//Leerzeilen (fürs Wochenende /Feiertage) eintragen
tmpArbeitszeiten.INIT;
tmpArbeitszeiten."Personal Nr." := parMANr;
tmpArbeitszeiten.Mitarbeiter := tmpArbeitszeiten.fnHoleMitarbeiterName(parMANr);
tmpArbeitszeiten.Erfassungszeit := CREATEDATETIME(varSuchDatumL,TIME);
tmpArbeitszeiten.Datum := varSuchDatumL;
tmpArbeitszeiten.INSERT;
END;
varSuchDatumL := CALCDATE('1T',varSuchDatumL);
END;
//Anzeige der Daten per Messagebox
tmpArbeitszeiten.FINDFIRST;
REPEAT
msg := 'Datum: ' + FORMAT(tmpArbeitszeiten.Datum) + '\';
msg := msg + 'Mitarbeiter: ' + tmpArbeitszeiten.Mitarbeiter + '\';
msg := msg + 'Start: ' + FORMAT(tmpArbeitszeiten.Startzeit) + ' Ende: ' + FORMAT(tmpArbeitszeiten.Endezeit) + '\';
MESSAGE(msg);
UNTIL tmpArbeitszeiten.NEXT = 0;
tmpArbeitszeiten.SETVIEW('SORTING(Datum) ORDER(Ascending)');
CurrForm.UPDATE(FALSE);
17. Juni 2008 20:19
18. Juni 2008 07:29
18. Juni 2008 08:12
Natalie hat geschrieben:Hast du die Form genauso gemacht, wie die Form der Artikelverfolgungszeilen (6510 glaub ich) mit temp. Records umgeht? Achte dort auf die Form-Trigger.
Wenn du die Messagebox nicht anzeigst - erfolgt dann noch irgendwo ein FIND('-') auf die temp. Recordvariable?
Form - OnFindRecord(Which : Text[1024]) : Boolean
tmpArbeitszeiten := Rec;
IF NOT tmpArbeitszeiten.FIND(Which) THEN
EXIT(FALSE);
Rec := tmpArbeitszeiten;
EXIT(TRUE);
tmpArbeitszeiten.FINDFIRST;
REPEAT
msg := 'Datum: ' + FORMAT(tmpArbeitszeiten.Datum) + '\';
msg := msg + 'Mitarbeiter: ' + tmpArbeitszeiten.Mitarbeiter + '\';
msg := msg + 'Start: ' + FORMAT(tmpArbeitszeiten.Startzeit) + ' Ende: ' + FORMAT(tmpArbeitszeiten.Endezeit) + '\';
MESSAGE(msg);
UNTIL tmpArbeitszeiten.NEXT = 0;
tmpArbeitszeiten.RESET;
tmpArbeitszeiten.SETVIEW('SORTING(Datum) ORDER(Ascending)');
tmpArbeitszeiten.FIND('-');
CurrForm.UPDATE(FALSE);
18. Juni 2008 08:15
mespelage hat geschrieben:Versuche es mal mit einem "tmpArbeitszeiten.RESET;",
bevor du die tmp Tabelle abrufts.
Michael
18. Juni 2008 08:21
tmpArbeitszeiten.RESET;
tmpArbeitszeiten.FINDFIRST;
REPEAT
msg := 'Datum: ' + FORMAT(tmpArbeitszeiten.Datum) + '\';
msg := msg + 'Mitarbeiter: ' + tmpArbeitszeiten.Mitarbeiter + '\';
msg := msg + 'Start: ' + FORMAT(tmpArbeitszeiten.Startzeit) + ' Ende: ' + FORMAT(tmpArbeitszeiten.Endezeit) + '\';
MESSAGE(msg);
UNTIL tmpArbeitszeiten.NEXT = 0;
18. Juni 2008 08:28
mespelage hat geschrieben:ich meinte allerdings vor dem FINFIRST
18. Juni 2008 08:32
TempRec:= Rec;
IF NOT TempRec.FIND(Which) THEN
EXIT(FALSE);
Rec := TempRec;
EXIT(TRUE);
TempRec := Rec;
CurrentSteps := TempRec.NEXT(Steps);
IF CurrentSteps <> 0 THEN
Rec := TempRec;
EXIT(CurrentSteps);
18. Juni 2008 08:58
18. Juni 2008 09:04
18. Juni 2008 09:19
18. Juni 2008 10:41
18. Juni 2008 12:05
fnSetAbwesendeMitarbeiter()
//**********************************************************************
//***** Ermittlung von Nicht-Anwesenden Mitarbeitern.
//***** Definiton "Nicht anwesend":
//***** - Letzter Eintrag ist kein Eintragstyp 'A' an dem Tag
//***** - Letzte Endezeit < Ansichtszeit
//**********************************************************************
fnSetzeUeberschrift('Abwesende Mitarbeiter (Heute)');
varPruefZeitpunkt := TIME;
NAPAMitarbeiterL.SETRANGE(Status,NAPAMitarbeiterL.Status::anlegen,NAPAMitarbeiterL.Status::Aktiv);
IF NAPAMitarbeiterL.FINDSET(FALSE,FALSE) THEN BEGIN
REPEAT
varIstAbwesend := FALSE;
ArbeitszeitenL.RESET;
//Alles Anzeigen, was nicht Arbeitszeit ist
ArbeitszeitenL.SETRANGE("Personal Nr.",NAPAMitarbeiterL."Nr.");
ArbeitszeitenL.SETRANGE(Datum,TODAY);
ArbeitszeitenL.SETFILTER(Typ,'<>%1','A');
IF ArbeitszeitenL.FINDLAST THEN BEGIN
tmpArbeitszeiten.INIT;
tmpArbeitszeiten := ArbeitszeitenL;
tmpArbeitszeiten.INSERT;
varIstAbwesend := TRUE;
END;
IF NOT varIstAbwesend THEN BEGIN
ArbeitszeitenL.RESET;
ArbeitszeitenL.SETRANGE("Personal Nr.", NAPAMitarbeiterL."Nr.");
ArbeitszeitenL.SETRANGE(Datum, TODAY);
ArbeitszeitenL.SETRANGE(Typ, 'A');
ArbeitszeitenL.SETFILTER(Endezeit, '<>%1', 0T);
IF ArbeitszeitenL.FINDLAST THEN BEGIN
IF ArbeitszeitenL.Endezeit < varPruefZeitpunkt THEN BEGIN
tmpArbeitszeiten.INIT;
tmpArbeitszeiten := ArbeitszeitenL;
tmpArbeitszeiten.INSERT;
varIstAbwesend := TRUE;
END;
END;
END;
UNTIL NAPAMitarbeiterL.NEXT = 0;
END;
CurrForm.UPDATE(FALSE);
18. Juni 2008 13:13
18. Juni 2008 13:31
19. Juni 2008 10:51
19. Juni 2008 11:01