vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Zeilen / 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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorFZelle (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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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"
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.10 12:55

Was Excel angeblich macht sagt mir wenig. Allgemein macht das aber wenig Sinn, weil x grundsätzlich fest ist, und y davon abhängig. Umgekehrt ist die Beziehung nicht gegeben. Wenn du einfach die Darstellung ändern willst kannst du CharType.Bar oder ChartType.Column verwenden. Für Line und andere Darstellungen geht das nicht.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.10 13:39

ChartType ist eine Eigenschaft des Series-Objekts. Sonst verstehe ich nicht wirklich was du meinst. Hast du vielleicht ein Bild von der Excel Darstellung?

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.10 15:00

Anhang:  AnhangmultiColumnChart.PNG (21k)  

Sowas wie im Anhang zB ist ganz leicht.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: Caddy
Datum: 09.09.10 15:03

Ich weiss ja nicht ob es hilft, aber hier mal ein ähnliches Beispiel mit Anleitung:

http://www.tutorials.de/visual-basic-tutorials/282954-tutorial-mschart.html

Gruss Caddy

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.10 16:14

Das ist schwieriger. Jede Spalte (aus einer Gruppe) ist eine andere Series. Sowas legt man an pro Spalte (Qx, Monat...) Die x und y Axes sind immer Spalten in der Tabelle. Du musst zuerst die Daten umwandeln. Ein Chart-Control ist ziemlich mächtig aber keine generelle Software um Daten zu manipulieren wie Excel. Mindestens so sehe ich das. Ich kenne längst nicht alles was mit MSChart machbar ist (kann auch gruppieren, sortieren usw).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 10.09.10 14:14

Anhang:  AnhangmultiColumnChart1.PNG (19k)  

Wie das hier?

    Private Function TransposeTable(ByVal inputTable As DataTable) As DataTable
        Dim outputTable As New DataTable()
 
        ' Add columns by looping rows
 
        ' Header row's first column is same as in inputTable
        outputTable.Columns.Add(inputTable.Columns(0).ColumnName.ToString())
 
        ' Header row's second column onwards, 'inputTable's first column taken
        For Each inRow As DataRow In inputTable.Rows
            Dim newColName As String = inRow(0).ToString()
            outputTable.Columns.Add(newColName)
        Next
 
        ' Add rows by looping columns        
        For rCount As Integer = 1 To inputTable.Columns.Count - 1
            Dim newRow As DataRow = outputTable.NewRow()
 
            ' First column is inputTable's Header row's second column
            newRow(0) = inputTable.Columns(rCount).ColumnName.ToString()
            For cCount As Integer = 0 To inputTable.Rows.Count - 1
                Dim colValue As String = inputTable.Rows(cCount)( _
                  rCount).ToString()
                newRow(cCount + 1) = colValue
            Next
            outputTable.Rows.Add(newRow)
        Next
 
        Return outputTable
    End Function
Der Code ist von einem CodeProject C# Beispiel http://www.codeproject.com/KB/database/TransposeTable.aspx.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zeilen / Spalten im Chart Control umschalten 
Autor: ModeratorDaveS (Moderator)
Datum: 10.09.10 14:27

Hier übrigens mein Code (ausser TransposeTable()).
    Private transpose As Boolean = True
 
    Private Sub multiLineOrBarChart()
 
        Dim dt As New DataTable("Date")
        dt.Columns.Add("Year", GetType(Integer))
        dt.Columns.Add("Q1", GetType(Integer))
        dt.Columns.Add("Q2", GetType(Integer))
        dt.Columns.Add("Q3", GetType(Integer))
        dt.Columns.Add("Q4", GetType(Integer))
 
        Dim r As New Random
 
        For i = 2001 To 2010
            Dim dr As DataRow = dt.NewRow
            dr("Year") = i
            dr("Q1") = CInt(r.NextDouble * 50000)
            dr("Q2") = CInt(r.NextDouble * 30000)
            dr("Q3") = CInt(r.NextDouble * 70000)
            dr("Q4") = CInt(r.NextDouble * 40000)
            dt.Rows.Add(dr)
        Next
 
        If transpose Then
            dt = TransposeTable(dt)
            dt.Columns(0).ColumnName = "Quarter"
 
            ' For transposed table
            Me.Chart1.DataSource = dt
            Me.Chart1.Series.Clear()
            For i = 1 To dt.Columns.Count - 1
                Dim s As Series = New Series("Series" & i.ToString())
                Me.Chart1.Series.Add(s)
                s.XValueMember = "Quarter"
                s.YValueMembers = dt.Columns(i).ColumnName
                s.LegendText = s.YValueMembers
                s.BorderWidth = 3
                s.ChartType = DataVisualization.Charting.SeriesChartType.Column _
                  ' or e.g. .Bar 
            Next
        Else
 
            ' For direct table
            Me.Chart1.DataSource = dt
            Me.Chart1.Series.Clear()
            For i = 1 To 4
                Dim s As Series = New Series("Series" & i.ToString())
                Me.Chart1.Series.Add(s)
                s.XValueMember = "Year"
                s.YValueMembers = "Q" & i.ToString()
                s.LegendText = s.YValueMembers
                s.BorderWidth = 3
                s.ChartType = DataVisualization.Charting.SeriesChartType.Column _
                  ' or e.g. .Bar 
            Next
        End If
 
        DataGridView1.DataSource = dt
 
    End Sub

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel