Automática de la tabla de actualización con los nuevos datos de entrada

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 Kommentare

  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.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea