Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2012, 11:37
KnxDT
 
Fecha de Ingreso: marzo-2008
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Pregunta Form en Visual Basic 2010 no inserta en tabla en Access 2010

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.