Validar si ya existe un registro en SQL Server desde DataGridView en Visual Basic, si existe omitirlo y agregar registros nuevos

Buenos días/tardes/noches

Tengo un un DataGridView en VB el cual muestra estos datos: (estos datos se muestran de una tabla en access, aquí yo no puedo realizar ninguna modificación). NOTA: Se estarán agregando datos nuevos día a día y la misma columna Contador se va incrementando.

Al momento de darle al botón Exportar checadas a SQL, lo realiza de manera correcta.

El detalle es que si le vuelvo a dar otra vez clic al botón, me duplica los registros que ya existen.

Quisiera tomar la columna "Contador" (en SQL es ID) en el DataGridView como ID único al momento de exportar y que "omita" los registros que ya están en SQL Server y me valla agregando los nuevos datos.

Aquí dejo el código que estoy utilizando:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim agregar As SqlCommand = New SqlCommand("insert into checada values (@id, @Trabajador, @Fecha, @Checada, @Terminal)", conexion)
        conexion.Open()
        Dim fila As DataGridViewRow = New DataGridViewRow()
        Try
            For Each fila In DataGridView1.Rows
                Agregar. Parameters. Clear()
                Agregar. Parameters. AddWithValue("@id", Convert. ToDecimal(fila. Cells("Contador"). Value))
                Agregar. Parameters. AddWithValue("@Trabajador", Convert. ToDecimal(fila. Cells("Trabajador"). Value))
                Agregar. Parameters. AddWithValue("@Fecha", Convert. ToDateTime(fila. Cells("Fecha"). Value))
                Agregar. Parameters. AddWithValue("@Checada", Convert. ToDateTime(fila. Cells("Checada"). Value))
                Agregar. Parameters. AddWithValue("@Terminal", Convert. ToDecimal(fila. Cells("Terminal"). Value))
                Agregar. ExecuteNonQuery()
            Next
            MessageBox.Show("DATOS EXPORTADOS CORRECTAMENTE A SQL")
        Catch ex As Exception
            MessageBox.Show("OCURRIO UN ERROR EN LA IMPORTACION, FAVOR DE COMUNICARSE CON IT SUPPORT")
        Finally
            conexion.Close()
        End Try
    End Sub
Respuesta

Tiene que hacer un búsqueda del ID después del For Each fila, para que en caso de que exista no lo agregue.

¡Gracias! Me podrías ayudar con la sintaxis, soy nuevo en esto.

Trate de reproducir su código pero se me esta dificultando ya que yo trabajo con PostgreSQL.

Se me ocurre que al momento de exportar los datos a SQL borre el contenido del DataGridView

O que deshabilite el botón Exportar.

Otra es que comparta su consulta donde muestra los datos existentes en la tabla para ver si veo la manera de adaptar algo de su codigo exportar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas