Autor Beitrag
fahrstuhl65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Sa 22.10.11 12:14 
Moderiert von user profile iconTh69: abgeteilt aus MSSQL - hochs und tiefs in einem zeitraum finden

Hi,

so ich bin jetzt weitergekommen, war ein paar Tage unterwegs.

Ich häng grade an einer Abfrage die mir die Anzahl der Tage in der DB auswirft,
den Wert brauch ich als Basis für eine Prozentzahl.

Mit welcher Abfrage kann ich also herausfinden, für wieviel Tage in der Datenbank
auch tatsächlich Datensätze vorhanden sind ? (für die Wochenende usw. sind ja keine
Datensätze vorhanden)

Hab schon einiges gegoogelt, finde da aber nichts ?
fahrstuhl65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Sa 22.10.11 13:03 
Ich habs jetzt aus dem Programm heraus gelöst über eine, wenn auch merkwürdige und komplizierte Schleife,
die aber scheinbar funktioniert:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
// hier holt er Start und Enddatum aus der DB damit das auch funktioniert, wenn
            // mehrere Monate dazu kommen
            DateTime Db_Anfang = Convert.ToDateTime(gesamtdatenTableAdapter.hole_Startdatum());
            DateTime Db_Ende = Convert.ToDateTime(gesamtdatenTableAdapter.hole_Enddatum());

            // Anzahl der Tage berechnen aus DB
            DateTime Start = Db_Anfang;
            DateTime Ende = Db_Ende;

            int zähler = 0;

            // zwei Variablen für den Durchlaufszeitraum schaffen und um die Zeitdifferenz erweitern
            DateTime Interval_Start = new DateTime (Db_Anfang.Year, Db_Anfang.Month, Db_Anfang.Day, 060000);
            DateTime Interval_Ende = new DateTime (Db_Anfang.Year, Db_Anfang.Month, Db_Anfang.Day, 230000);

            while (Interval_Start < Db_Ende)
            {
                
                double Anzahl = Convert.ToDouble(gesamtdatenTableAdapter.ZählenProTag(Interval_Start, Interval_Ende));
                

                if (Anzahl > 0)
                {
                    zähler = zähler +1;
                    
                }

                Interval_Start = Interval_Start.AddDays(1);
                Interval_Ende = Interval_Ende.AddDays(1);

            }


Nicht wirklich "hübsch", scheint das Problem aber auch zu lösen :D
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 22.10.11 15:49 
Ich wiederhole

Zitat:
weitere Fragen in diesen Thread bitte nur, wenn sie noch zum Titel passen - ansonsten: neue Frage - neuer Thread.