** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - No coinciden tipos de datos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

No coinciden tipos de datos

 Responder Responder
Autor
Mensaje
gabores Ver desplegable
Habitual
Habitual
Avatar

Unido: 06/Agosto/2007
Localización: Bolivia
Estado: Sin conexión
Puntos: 77
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita gabores Cita  ResponderRespuesta Enlace directo a este mensaje Tema: No coinciden tipos de datos
    Enviado: 23/Marzo/2020 a las 23:34
Buenas tardes a todos.

Quisiera pedirles ayuda con el siguiente inconveniente-
Estoy tratando de asignar a un campo formulario el siguiente nùmero de factura a realizar automàticamente.
Estoy tratando de familiarizarme con los còdigos para no generar tantas consultas en la base-
Buscando y probando llegue a realizar el siguiente còdigo

    Dim ultimo1 As String, ultimo2 As String, ultimo3 As String, ultimo4 As String, ultimo5 As String
    Dim rst As Recordset
    Dim miSQL As String
    
    ultimo1 = Forms!frm_inicio!empresa_id
    ultimo2 = Forms!frm_ventas_A!ventaA_tipo_id
    ultimo3 = Forms!frm_ventas_A!ventaA_clase_id
    ultimo4 = Forms!frm_ventas_A!ventaA_pv

    miSQL = "SELECT ventaA_nro " _
    & "FROM tbl_ventas_A " _
    & "WHERE (((ventaA_empresa_id)= '" & ultimo1 & "') And ((ventaA_tipo_id) = '" & ultimo2 & "') And ((ventaA_clase_id) = '" & ultimo3 & "') And ((ventaA_pv) = '" & ultimo4 & "'))"
    Set rst = CurrentDb.OpenRecordset(miSQL, dbOpenDynaset)
    ultimo5 = rst("ventaA_nro")
    rst.Close
    Me.ventaA_nro = ultimo5+1

pero cuando lo ejecuto me da el siguiente error

error 3464 no cinciden los datos en la epresion de criterios

todos los datos son numèricos y ya probè con todo lo que pude encontrar y no consigo solucionarlo.
Alguien podrìa orientarme con lo que estoy haciendo mal-
Muchas gracias


Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5479
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2020 a las 00:57
Hola!

Si dices que los datos son numericos, pues las variables han de ser numericos:-

Dim ultimo1 As Integer, ultimo2 As Integer, ultimo3 As Integer, ultimo4 As Integer, ultimo5 As Integer.

Esto implica suprimir las comillas simple, creo que así funcionaría:-

& "WHERE (((ventaA_empresa_id)= " & ultimo1) & " And ((ventaA_tipo_id) = " & ultimo2) & " And ((ventaA_clase_id) = " & ultimo3) & " And ((ventaA_pv) = " & ultimo4))"
Un Saludo.
Arriba
gabores Ver desplegable
Habitual
Habitual
Avatar

Unido: 06/Agosto/2007
Localización: Bolivia
Estado: Sin conexión
Puntos: 77
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita gabores Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2020 a las 01:17
Hola mounir, ante todo muchas gracias por tu ayuda
Te cuento que me ha servido mucho tu ayuda con esto de la diferencia entre string e integer ya que soy un autodidacta del access y sigo aprendiendo
He realizado los cambios que me sugeriste y ahora el error es el mismo " error 3464 no cinciden los datos en la epresion de criterios " pero en la siguiente linea del codigo

Set rst = CurrentDb.OpenRecordset(miSQL, dbOpenDynaset)

tienes idea de por que?

desde ya muchas gracias nuevamente



Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: en línea
Puntos: 12511
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2020 a las 09:52
mounir: en esa WHERE me parece que hay unos cuantos paréntesis fuera de sitio.

Y, al hilo de eso, los paréntesis en muchos casos, son obviables. Para el ejemplo, todos. De esa forma se simplifica mucho:

& "WHERE VentaA_empresa_id = " & ultimo1 & " AND ventaA_tipo_id = " & ultimo2 & " AND ventaA_clase_id = " & ultimo3 & " AND ventaA_pv = " & ultimo4 &  " "

Los paréntesis en las WHERE solo los mantengo cuando forman parte de una función (obvio) y cuando el operador es OR mezclado con AND. En pseudocodigo: Si A = 1 Y (B = 2 O B = 3)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
JuanW Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 12/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 210
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita JuanW Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2020 a las 10:26
Solo una puntualización:
Si son numeros ID implicanrían que son autonumericos, por lo tanto deberían ser tipo LONG en vez de INTEGER.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5479
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Marzo/2020 a las 12:10
Hola!

Muchas gracias Xavi por la aclaración. Un cordial saludo.
Un Saludo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable