Access - Error en DLookup utilizando una condición numérica con coma

 
Vista:
sin imagen de perfil

Error en DLookup utilizando una condición numérica con coma

Publicado por Nicolas (6 intervenciones) el 25/08/2016 04:17:58
Estimados,

Estoy desarrollando una aplicación para administrar comprobantes recibidos y cargarlos en una tabla mediante un ODBC a un SQL Server. En una rutina realizo una validación y me arroja en siguiente error (adjunto imagen). Se que viene por la condición cantidad cuando el numero tiene decimales.

Paso el código utilizado

VAR_ORIGEN_DE_DATOS = DLookup("ORIGEN_DE_DATOS", "dbo_Q_Reporte", " [NEMO] = '" & VAR_NEMO & "' AND [PERIODO] = '" & VAR_PERIODO & "' AND [ABREVIATURA] = '" & VAR_ABREVIATURA & "' AND [CANTIDAD] = " & VAR_CANTIDAD & " AND [IMPORTE] = " & VAR_IMPORTE & " AND [SUB_ABREVIATURA] = '" & VAR_SUB_ABREVIATURA & "'")

La variable VAR_CANTIDAD tiene decimales.

Espero haber sido lo mas claro posible.

Saludos,
Nicolás.

Sin-titulo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jesus
Val: 149
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error en DLookup utilizando una condición numérica con coma

Publicado por Jesus (54 intervenciones) el 25/08/2016 11:11:40
El problema es que envías una (,) cuando espera un (.). Al SQL hay que pasarle los parámetros con la notación yankee.


Prueba así:

1
... AND [CANTIDAD] = " & Replace(VAR_CANTIDAD, ",", ".") & " AND ...



Aunque a mi me gusta asegurarme del tipo de la variable y previamente lo convierto, suponiendo que VAR_CANTIDAD sea un tipo doble:

1
... AND [CANTIDAD] = " & Replace(CDbl(VAR_CANTIDAD), ",", ".") & " AND ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en DLookup utilizando una condición numérica con coma

Publicado por Nicolas (6 intervenciones) el 25/08/2016 13:35:16
Jesus,

Muchas gracias por la respuesta. Lo que me sucede es que haciendo ese reemplazo suponiedo como ejemplo el nro 13,30 el numero final a buscar en la tabla es 1330 y deja de ser el valor que estaba buscando.

En si necesitaria que el valor a buscar se siga manteniendo es decir 13,30.
Se que para las fecha debo utilizar por ejemplo ----------------> # " & Format(fecha, "MM/DD/YYYY") & " # (en este caso el # indica que es fecha)
Para una cadena de caracter ------------> ' " & VAR_PERIODO & " ' (en este caso el ' indica que es cadena de caracter)

Aguardo comentarios.
Desde ya muchas gracias.

Saludos,
Nicolás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus
Val: 149
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error en DLookup utilizando una condición numérica con coma

Publicado por Jesus (54 intervenciones) el 25/08/2016 13:45:25
Nicolás,

Haciendo ese reemplazo el número que buscas es el 13.30 que es como lo entiende SQL (la notación yankee usa el punto como separador decimal).

Pero lo más fácil es que lo pruebes, verás como funciona ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en DLookup utilizando una condición numérica con coma

Publicado por Nicolas (6 intervenciones) el 25/08/2016 20:31:12
Jesus,

Probe y no funciona. Lo estoy haciendo en Access en Visual Basic. Por ahi lo que me decis funciona para el SQL Server.

Actualmente tomando un valor de un campo de una tabla en Acces es 13,30 y si quiero aplicar la igualdad utilizando Replace(CDbl(VAR_CANTIDAD), ",", ".") termino comparando 13,30 vs 1330, con lo cual el valor es distinto.

Si no logro resolver esta igualdad en el Dlookup, tendre que buscar una solucion alternativa.

Saludos,
Nicolás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus
Val: 149
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error en DLookup utilizando una condición numérica con coma

Publicado por Jesus (54 intervenciones) el 25/08/2016 20:44:56
En el error que reportas Access se queja de que hay una coma en el 55,1 y lo que estamos haciendo es cambiar la coma por un punto.

Es más. prueba esa instrucción poniendo el valor tu a mano, verás que te funciona:

VAR_ORIGEN_DE_DATOS = DLookup("ORIGEN_DE_DATOS", "dbo_Q_Reporte", " [NEMO] = '" & VAR_NEMO & "' AND [PERIODO] = '" & VAR_PERIODO & "' AND [ABREVIATURA] = '" & VAR_ABREVIATURA & "' AND [CANTIDAD] = 55.1 AND [IMPORTE] = " & VAR_IMPORTE & " AND [SUB_ABREVIATURA] = '" & VAR_SUB_ABREVIATURA & "'")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en DLookup utilizando una condición numérica con coma

Publicado por Nicolas (6 intervenciones) el 01/09/2016 00:52:06
Jesus,

Te pido disculpas por la demora en la respuesta. Intente hacer lo que me dijiste y no me da la coincidencia. Busque una solución alternativa, donde comparo los valores de tipo real con un IF y si es verdadero paso a utilizar el Dloookup (sin las dos condiciones de tipo real)

VAR_ORIGEN_DE_DATOS = DLookup("ORIGEN_DE_DATOS", "dbo_Q_Reporte", " [NEMO] = '" & VAR_NEMO & "' AND [PERIODO] = '" & VAR_PERIODO & "' AND [ABREVIATURA] = ' " & VAR_ABREVIATURA & " ' AND [SUB_ABREVIATURA] = '" & VAR_SUB_ABREVIATURA & "'")

Desde ya muchas gracias por el interes para resolverme el problema.

Saludos,
Nicolás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus
Val: 149
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Error en DLookup utilizando una condición numérica con coma

Publicado por Jesus (54 intervenciones) el 01/09/2016 01:06:18
Siento que no hayas encontrado la solución, pero el camino que seguimos es bueno.

Es posible que el campo de la tabla tenga otros decimales, o que el campo de pantalla los modifique, access a veces hace 'de las suyas'.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar