Hola:
Después de buscar desde ayer la solución a este problema, les paso a comentar lo que intento hacer:
Objetivo:
- Registrar un contacto mediante un formulario.
Problema:
- No se logra hacer INSERT a la BBDD.
Datos adicionales:
- La conexión está correcta (abierta).
- Los SELECT funcionan sin problema, la cadena está bien.
- El INSERT está correcto porque logro insertar registros sin problemas cuando ejecuto la sentencia diretamente en la BBDD.
- GenerarCodigoPersona() genera el código de la persona (tipo número).
- Para validar si se estaban grabando los registros los voy imprimiendo en el grid, sin embargo, al abrir la BBDD y hacer consulta SQL no se ven los nuevos registros.
- Cuando cierro la aplicación el contador del código vuelve a tomar el máximo del registro sin contar los grabados (porque en el select tampoco aparecen).
- ¿Será un problema de permisos? Porque sea crea un archivo bloqueado llamado Telemarketing_DDBB.
laccdb (adicional al Telemarketing_DDBB.
accdb) mientras el Visual está abierto.
Código:
Public Class frmRegistrarContacto
Dim con As New OleDb.OleDbConnection(Variables.StrConexion)
Private Sub btnRegistrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegistrar.Click
If txtAuxcodEmp.Text <> "" Then
con.Open()
Dim sql As String = "INSERT INTO Persona (codPer, DNIPer, codEmp, carPer, nomPer, " & _
"telPer, telAnePer, corPer, dirPer, booContacto, comPer, fecRegPer) " & _
" VALUES(" & GenerarCodigoPersona() & ",'" & Trim(txtDNIPer.Text) & "'," & _
"'" & Trim(txtAuxcodEmp.Text) & "','" & Trim(txtCarPer.Text) & "','" & _
Trim(txtnomPer.Text) & "', '" & Trim(txtTelPer.Text) & "','" & _
Trim(txtTelAnePer.Text) & "','" & Trim(txtcorPer.Text) & "','" & _
Trim(txtDirPer.Text) & "',1,'" & Trim(txtComPer.Text) & "', '" & Date.Today().ToString("dd/MM/yyyy") & "')"
Dim cmd As New OleDb.OleDbCommand(sql, con)
MessageBox.Show(sql)
cmd.ExecuteNonQuery()
con.Close()
Else
MessageBox.Show("Ingresar Datos de Empresa")
End If
End Sub
End Class
Les dejo adicionalmente esta función, en caso algo falle...
Código:
Function GenerarCodigoPersona()
Dim CodPerx As Integer
Dim dt As New DataTable
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim da As New OleDb.OleDbDataAdapter
Dim sql As String = "SELECT MAX(codPer) from Persona"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(dt)
If dt.Rows.Count > 0 Then
CodPerx = dt.Rows(0).Item(0)
Else
MessageBox.Show("ERROR EN LA GENERACIÓN DEL CÓDIGO DE PERSONA")
End If
CodPerx = CodPerx + 1
Return CodPerx.ToString()
End Function
Muchas gracias por cualquier idea de solución que puedan tener. Saludos.