11/01/2013, 08:51
|
| | Fecha de Ingreso: junio-2008 Ubicación: Colombia
Mensajes: 7
Antigüedad: 16 años, 6 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
|