Mi gráfico de carga de datos de un DataGridView.

Quiero actualizar automáticamente el gráfico con los datos nuevos si los nuevos valores se insertan en el DataGridView.

Mi carta está obligado a table1 y table2 en mi DataGridView que se obtiene de los valores de un objeto DataTable. Aquí está una pequeña porción de código:

        Dim myData As New DataTable
        wcAdapter.SelectCommand = wcCommand
        wcAdapter.Fill(myData)

        Chart1.DataSource = myData

        Chart1.Series("Series1").ValueMemberX = "table1"
        Chart1.Series("Series1").ValueMembersY = "table2"

Aquí está el código completo:

 Try
wcconn.Open()
Dim wcCommand As New MySqlCommand()
''telesales name
' Dim wcQuery = "SELECT ID, Telesales, SUBSTRING(lastupdatedate, 1, 10) as 'Day', SUBSTRING(lastupdatetime FROM -9 FOR 6) as 'Time' FROM ratingout where Telesales='" & cbTelesales.Text & "' and lastupdatedate= '" & newDate & "' and lastupdatedate is not null and lastupdatetime is not null ORDER BY lastupdatetime ;"
' wcCommand.Connection = wcconn
' wcCommand.CommandText = wcQuery
Dim newDate As String
newDate = dateWorkCheck.Text
newDate = newDate.Replace("/", "-")
Dim y, m, d As String
y = newDate.Substring(6, 4)
m = newDate.Substring(3, 2)
d = newDate.Substring(0, 2)
newDate = y & "-" & m & "-" & d
Dim wcQuery = "SELECT ID, Telesales, lastupdatedate as 'Day', SUBSTRING(lastupdatetime FROM -8 FOR 2)  as 'Time' FROM ratingout where Telesales='" & cbTelesales.Text & "' and lastupdatedate= '" & newDate & "' and lastupdatedate is not null and lastupdatetime is not null ORDER BY lastupdatetime ;"
wcCommand.Connection = wcconn
wcCommand.CommandText = wcQuery
Dim wcData As New DataTable
wcAdapter.SelectCommand = wcCommand
wcAdapter.Fill(wcData)
Dim i = 0
If wcData.Rows.Count = 0 Then
wcAdapter.Dispose()
Try
Dim wQuery = "SELECT ID, Telesales, lastupdatedate as 'Day', SUBSTRING(lastupdatetime FROM -8 FOR 2)  as 'Time' FROM ratingout where Telesales='" & cbTelesales.Text & "' and lastupdatedate= '" & dateWorkCheck.Text & "' and lastupdatedate is not null and lastupdatetime is not null ORDER BY lastupdatetime ;"
wcCommand.Connection = wcconn
wcCommand.CommandText = wQuery
Dim wData As New DataTable
wcAdapter.SelectCommand = wcCommand
wcAdapter.Fill(wData)
wData.Columns.Add("tt")
wData.Columns.Add("num")
wcData.Columns.Add("tt")
wcData.Columns.Add("num")
'dgvWorkCheck.AutoSizeRowsMode = DataGridViewAutoSizeRowMode.AllCells
Dim dr As DataRow
For Each dr In wData.Rows
If lastV Is Nothing OrElse Not ColumnEqual(lastV, dr("Time")) Then
''check if first value is nothing
If lastV = Nothing Then
lastV = "00"
l = "0"
Else
dr("tt") = lastV
dr("num") = l
'wcData.Tables("ratingout").Rows(I)("ID") = dr("ID")
End If
ListBox1.Items.Add(lastV & " <--> " & l)
lastV = dr("Time")
l = 1
ElseIf lastV Is Nothing OrElse ColumnEqual(lastV, dr("Time")) Then
l += 1
'Dim series1 As New Series()
'series1.Points.Add(l)
End If
For I = I To wData.Rows.Count
If I <> wData.Rows.Count Then
I += 1
If i = wData.Rows.Count Then
dr("tt") = lastV
dr("num") = l
ListBox1.BeginUpdate()
ListBox1.Items.Add(dr("Telesales") & " between[" & lastV & " and 17:00, ] <--> " & l & "[ records ]")
ListBox1.EndUpdate()
End If
GoTo n
Else
MsgBox("last data")
End If
Next
n:
Next
txtRec.Text = wData.Rows.Count
dgvWorkCheck.DataSource = wData
''chart
Dim ChartArea2 As ChartArea = New ChartArea()
Dim Legend2 As Legend = New Legend()
Dim Series2 As Series = New Series()
Dim Chart2 = New Chart()
Me.Controls.Add(Chart2)
ChartArea2.AxisX.LabelStyle.Angle = -90
ChartArea2.AxisX.LabelStyle.Interval = 1
ChartArea2.AxisY.LabelStyle.Angle = -90
ChartArea2.AxisY.LabelStyle.Interval = 5
ChartArea2.Name = "ChartArea2"
Chart2.ChartAreas.Add(ChartArea2)
Legend2.Name = "Legend2"
Chart2.Legends.Add(Legend2)
Chart2.Location = New System.Drawing.Point(12, 113)
Chart2.Name = "Chart2"
Series2.ChartArea = "ChartArea2"
Series2.Legend = "Legend2"
Series2.Name = "Series2"
Chart2.Series.Add(Series2)
Chart2.Size = New System.Drawing.Size(1145, 604)
Chart2.TabIndex = 0
Chart2.Text = "Chart2"
Chart2.Series("Series2").XValueMember = "tt"
Chart2.Series("Series2").YValueMembers = "num"
Chart2.DataSource = dgvWorkCheck.DataSource
Chart2.DataBind()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Exit Try
InformationsquelleAutor Gbolahan | 2010-07-23

2 Comentarios

  1. 0

    ya que los nuevos se insertan datos en una base de datos, usted sólo tendrá que volver a enlazar el gridview a su fuente con el fin de mostrar la nueva información entrante.

    Deberá aislar el código que vincula los datos para el gráfico de una función es llamada cada vez que un nuevo campo se inserta:

    Function FillChartWithData()
    Dim myData As New DataTable
    wcAdapter.SelectCommand = wcCommand
    wcAdapter.Fill(myData)
    ...
    Chart1.Series("Series1").ValueMemberX = "table1"
    Chart1.Series("Series1").ValueMembersY = "table2"
    End Function

    EDITAR

    Miré a su codificados y parece que se está perdiendo la parte responsable de la inserción de nuevos datos en el interior de la ‘ratingout de la mesa. Usted debe crear una función que permite insertar nuevos datos, algo a lo largo de la línea de:

    Dim insertRating = "INSERT INTO ratingout VALUES (@NewTeleSalesName, @NewDate);"
    Dim insertCmd As New MySqlCommand(insertRating, wcconn)
    insertCmd.Parameters.Add("@NewTeleSalesName", MySqlDbType.VarChar, 255, "teleSalesName")
    insertCmd.Parameters.Add("@NewDate", MySqlDbType.Datetime, 8, New DateTime(2010, 8, 5))
    insertCmd.ExecuteNonQuery()
    • no es una página web. su un formulario de vb.
    • cuando actualizo, mi datagridview obtiene el nuevo registro, pero mi carta no traza la gráfica de acuerdo a los nuevos datos en el datagrid. tanto mi datagridview y el gráfico están obligados a un datable.
    • ¿Has probado a volver a enlazar el gráfico de la derecha después de que el registro se realizará a través de insertado? Que gridview evento que están utilizando para insertar nuevos datos?
    • ¿cómo debo hacerlo?
    • Yo he hecho más completo mi respuesta.
    • Podría usted por favor, pegue el código completo? Gracias
    • publicado el código de abajo..
    • He editado mi respuesta. Al agregar código a tu pregunta, es más claro si se agrega a su pregunta y no como una nueva respuesta. Saludos!
    • lo va a probar. Gracias

  2. 0

    Con el fin de actualizar mi tabla de bargraph nombre CashChart (que fue enlazado a datos a un BindingSource) tuve que hacer lo siguiente:

    1. Para borrar la información del gráfico,

    2. Clara la delimitación de la fuente de información

    3. Y, a continuación, vuelva a asignar la delimitación de la fuente de la información: por ejemplo:

      CashChart.Series(0).Points.Clear()
      CashChart.DataSource = ""                       
      CashChart.DataSource = ESTADOINSTANTANEOBindingSource

    Antes, solo que mi DataTable era la actualización, pero después de estos comandos, yo era capaz de conseguir la bargraph de actualizar con nuevos valores en la tabla.

Dejar respuesta

Please enter your comment!
Please enter your name here