Autor Beitrag
okrim Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win 7
C# (VS 2010 Express)
BeitragVerfasst: Mo 03.03.14 18:57 
Ich beschäftige mich ja damit, grob übeschlagen beschäftige ich mich jetzt schon 30 Stunden genau damit, ich google und mach, nur fehlt mir hier der Ansatz aber irgendwie wird es schon klappen, zur not gebe ich halt den Urlaub wieder jeden Tag einzeln ein und mach mit den sachen weiter die ich alleine hinbekomme.

Trozdem Danke an alle!
Gruß Mirko
okrim Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win 7
C# (VS 2010 Express)
BeitragVerfasst: Di 04.03.14 22:36 
Hallo Th69,

wollte mal fragen ob das mit dem DateTime.DayOfWeek so in der Art gemeint hast?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
        public Dictionary<DateTime, DayType> GetListOfDayTypes(DateTime dtBeginDate, DateTime dtEndDate)
        {
            Dictionary<DateTime, DayType> result = new Dictionary<DateTime, DayType>();
            while (dtBeginDate <= dtEndDate)
            {
                if (dtBeginDate.DayOfWeek == DayOfWeek.Saturday || dtBeginDate.DayOfWeek == DayOfWeek.Sunday)
                    result.Add(dtBeginDate, DayType.Weekend); // Wochenende
                else if (dtBeginDate.IsFeiertag())
                    result.Add(dtBeginDate, DayType.Holiday); // Feiertag
                else
                    result.Add(dtBeginDate, DayType.WorkDay); // Arbeitstag
                dtBeginDate = dtBeginDate.AddDays(1);
            }
            return result;
        }


nur mit der Methode IsFeiertag(DateTime)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        //------------------------------------------------------------------------------------------------------------------------------------
        public bool IsFeiertag(DateTime dtDate)
        //------------------------------------------------------------------------------------------------------------------------------------
        {
            foreach (Feiertage feiertag in this._feiertagsMatrix[this._bundesLand])
            {
                if (dtDate == GetFeiertagDatum(feiertag, dtDate.Year))
                    returntrue );
            }
            return (false);
        }

komme ich nicht ganz klar, wie kann ich da IsFeiertag ersetzen?

Wäre nett wenn ihr mir nochmal einen Tipp geben könntet.


Gruß Mirko
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 05.03.14 00:35 
Zitat:
komme ich nicht ganz klar, wie kann ich da IsFeiertag ersetzen?


IsFeiertag ist die Methode eine Klasse der du deinen DateTime übergibst und einen Bool zurückbekommst.
Also die Klasse erzeugen die die Methode hat falls es noch keine Instanz dieser Klasse gibt und dann die Methode aufrufen.
Der Methode dann deinen dtBeginDate DateTime übergeben und den zurückgegeben Boolean prüfen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 05.03.14 11:17 
Hallo okrim,

sofern deine beiden geposteten Methoden innerhalb einer Klasse (dem Kalenderrechner) sind, einfach
ausblenden C#-Quelltext
1:
2:
else if (IsFeiertag(dtBeginDate))
    result.Add(dtBeginDate, DayType.Holiday); // Feiertag

so aufrufen.

Und ja, dein Code bzgl. DayOfWeek ist richtig so (evtl. solltest du diese Abfrage in eine Methode - wie von Ralf vorgeschlagen - packen).

Ich nehme mal an, du bist mit der Syntax von Erweiterungsmethoden (extension methods) nicht so vertraut (so wie Ralf die Methoden formuliert hat, z.B. from.IsFeiertag()). Dies entspricht einfach dem Aufruf IsFeiertag(from).

Für diesen Beitrag haben gedankt: okrim
okrim Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win 7
C# (VS 2010 Express)
BeitragVerfasst: Do 06.03.14 18:29 
Hallo Ralf,
hallo Th69,

ich danke auch erst mal recht Herzlich für eure Hilfe.

@ Th69
warum oder aus welchem Grund wäre es besser wenn ich die Abfrage vom Wochenende in eine Methode packe?

@ alle
dann habe ich das nächst Problem und zwar habe ich jetzt ja in der Klasse Kalenderrechner folgenden Code stehen
ausblenden C#-Quelltext
1:
public enum DayType { WorkDay, Weekend, Holiday }					

und
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
        public Dictionary<DateTime, DayType> GetListOfDayTypes(DateTime dtBeginDate, DateTime dtEndDate)
        {
            Dictionary<DateTime, DayType> result = new Dictionary<DateTime, DayType>();
            while (dtBeginDate <= dtEndDate)
            {
                if (dtBeginDate.DayOfWeek == DayOfWeek.Saturday || dtBeginDate.DayOfWeek == DayOfWeek.Sunday)
                    result.Add(dtBeginDate, DayType.Weekend); // Wochenende
                else if (IsFeiertag(dtBeginDate))
                    result.Add(dtBeginDate, DayType.Holiday); // Feiertag
                else
                    result.Add(dtBeginDate, DayType.WorkDay); // Arbeitstag
                dtBeginDate = dtBeginDate.AddDays(1);
            }
            return result;
        }


und wie Ralf gesagt hat habe ich in Form1, da wo ich das ganze dann auch in meine Datenbank schreiben will den restlichen Code von Ralf
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
            foreach (var tuple in GetListOfDayTypes(dtBeginDate, dtEndDate))
            {
                switch (tuple.Value)
                {
                    case DayType.WorkDay:
                        // Arbeitstag für tuple.Key eintragen
                        break;
                    case DayType.Weekend:
                        // Wochenende für tuple.Key eintragen
                        break;
                    case DayType.Holiday:
                        // Urlaub für tuple.Key eintragen
                        break;
                    default:
                        break;
                }
            }

nur erkennt das Form1 "GetListOfDayTypes" nicht da bekomme ich den Fehler "Der Name "GetListOfDayTypes" ist im aktuellen Kontext nicht vorhanden." muss ich dies noch von Kalenderrechner an Form1 übergeben?

Und wie ist das mit dem Enum sind da jetzt die Daten (z.B. Wochenende inkl. Datum) gespeichert?

Dank im voraus!!!
Gruß Mirko
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 06.03.14 18:38 
Ohoh.

Das nützt glaube ich rein gar nix wenn wir dir jetzt sagen was du machen musst. Du tust es dann einfach verstehst nicht warum und fragst dann was als nächstes zu tun ist.
Wir haben dir hier ein paar Einzelteile hingeworfen damit du dich damit beschäftigst und darüber verstehst was notwendig ist.

Im Moment scheint dir jegliches Verständnis für die Struktur einer Anwendung zu fehlen. Was sind Klassen, was sind Methoden, wie ruft man die auf etc.
Am besten solltest du nochmal die Bücher rauskrammen und ein paar Grundlagen objektorientierter Programmierung nachlesen sonst wir das hier nicht mehr als ~Fernsteuerung~.

Für diesen Beitrag haben gedankt: Christian S.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 06.03.14 19:51 
Ralf hat es gut auf den Punkt gebracht. Daher schließe ich an dieser Stelle das Thema auch, das hat keinen Sinn.

Und außerdem hat das Thema schon lange nichts mehr mit dem zu tun, was im Titel steht bzw. in welcher Sparte es ist.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.