Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 nur mal so ne frage du willst ja ein Zeiterfassungsprogramm schreiben, doch soll er nur die Arbeitszeit/Pausezeit erfassen oder soll er alles erfassen jedes kommen/gehen ? Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages. Zitieren
lbm1305 Geschrieben 27. September 2010 Geschrieben 27. September 2010 Er soll jedes Kommen/Gehen einzeln erfassen. Die einzelnen Zeiten dann in jeweils seperaten Spalten ausgeben und gleichzeitig jede neue Buchung berechnen. Die derzeit angesammelte Arbeitszeit und die gesammte Pausenzeit des Tages. Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting. Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Was hat eigentlich das Thema "Kommen/Gehen Zeiten" mit dem Betreff dieses Themas zu tun? Neues Problem / neue Frage = neuer Thread / neues Posting. Das Problem resultiert aus dem Lösungsweg des ersten Problems und hängt deswegen mit diesem Thread zusammen. Ich hab zwar jetzt ne Lösung gefunden, diese ist aber denke ich Code mäßig zu lang als dass ich sie hier posten könnte. Trotzdem danke für die Hilfe. Zitieren
lbm1305 Geschrieben 27. September 2010 Geschrieben 27. September 2010 Aus dem Problem am Threadanfang ist ein weitere Problem resultiert. Nur was ist, wenn jemand ein gleiches oder ähnliches Problem zwecks dem DateTime hat? Der findet anhand des Themas keine Bezug zu seinem / Deinem zweiten Problem. Daher neues Thema aufmachen, mit einem Verweis auf Dein vorheriges Problem. Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Ob es nun eine String Variable ist die ich bekannt machen möchte, oder eine DateTime Variable ist doch herzlich egal? Wenn ich Probleme hätte einen Anker mit meinem kleinen Sportboot zu werfen und hier die Lösung finden würde, würde ich doch auch wieder hier posten, wenn ich das gleiche Problem in größeren Ausmaßen bei einem Hochseetanker hätte, oder? Wie gesagt, das Problem ist aus meiner Sicht eh erledigt, die Lösung ist allerdings zu lang um sie hier zu posten. Nur soviel: Mühevolle Kleinstarbeit und Fehleranfälligkeit³ die es jetzt noch ausmerzen werde. Trotzdem danke. Zitieren
lbm1305 Geschrieben 27. September 2010 Geschrieben 27. September 2010 Klug******erModus an: Wenn mir jemand sagen könnte, wie ich am besten die einzelnen Kommen + Gehen am besten in verschiedene Variablen abspeichern kann, wäre das für mich ein großer Schritt nach vorne. Klug******erModus aus: Hmm...passt nicht ganz zu Deiner letzten Aussage. Aber bitte... Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Dann Entschuldige bitte, wenn ich mich falsch ausgedrückt habe. Fakt ist, ich sitze ja wohl vor meinem Projekt und weiß, was für ein Problem ich habe. Btw. ich glaube genau das ist es, was 2K1.inc meinte... @Mod, kann das bitte jemand Schließen? Denke kaum, dass Diskussionen um des Kaisers Bart irgendjemand etwas bringen. Zitieren
lbm1305 Geschrieben 27. September 2010 Geschrieben 27. September 2010 Trotzdem wäre ich an der Lösung interessiert :roll: Man kann diese ja kürzen und mit einem kleinen Kommentar beschreiben. Laut dem Thema geht es ja um die Sichtbarkeit einer / mehrerer Variablen (int, DateTime). Also was möchte mehr :-) Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Bsp. GehenBuchung: private void btnGehen_Click(object sender, EventArgs e) { Counter++; if (Counter % 2 == 1) { MessageBox.Show("Gehen bereits gebucht!"); Counter--; } else { if (cbZeit.Checked) { string Gehen = txtGehen.Text; Gehen = Gehen.Replace(".", ":"); Gehen = Gehen.Replace(",", ":"); DateTime GehenZ; if (DateTime.TryParseExact(Gehen, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out GehenZ)) { MessageBox.Show("Manuelle Buchung gespeichert"); GehenZs[bi] = Gehen; bi++; } else { MessageBox.Show("Ungültiges Zeitformat!"); } } else { string Gehen2 = DateTime.Now.ToShortTimeString(); GehenZs[bi] = Gehen2; bi++; } } } Sieht beim Kommen Button quasi gleich aus. Verarbeitung: //Zeitspannen für Arbeitszeit und Pausenzeitberechnung int r = 0; DateTime KO = DateTime.Parse(KommenZs[r]); DateTime Ge1 = DateTime.Parse(GehenZs[r]); DateTime KO2 = new DateTime(); DateTime KO3 = new DateTime(); DateTime KO4 = new DateTime(); DateTime Ge2 = new DateTime(); DateTime Ge3 = new DateTime(); DateTime Ge4 = new DateTime(); DateTime Tester = new DateTime(); TS1 = Ge1 - KO; string Arbeit1 = TS1.ToString(); txtArbeitszeit.Text = Arbeit1; r++; //Arbeitszeit if (KommenZs[r] != null && GehenZs[r] != null) { KO2 = DateTime.Parse(KommenZs[r]); Ge2 = DateTime.Parse(GehenZs[r]); TS2 = Ge2 - KO2; string Arbeit2 = TS2.ToString(); TimeSpan Zwischenergebnis = TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis.ToString(); r++; } if (KommenZs[r] != null && GehenZs[r] != null) { KO3 = DateTime.Parse(KommenZs[r]); Ge3 = DateTime.Parse(GehenZs[r]); TS3 = Ge3 - KO3; string Arbeit2 = TS3.ToString(); TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis2.ToString(); r++; } if (KommenZs[r] != null && GehenZs[r] != null) { KO4 = DateTime.Parse(KommenZs[r]); Ge4 = DateTime.Parse(GehenZs[r]); TS3 = Ge4 - KO4; string Arbeit3 = TS4.ToString(); TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis3.ToString(); r++; } //PausenZeit int p = 0; if (KO2 > Tester) { TS5 =KO2 - Ge1 ; TimeSpan Zwischenergebnis4 = TS5; txtPausenzeit.Text = Zwischenergebnis4.ToString(); p++; if (GehenZs[p] != null && KO3 > Tester) { TS6 = KO3 - Ge2; TimeSpan Zwischenergebnis5 = TS6 + TS5; txtPausenzeit.Text = Zwischenergebnis5.ToString(); p++; } if (GehenZs[p] != null && KO4 > Tester) { TS7 = KO4 - Ge3; TimeSpan Zwischenergebnis6 = TS7 + TS6 + TS5; txtPausenzeit.Text = Zwischenergebnis6.ToString(); p++; } Ausgabe: //Ausgabe an TXT Datei int ZN = 1; string Prüfung; while ((Prüfung = NewTime.ReadLine(@"C:\WinZeitLog.txt", ZN)) != "") { ZN++; } NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString() + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) + " Arbeitszeit: " + (Ge1 - KO), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "------- ENDE DES TAGES -------", false); Sicher keine Musterlösung, aber es funktioniert. Hab allerdings noch n Rechenfehler drinn, den ich gerade suche. Zitieren
Klotzkopp Geschrieben 27. September 2010 Geschrieben 27. September 2010 //Arbeitszeit if (KommenZs[r] != null && GehenZs[r] != null) { KO2 = DateTime.Parse(KommenZs[r]); Ge2 = DateTime.Parse(GehenZs[r]); TS2 = Ge2 - KO2; string Arbeit2 = TS2.ToString(); TimeSpan Zwischenergebnis = TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis.ToString(); r++; } if (KommenZs[r] != null && GehenZs[r] != null) { KO3 = DateTime.Parse(KommenZs[r]); Ge3 = DateTime.Parse(GehenZs[r]); TS3 = Ge3 - KO3; string Arbeit2 = TS3.ToString(); TimeSpan Zwischenergebnis2 = TS3 + TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis2.ToString(); r++; } if (KommenZs[r] != null && GehenZs[r] != null) { KO4 = DateTime.Parse(KommenZs[r]); Ge4 = DateTime.Parse(GehenZs[r]); TS3 = Ge4 - KO4; string Arbeit3 = TS4.ToString(); TimeSpan Zwischenergebnis3 = TS4 + TS3 + TS2 + TS1; txtArbeitszeit.Text = Zwischenergebnis3.ToString(); r++; }[/code] Dreimal der gleiche Code. Schleife? [code] NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO.ToShortTimeString() + " Gehen" + ": " + Ge1.ToShortTimeString().PadLeft(2,pad) + " Arbeitszeit: " + (Ge1 - KO), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO2.ToShortTimeString() + " Gehen" + ": " + Ge2.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge2 - KO2), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO3.ToShortTimeString() + " Gehen" + ": " + Ge3.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge3 - KO3), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Kommen" + ": " + KO4.ToShortTimeString() + " Gehen" + ": " + Ge4.ToShortTimeString().PadLeft(2, pad) + " Arbeitszeit: " + (Ge4 - KO4).ToString().PadLeft(2, pad), false); ZN++; NewTime.WriteLine(@"C:\WinZeitLog.txt", ZN, "Gesamte Arbeitszeit: " + (TS1 + TS2 + TS3 + TS4) + " Gesamte Pausenzeit: " + (TS7 + TS6 + TS5), false); ZN++;Auch hier: Schleife? Copy&Paste-Programmierung solltest du dir ganz dringend abgewöhnen. Oder dich schon mal damit abfinden, dass du jeden Fehler n-mal fixen musst. Mit "funktioniert" solltest du dich nicht zufrieden geben. Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege. ich möchte ja für jeden wert einen eigenen string haben. Zitieren
2K1.INC Geschrieben 27. September 2010 Geschrieben 27. September 2010 ich würd gern ne schleife draus machen, jedoch wüsste ich nicht, wie ich die Variablen in der Schleife jedesmal so ändere, dass ich auch die richtigen Werte kriege. ich möchte ja für jeden wert einen eigenen string haben. hmm könntest du mal plx die ganze Aufgabenstellung posten ? o.O was es können muss etc... Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben. Die einzelnen Pausen werden dann in einem Textfile ausgegeben. So sieht die Ausgabe bisher aus: Sitzungsdatum: 27:09:2010 13:49:07 Kommen: 07:00 Gehen: 09:00 Arbeitszeit: 02:00:00 Kommen: 09:15 Gehen: 12:00 Arbeitszeit: 02:45:00 Kommen: 12:30 Gehen: 15:00 Arbeitszeit: 02:30:00 Kommen: 15:15 Gehen: 16:45 Arbeitszeit: 01:30:00 Gesamte Arbeitszeit: 08:45:00 Gesamte Pausenzeit: 01:00:00 ------- ENDE DES TAGES ------- Zitieren
2K1.INC Geschrieben 27. September 2010 Geschrieben 27. September 2010 Es soll jede Kommen und Gehen Buchung erfassen, die Zeitspanne zwischen den einzelnen Buchungen messen und einzeln wiedergeben + die Zeitspannen zusammen zählen und dann als Arbeits bzw. Pausenzeit seperat wiedergeben. Die einzelnen Pausen werden dann in einem Textfile ausgegeben. So sieht die Ausgabe bisher aus: Also für jeden Mitarbeiter wird dann täglich eine File angelegt... wird dann morgn wieder ne neue file angelegt oder in der altn weiter geschrieben ? Zitieren
Fraggla Geschrieben 27. September 2010 Autor Geschrieben 27. September 2010 Derzeit wird in die Alte rein geschrieben, sprich drunter. Daher bekommt das Programm dann auch den Benutzernamen, der derzeit aber noch total irrelevant ist. Edit: Das Programm ist nicht wirklich für den realen Einsatz geplant, sondern mehr als Übung. Ansonsten: Ja für jeden Benutzer eine File. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.