Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/01/2013, 08:51
Atzel
 
Fecha de Ingreso: junio-2008
Ubicación: Colombia
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Verificar si dato esta duplicado

Muchas Gracias por la ayuda....

Disculpen la demora en verificar este tema pero es que habia abandonado un poco el proyecto pero ahora lo retome nuevamente.

Me explico ahora un poco mejor:

Trabajo en Visual Express 2008.

Tengo un DataGridView donde cargo un archivo de Excel mediante un OpenFileDilog. Despues de que se carga y se muestra en el DataGridView tengo un CommandoButoon que permite guardar los datos mostrados en una Base de Datos de Access 2007.

Lo que necesito es que verifique el primer Campo (PERIODO) qeu si se encuentra ya incluido en la BD de Access no me permita guardar ningun dato del DataGridView.

A continuación dejo el codigo que tengo en mi Formulario:

Código:
Imports System.Data.OleDb
Public Class Form1

    Private Sub BTNEXAMINAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNEXAMINAR.Click

        Dim stRuta As String = ""

        Dim openFD As New OpenFileDialog()
        With openFD
            .Title = "Seleccionar archivos"
            .Filter = "Archivos Excel(*.xls;*.xlsx)|*.xls;*.xlsx|Todos los archivos (*.*)|*.*"
            .Multiselect = False
            .InitialDirectory = "C:\Escaner\"
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                stRuta = .FileName
            End If
        End With
        TXTRUTA.Text = stRuta
        Try

            Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (stRuta & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=2"";")))

            Dim cnConex As New OleDbConnection(stConexion)
            Dim Cmd As New OleDbCommand("Select * from [Hoja1$]")
            Dim Ds As New DataSet
            Dim Da As New OleDbDataAdapter
            Dim Dt As New DataTable

            cnConex.Open()
            Cmd.Connection = cnConex

            Da.SelectCommand = Cmd
            Da.Fill(Ds)
            Dt = Ds.Tables(0)

            Me.DataGridView1.DataSource = Dt

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
        End Try

    End Sub

    Private Sub BTNGUARDAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNGUARDAR.Click

        If DataGridView1.Rows.Count = 0 Then
            Return
        End If


        Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Escaner\BDTecnica.accdb;Persist Security Info=False;")
            Dim Trans As OleDbTransaction = Nothing

            Try

                conn.Open()
                'Abre Transación
                Trans = conn.BeginTransaction

                Dim query As String = "INSERT INTO TBLCALENDARIO (PERIODO, ACUE, ZONA, DESCR_ZONA, FECHA_APERTURA, FECHA_LECTURA," & _
                "FECHA_INSPECCION, MEDIDOS_ACTUAL, CANT_LECTORES, LECTXLECTOR, INSP_CRITICA, INSP_DH, INSP_OTRAS, CANT_INSPEC, " & _
                "INSPXINSPECTOR, ID) VALUES (@PERIODO, @ACUE, @ZONA, @DESCR_ZONA, @FECHA_APERTURA, @FECHA_LECTURA, @FECHA_INSPECCION," & _
                "@MEDIDOS_ACTUAL, @CANT_LECTORES, @LECTXLECTOR, @INSP_CRITICA, @INSP_DH, @INSP_OTRAS, @CANT_INSPEC, @INSPXINSPECTOR, @ID)"

                Dim cmd As New OleDbCommand(query, conn)
                cmd.Transaction = Trans 'asigna la transacción al command

                For Each row As DataGridViewRow In DataGridView1.Rows

                    cmd.Parameters.Clear()
                    If row.Cells("PERIODO").Value IsNot Nothing Then ' valido si la fila tiene datos ---- deberian hacer un metodo validar que verifique que la fila tiene datos validos.
                        cmd.Parameters.AddWithValue("@PERIODO", CStr(row.Cells("PERIODO").Value))
                        cmd.Parameters.AddWithValue("@ACUE", CStr(row.Cells("ACUE").Value))
                        cmd.Parameters.AddWithValue("@ZONA", CStr(row.Cells("ZONA").Value))
                        cmd.Parameters.AddWithValue("@DESCR_ZONA", CStr(row.Cells("DESCR_ZONA").Value))
                        cmd.Parameters.AddWithValue("@FECHA_APERTURA", CStr(row.Cells("FECHA_APERTURA").Value))
                        cmd.Parameters.AddWithValue("@FECHA_LECTURA", CStr(row.Cells("FECHA_LECTURA").Value))
                        cmd.Parameters.AddWithValue("@FECHA_INSPECCION", CStr(row.Cells("FECHA_INSPECCION").Value))
                        cmd.Parameters.AddWithValue("@MEDIDOS_ACTUAL", CStr(row.Cells("MEDIDOS_ACTUAL").Value))
                        cmd.Parameters.AddWithValue("@CANT_LECTORES", CStr(row.Cells("CANT_LECTORES").Value))
                        cmd.Parameters.AddWithValue("@LECTXLECTOR", CStr(row.Cells("LECTXLECTOR").Value))
                        cmd.Parameters.AddWithValue("@INSP_CRITICA", CStr(row.Cells("INSP_CRITICA").Value))
                        cmd.Parameters.AddWithValue("@INSP_DH", CStr(row.Cells("INSP_DH").Value))
                        cmd.Parameters.AddWithValue("@INSP_OTRAS", CStr(row.Cells("INSP_OTRAS").Value))
                        cmd.Parameters.AddWithValue("@CANT_INSPEC", CStr(row.Cells("CANT_INSPEC").Value))
                        cmd.Parameters.AddWithValue("@INSPXINSPECTOR", CStr(row.Cells("INSPXINSPECTOR").Value))
                        cmd.Parameters.AddWithValue("@ID", CStr(row.Cells("ID").Value))

                        cmd.ExecuteNonQuery()
                    End If
                Next

                'Confirma Transacción
                Trans.Commit()

                MsgBox("El archivo se ha guardado correctamente")


            Catch ex As Exception
                'cancela transacción SI EXISTE
                If Trans IsNot Nothing Then
                    Trans.Rollback()
                End If
                MsgBox(ex.Message)
            End Try
        End Using
    End Sub

End Class