| |
VB.NET - Ein- und UmsteigerZeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 09.09.10 11:30 |
| Sorry hatte in der falschen Rubrik gepostet.
Hallo,
ich habe mir das Chart Control von MS eingebunden und will nun die Daten auf den Achsen vertauschen.
Hier mein bisheriger Code:
Sub Load_chart(ByVal strSQL)
Dim ds As New DataSet
Dim dt As New DataTable
Dim dv As DataView
dv = New DataView(dt)
Dim da As New OleDbDataAdapter(strSQL, conn)
da.Fill(dt)
Chart1.Series.Clear()
Chart1.Palette = ChartColorPalette.Pastel
Chart1.DataBindTable(dv, "Jahr")
ds = Nothing
End Sub Bei Excel weiss ich, dass man zwischen Spalten und Zeilen wechseln kann.
Ich habe mal in Excel ein Makro aufgezeichnet und die Zeilen/ Spalten gewechselt.
Der VBA -Code sieht so aus.
ActiveChart.PlotBy = xlColumns Für das Chart Control müsste es doch eigentlich auch einen Befehl geben.
Kann mir jemand weiterhelfen.
Vielen Dank! | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: FZelle (Moderator) | Datum: 09.09.10 12:38 |
| Das "Chart Control von MS"?? Welches meinst Du?
Und nein, müssen muss es so eine Funktion nicht geben. | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 09.09.10 12:47 |
| Hallo FZelle,
ich meine folgendes
"Microsoft Chart Controls für Microsoft .NET Framework 3.5" | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 09.09.10 13:28 |
| Hallo DaveS,
ich habe eine bestehende Access Datenbank auf die ich mit einer Select Anweisung zugreife.
"Select Jahr, Jan, Feb, Mrz, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez from" & _
"Energiedaten2009 where MS_KEY='" & Split(tvw.SelectedNode.Text, " -")(1) & _
"'""" In meinem ChartControl möchte ich auf der X-Achse die Monate stehen haben und nach Jahr gruppieren
Wenn ich nun das Chart Control verwende kann ich auf der X-Achse nur einen Wert angeben.
deshalb benötige ich die Umschaltung von Zeilen nach Spalten wie in Excel möglich.
Mit CharType.Bar oder ChartType.Column kann ich nichts anfangen. Dies sind keine Eigenschaften vom Chart Objekt.
Könntest Du mir bitte genauer erklären was Du damit meinst | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 09.09.10 15:46 |
| Hallo DaveS,
genau so sieht meine Struktur der Access-Datentabelle aus, nur sind die Quartale eben Monate.
Nur müssten jetzt auf der X-Achse die Quartale stehen und in der Legende die Jahre.
Bei Excel ist dies bei <Entwurf - Zeile / Spalte wechseln> möglich.
Leider weiss ich nicht wie ich dem Beitrag einen Angang verpassen kann, sonst würde ich mal einen Screenshot beifügen.
Beitrag wurde zuletzt am 09.09.10 um 15:47:34 editiert. | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 10.09.10 13:18 |
| Hallo DaveS,
habe im I-net bisschen gestöbert und bin hier im vb@rchiv auch fündig geworden.
Ich habe folgende Funktion zum transponieren einer Datatable gefunden.
' Transponieren einer Datatable
' newName- der Name der neuen Datatable
' dt- die zu transponierende Datatable
' anfCol- Steuerparameter (-1 heißt, die neuen Spalten werden
' durchnummeriert;
' 0 heißt, es wird die erste Spalte für die neuen Spaltenheader verwendet
Public Function transposeDatatable(ByVal newName As String, _
ByVal dt As DataTable, _
Optional ByVal anfCol As Short = -1) As DataTable
Dim table As New DataTable(newName)
Dim r As DataRow
Dim ak As Short
If anfCol < 0 Then ak = 0 Else ak = 1
' neue Spalten durchnummerieren
For i As Integer = 0 To dt.Rows.Count - ak
If anfCol < 0 Then
table.Columns.Add(i.ToString)
Else
table.Columns.Add(dt.Rows(i).Item(anfCol))
End If
Next i
' Zeilen aus Spalten zusammenstellen
For k As Integer = ak To dt.Columns.Count - 1
r = table.NewRow()
r(0) = dt.Columns(k).ToString
If anfCol < 0 Then
For j As Integer = 1 To dt.Rows.Count
r(j) = dt.Rows(j - 1)(k)
Next j
Else
For j As Integer = 0 To dt.Rows.Count - ak
r(j) = dt.Rows(j)(k)
Next j
End If
table.Rows.Add(r)
Next k
Return table
End Function Wenn ich in meinem Code
Sub Load_chart(ByVal strSQL)
Dim ds As New DataSet
Dim dt As New DataTable
Dim dt1 As New DataTable
Dim strTabname As String = "Test"
Dim dv As DataView
Dim da As New OleDbDataAdapter(strSQL, conn)
da.Fill(dt)
dt1 = transposeDatatable("dt1", dt, 0)
dv = New DataView(dt1)
dgv.DataSource = dt1
Chart1.Palette = ChartColorPalette.Pastel
Chart1.DataBindTable(dv)
ds = Nothing
End Sub diese Funktion mit der Option "0" aufrufe werden die Zeilen und Spalten auch vertauscht, aber die Jahresspalte wird nicht angezeigt.
die Tabelle sollte so aussehen:
Jahr 2008
---------
Jan xx
Feb xx
Mrz xx
usw.
ausehen tut sie wie folgt:
2008
----
xxx
xxx
xxx
usw
Ich steige nicht durch den Code der Funktion durch
um dies zu ändern. Weiss auch nucht ob sich dies ändern lässt.
Könntest du mir bitte helfen?
Danke! | |
Re: Zeilen / Spalten im Chart Control umschalten | | | Autor: Boehri | Datum: 11.09.10 22:29 |
| Hallo DaveS,
du bist mein Held. Das ist genau das was ich gesucht habe.
Vielen vielen Dank! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|