Oppure

Loading
18/03/12 23:39
blaster
Salve,

sto realizzando un applicazione che si interfaccia con un database access (.mdb) e legga dei valori per poi realizzarne un grafico.

La parte della connessione al database è abbastanza facile, però ho dei problemi con l'uso della libreria per creare il grafico.


 
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=C:\test\database.mdb")

        Dim cmd As OleDbCommand = New OleDbCommand("SELECT data,valore FROM tabella", con)

        con.Open()

        Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)

        Dim myDataSet As DataSet = New DataSet()

        myDA.Fill(myDataSet, "tabella")

        DataGridView1.DataSource = myDataSet.Tables("tabella").DefaultView

        con.Close()

        con = Nothing




Una volta presi i dati dal tatabase gli inserisco nel DataGridView1, dopo, vorrei prendere la prima colonna del database che sarebbe la data (e inserirla nell'asse X) con i relativi valori contenuti nella seconda colonna (inserendoli nell'asse Y).


Per generare il grafico utilizzo codice, tratto dagli esempi che vengono forniti con la dll

 
 Private Sub CreateGraph(ByVal zgc As ZedGraphControl)
        ' Get a reference to the GraphPane
        Dim myPane As GraphPane = zg1.GraphPane

        ' Set the titles
        myPane.Title.Text = "Storico temperature"
        myPane.YAxis.Title.Text = "Temperature"
        myPane.XAxis.Title.Text = "Data"

        ' Make up some random data points
        Dim x As Double, y As Double
        Dim list As New PointPairList()

        num1 = DataGridView1.RowCount

        For i As Integer = 1 To 24
            x = New XDate(1995, 5, i + 11)
            y = (i)
            list.Add(x, y)
        Next

        ' Generate a red curve with diamond
        ' symbols, and "My Curve" in the legend
        Dim myCurve As CurveItem = myPane.AddCurve("My Curve", list, Color.Red, SymbolType.Diamond)

        ' Set the XAxis to date type
        myPane.XAxis.Type = AxisType.Date

        ' Tell ZedGraph to refigure the axes since the data 
        ' have changed
        zg1.AxisChange()
    End Sub





In questo modo ho nell'asse X la data, ma non riesco a stabilire anche l'ora in cui il punto deve essere inserito.
Come faccio a inserire l'ora poi a trasferire i vari valori presi dalla colonna sul grafico?

il link della DLL è
codeproject.com/…


Grazie mille!

aaa
19/03/12 8:51
Neo1986
Premesso che trattare la scala dei agli assi direttamente in formato data con zedgraph non sia una delle cose più semplici....

myPane.Scale.Format = "dd/MM/yy\nHH:mm:ss"


Se ho capito bene la tua seconda domanda.... per inserire i punti nel grafico devi fare così :

'Creo una nuova lista punti
Dim ListaPunti As New PointPairList

'Variabili associate ai punti
Dim x as integer = 1
Dim y as integer = 2

'indice per cicli
Dim index as integer = 0
For i As Int16 = InitialValue To GlobalCounter
                ListaPunti.Add(x, y)
Next

'creo l'oggetto linea
Dim curveGraph As LineItem

curveGraph = Graph1.GraphPane.AddCurve("", ListaPunti, Color.LimeGreen, SymbolType.None)
curveGraph.Line.Width = 3 * 3
curveGraph.Label.IsVisible = False

Graph1.Refresh()


Graph1 = Il grafico che hai disegnato nel form (il nome del controllo)

Spero di esserti stato utile, se hai bisogno di altro chiedi pure
Ultima modifica effettuata da Neo1986 19/03/12 8:52
aaa