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:
Les dejo adicionalmente esta función, en caso algo falle...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
Código:
Muchas gracias por cualquier idea de solución que puedan tener. Saludos. 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