Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - database access e ZedGraph
Forum - C# / VB.NET - database access e ZedGraph

Avatar
blaster (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/02/2010

Segnala al moderatore
Postato alle 0:39
Lunedì, 19/03/2012
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.


Codice sorgente - presumibilmente VB.NET

  1. Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=C:\test\database.mdb")
  2.  
  3.         Dim cmd As OleDbCommand = New OleDbCommand("SELECT data,valore FROM tabella", con)
  4.  
  5.         con.Open()
  6.  
  7.         Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
  8.  
  9.         Dim myDataSet As DataSet = New DataSet()
  10.  
  11.         myDA.Fill(myDataSet, "tabella")
  12.  
  13.         DataGridView1.DataSource = myDataSet.Tables("tabella").DefaultView
  14.  
  15.         con.Close()
  16.  
  17.         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

Codice sorgente - presumibilmente VB.NET

  1. Private Sub CreateGraph(ByVal zgc As ZedGraphControl)
  2.         ' Get a reference to the GraphPane
  3.         Dim myPane As GraphPane = zg1.GraphPane
  4.  
  5.         ' Set the titles
  6.         myPane.Title.Text = "Storico temperature"
  7.         myPane.YAxis.Title.Text = "Temperature"
  8.         myPane.XAxis.Title.Text = "Data"
  9.  
  10.         ' Make up some random data points
  11.         Dim x As Double, y As Double
  12.         Dim list As New PointPairList()
  13.  
  14.         num1 = DataGridView1.RowCount
  15.  
  16.         For i As Integer = 1 To 24
  17.             x = New XDate(1995, 5, i + 11)
  18.             y = (i)
  19.             list.Add(x, y)
  20.         Next
  21.  
  22.         ' Generate a red curve with diamond
  23.         ' symbols, and "My Curve" in the legend
  24.         Dim myCurve As CurveItem = myPane.AddCurve("My Curve", list, Color.Red, SymbolType.Diamond)
  25.  
  26.         ' Set the XAxis to date type
  27.         myPane.XAxis.Type = AxisType.Date
  28.  
  29.         ' Tell ZedGraph to refigure the axes since the data
  30.         ' have changed
  31.         zg1.AxisChange()
  32.     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 è
http://www.codeproject.com/Articles...library-for-NET


Grazie mille!


PM
Avatar
Neo1986 (Ex-Member)
Pro


Messaggi: 97
Iscritto: 21/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 9:51
Lunedì, 19/03/2012
Premesso che trattare la scala dei agli assi direttamente in formato data con zedgraph non sia una delle cose più semplici....

Codice sorgente - presumibilmente Plain Text

  1. 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ì :

Codice sorgente - presumibilmente VB.NET

  1. 'Creo una nuova lista punti
  2. Dim ListaPunti As New PointPairList
  3.  
  4. 'Variabili associate ai punti
  5. Dim x as integer = 1
  6. Dim y as integer = 2
  7.  
  8. 'indice per cicli
  9. Dim index as integer = 0
  10. For i As Int16 = InitialValue To GlobalCounter
  11.                 ListaPunti.Add(x, y)
  12. Next
  13.  
  14. 'creo l'oggetto linea
  15. Dim curveGraph As LineItem
  16.  
  17. curveGraph = Graph1.GraphPane.AddCurve("", ListaPunti, Color.LimeGreen, SymbolType.None)
  18. curveGraph.Line.Width = 3 * 3
  19. curveGraph.Label.IsVisible = False
  20.  
  21. 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 il 19/03/2012 alle 9:52
PM