none
[VB2010] Werte aus Datenbank sortieren und in einem Diagramm darstellen RRS feed

  • Frage

  • Hallo,

    ich arbeite zzT an einem Programm welches als Ergebniss ein Diagramm ausgeben soll. Im Diagramm dargestellt sein sollen verschiedene Werte sortiert nach einem bestimmten wert.

    Beispiel:

    Innerhalb einem Monat wurden 425 Zeilen erstellt. Diese soll er Groupieren nach Kalenderwoche und die Anzahl der Zeilen einer KW zählen (zb als Erg = KW 1 = 24 Zeilen| KW2 = 302 Zeilen.. usw). Nun soll das Programm (ggfalls mit Excel anbindung) für jede KW ein Balken in einem Diagramm darstellen. Dabei soll er aber immer nur die 6 letzten Kalenderwochen im Diagramm darstellen.

    Ich habe schon schon alle funktionen für die Berechnung der einzelenen Werte geschrieben. Zzt schreibe ich noch eine Funktion welche meine Ergebnisse in eine fortlaufende Excel Tabelle speichert.

    Mein Problem ist, das ich nun keine vorstellung hab, wie ich diesen filter einbauen kann, das er die Kalenderwochen groupiert und diese dann in meinem Diagramm darstellt.

    Donnerstag, 28. Februar 2013 12:03

Alle Antworten

  • Hi,

    die Selektion solltest Du auf Datenbankebene vornehmen, damit ist das sehr einfach gemacht.

    SELECT   DATEPART( WW, <Datumsspalte> ) AS Woche,
             COUNT( 1 ) AS Anzahl
    FROM     <Tabelle>
    GROUP BY DATEPART( WW, <Datumsspalte> )
    ORDER BY DATEPART( WW, <Datumsspalte> )

    Um ein Diagram zu erstellen, musst/solltest Du nicht Excel verwenden, es sei denn, Du brauchst das zwingend.

    Ich würde hier eher das Chart Control von Microsoft nehmen.

      http://msdn.microsoft.com/de-de/library/system.windows.forms.datavisualization.charting.chart.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Donnerstag, 28. Februar 2013 12:13
    Moderator
  • hmm... ich hänge irgendwie.

    Mein aktueller Befehl zählt alle befüllten Zeilen in meiner Datenbank.

    "SELECT COUNT(*) FROM WKZ_Anfrage Where WKZ_VORLAUF>240"

    Ich habe mir eine Funktion geschrieben die aus dem Zeitstempel die KW berechnet damit ich alle Werte einer KW zusammenzählen kann.

    Wie schreibe ich nun mein Befehl um, so das er alle Werte aus zb KW1 zählt, dann alle aus KW2 usw usw

    Freitag, 1. März 2013 09:07
  • Danke hab das Problem gelöst

    Freitag, 1. März 2013 10:25
  • Danke hab das Problem gelöst

    Und wie? Falls mal jemand ein ähnliches Problem hat, freut er sich bestimmt, die Lösung hier nachlesen zu können :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 1. März 2013 10:43
    Moderator
  • Als erstes habe ich die Kalenderwochen berechnet.

    DatePart(DateInterval.WeekOfYear, CDate(Felder(iA, 0)), FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1)

    Mit der KW war es nun einfach die KWs zu Sortieren und die zeilen zu zählen.

    SELECT spalteKW, COUNT(*) AS variable FROM table WHERE spalteZahl>Wert GROUP BY spalteKW

    Mit der "variable", konnte ich nun weiterarbeiten oder direkt in tabellen speichern.
    Montag, 4. März 2013 06:44
  • Hi,
    aber vergiß nicht, dass Deine Berechnung der Kalenderwoche in Deutschland und Europa nicht in jedem Jahr stimmt, d.h. nicht nach DIN EN 28601 rechnet.
     
    --
    Peter Fleischer
    Montag, 4. März 2013 07:42