Ayuda con error al insertar valores en una base de datos access desde un formulario en Visual Basic

Soy algo nuevo en visual basic y estoy haciendo un programa de producción, el caso es que he creado el mismo formulario para cada entrada de datos que almaceno en una base de datos de access y cree un formulario en donde me arroja el siguiente error "NO SE HAN ESPECIFICADO VALORES PARA ALGUNOS DE LOS PARÁMETROS REQUERIDOS" RUN-TIME ERROR "-214717904(80040E10)"
Me he cansado de buscar y no encuentro el problema incluso hasta lo volví a hacer desde cero y me sigue dando el mismo error. Busque en foros y dicen que el error esta en que uno de los registros esta vacío o es de campo numérico aquí te dejo el código la linea que esta en negrita es donde me arroja el error pero en los otros formularios me trabaja bien
Option Explicit
Private Sub ChameleonBtn1_Click()
    Unload Me
End Sub
' Ordena en forma Ascendente y descendente el LV
''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub CmdOrdenar_Click(Index As Integer)
    CmdOrdenar(0).Value = False
    CmdOrdenar(1).Value = False
    CmdOrdenar(Index).Value = True
    Call FiltrarPan
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then
       Unload Me
    End If
End Sub
Private Sub Form_Load()
    With frmReg_Mant_Pan
        Me.Move (.Left + .LVPan.Left), _
                (.LVPan.Height + .LVPan.Top + .Top + 500)
    End With
    Call FiltrarPan
End Sub
Private Sub txtSearch_Change()
    Call FiltrarPan
End Sub
Private Sub Combo1_Click()
    Call FiltrarPan
End Sub
Private Sub Combo2_Click()
    Call FiltrarPan
End Sub
Public Sub FiltrarPan()
Dim Campo, OrderByCampo, Orden As String
Dim sql As String
    If Combo1.ListIndex = -1 Then
        Combo1.ListIndex = 0
    End If
    If Combo2.ListIndex = -1 Then
        Combo2.ListIndex = 0
    End If
    If Combo1.ListIndex = 0 Then
        Campo = "IdBloque"
    ElseIf Combo1.ListIndex = 1 Then
        Campo = "Tipo_Goma"
    ElseIf Combo1.ListIndex = 2 Then
        Campo = "Referencia"
    End If
    Select Case Combo2.ListIndex
        Case 0: OrderByCampo = "IdBloque"
        Case 1: OrderByCampo = "Tipo_Goma"
        Case 2: OrderByCampo = "Referencia"
        Case 3: OrderByCampo = "Fecha"
    End Select
    If CmdOrdenar(0).Value Then Orden = "asc"
    If CmdOrdenar(1).Value Then Orden = "desc"
    ' si el recorset está abierto lo cierra
    If RsPan.State = adStateOpen Then
        RsPan.Close
    End If
    sql = "SELECT * FROM Bloques Where " & _
                         Campo & " like '" & txtSearch & _
                        "%' order by " & OrderByCampo & " " & Orden
    RsPan.Open sql, CnnPan, adOpenStatic, adLockOptimistic
    Call CargarListViewPan(frmReg_Mant_Pan.LVPan, RsPan)
End Sub
en la tabla de access los campos que tengo son los siguientes:
IdBloque      = Autonumerico
Tipo_Bloque = Texto
Referencia    = Texto
Ancho           = Numerico
Largo           = Numerico
Altura_1       = Numerico
Altura_2       = Numerico
Descripcion  = Texto
Pies_1         = Numerico
Pies_2         = Numerico
Existencia    = Numerico
Fecha          = Date
Estatus       = Texto
Si me puedes ayudar te lo agradecería infinitamente.
Cualquier cosa me puedes responder a mi mail [email protected]

1 respuesta

Respuesta
1
Revisa si cuando llegas a esa linea que tienes en negrilla, campo, txtsearch y orderbycampo tienen valores
Lo que sucede es que cuando se arma la sentencia sql uno de esos valores viene vacío y la sentencia sql da error porque falta uno de esos valores.
Hola Experto
Disculpa que no te había contestado es que he estado muy ocupado.
El problema es que no se como revisar si cuando paso por la linea en negrita tiene valores, porque como te dije anteriormente soy nuevo en esto y voy aprendiendo según la marcha, aunque siempre trato de leer toda la documentación sobre el código que me envían pero estoy un poco out con esto si me pudieras ayudar.
Gracias de antemano
Con F8 haces la ejecución paso a paso en VB6
Experto ya chequee y vi que la variable CAMPO viene con el valor IdBloque y la variable TXTSEARCH viene vacía. Pero tengo otros Formularios en donde tengo la misma manera de hacer la consulta y no tengo que llenar TXTSEARCH para poder trabajar con ello si quiero hasta lo he dejado vacío, alguna otra sugerencia.
Debes revisar en donde le asignas el valor a txtsearch para ver porque no le llega un valor a este punto donde te da el error
Bueno lo revise e hice una comparación con respecto a otro formulario en donde tiene la misma función y exactamente igual lo único que varia son los campos de la tabla, verifique el txtsearch y el valor que se le asigna solo es cuando lo dígito pero como te mencione anteriormente con el formulario anterior después de hacer la comparación entre para hacer una búsqueda y no tengo que llenar el campo txtsearch para buscar por que campo lo voy a trabajar, siendo ya sea, por IdBloque, Tipo_Goma, Referencia y Fecha, revise cada objeto para ver si había alguna variación la cual me pueda estar afectando y nada, ya no se me ocurre más, y no se que voy a hacer.
Pues tienes un problem bien grande si estas haciendo el programa y no sabes de donde asígnale un valor al textbox.
Copia el código del otro formulario a este a ver si te sirve...
Mi estimado experto
No se si le mencione que soy nuevo en Visual Basic y desconozco muchas cosas de el. El código me lo paso un amigo mio para ayudar y me dijo que fuera viendo las funciones y que las adaptara con las necesidades que tengo, yo puedo usar la lógica para imaginarme donde el hace las cosas, pero no se donde esta asignado por que el código no es mio y estoy aprendiendo, entiendes mi inquietud, si quieres te lo mando para que me ayudes.
Att.
El Aprendiz :-)
Estudia el curso de VB.NET del guille: www.elguille.info

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas