Imprimir página | Cerrar ventana

No coinciden los tipos de datos en la expresion

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=87077
Fecha de impresión: 26/Marzo/2026 a las 15:54


Tema: No coinciden los tipos de datos en la expresion
Publicado por: raime20
Asunto: No coinciden los tipos de datos en la expresion
Fecha de publicación: 02/Julio/2025 a las 18:35
Hola, tengo un problema, estoy realizando una base de datos en access y cuando intento mostrar una información que selecciono en un listbox para un formulario me sale el error de "No coinciden los tipos de datos en la expresión de criterios"

aqui les paso el código de vba para realizar el proceso

Option Compare Database
Option Explicit

Private Sub lstAlumnos_Click()
    Call recuperaRegistro
End Sub

Private Sub btnGuardar_Click()
    Call guardarRegistro
End Sub

Private Sub txtBusqueda_GotFocus()
    Call limpiaRegistro
End Sub

Private Sub txtBusqueda_Change()
    Dim Consulta As String
    
    On Error GoTo ManipulaError
    Consulta = "SELECT Fecha, Producto"
    Consulta = Consulta & " FROM Entrada"
    Consulta = Consulta & " WHERE Fecha Like '*" & Replace(Me.txtBusqueda.Text, "'", "''") & "*'"
    Me.lstAlumnos.RowSource = Consulta
    Exit Sub
    
ManipulaError:
    MsgBox Err.Description, vbCritical, "Atencion"
End Sub

Private Sub recuperaRegistro()
    Dim rst As DAO.Recordset, SQL As String
    
    On Error GoTo ManipulaError
    SQL = "SELECT * FROM Entrada WHERE Fecha = '" & Me.lstAlumnos & "'"
    Set rst = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
    With rst
        Me.Fecha = !Fecha
        Me.Producto = !Producto
        Me.Cantidad = !Cantidad
        Me.Id = !Id
    End With
    rst.Close: Set rst = Nothing
    Exit Sub
    
ManipulaError:
    If Not rst Is Nothing Then rst.Close: Set rst = Nothing
    MsgBox Err.Description, vbCritical, "Atencion"
End Sub

Private Sub guardarRegistro()
    Dim Ctrl As Variant
    
    On Error GoTo ManipulaError
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is TextBox Then
            If Ctrl.Name <> "txtBusqueda" Then
                If IsNull(Ctrl.Value) Then MsgBox "FALTAN CAMPOS DE LLENAR", vbExclamation, "Atencion": Exit Sub
            End If
        End If
    Next Ctrl
    CurrentDb.Execute "UPDATE Entrada SET Cantidad = '" & Replace(Me.Cantidad, "'", "''") & "' " _
                      & "WHERE Id = '" & Me.Id & "'", dbFailOnError
                     MsgBox "REGISTRO GUARDADO CON EXITO", vbInformation, "Atencion"
    Me.lstAlumnos.Requery
    Exit Sub
    
ManipulaError:
    MsgBox Err.Description, vbCritical, "Atencion"
End Sub

Private Sub limpiaRegistro()
    Dim Ctrl As Variant
    
    On Error GoTo ManipulaError
    Me.lstAlumnos = Null
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is TextBox Then
            If Ctrl.Name <> "txtBusqueda" Then Ctrl.Value = Null
        End If
    Next Ctrl
    Exit Sub
    
ManipulaError:
    MsgBox Err.Description, vbCritical, "Atencion"
End Sub




Respuestas:
Publicado por: Mihura
Fecha de publicación: 02/Julio/2025 a las 19:01
Jugando a adivinar, ... ¿el error te salta aquí?

SQL = "SELECT * FROM Entrada WHERE Fecha = '" & Me.lstAlumnos & "'"

para otra vez (o para esta si he fallado en la adivinanza) pon la línea que te salta el error.

Suponiendo que el campo Fecha sea una fecha, está mal formateado el campo, lo has pasado como si fuera un string (entre comillas simples) y hay que pasarlo entre almohadillas y en formato yanqui mm/dd/yyyy.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: raime20
Fecha de publicación: 02/Julio/2025 a las 19:56
Publicado originalmente por Mihura Mihura escribió:

Jugando a adivinar, ... ¿el error te salta aquí?

SQL = "SELECT * FROM Entrada WHERE Fecha = '" & Me.lstAlumnos & "'"

para otra vez (o para esta si he fallado en la adivinanza) pon la línea que te salta el error.

Suponiendo que el campo Fecha sea una fecha, está mal formateado el campo, lo has pasado como si fuera un string (entre comillas simples) y hay que pasarlo entre almohadillas y en formato yanqui mm/dd/yyyy.



Muchas gracias, ya, era eso Thumbs Up



Imprimir página | Cerrar ventana