Error de sintaxis en access

¿Me ayudas?
¿Qué esta mal en la siguiente orden?:
INGRESOS = DLookup("sum(COSTO_SERVICIO)", "SERVICIOS", "[fecha_servicio] =" _ 
& TXTFECHA.Text)
El error que me sale dice: se ha producido el error 3075 en tiempo de ejecución
Error de sintaxis (coma) en la expresión de consulta '[fecha_servicio]= domingo 26 de julio de 2009'.

4 Respuestas

Respuesta
1
Si el campo [fecha_servicio] es un campo de fecha, no vas a poder hacer la comparación en el criterio de la función DLookUp con una fecha expresada como texto, ya que no la reconoce como tal.
Probá con algo como esto:
*************************
Dim XFecha As Variant
XFecha = (Format([fecha_servicio], "dddddd"))
INGRESOS = DLookup("sum(COSTO_SERVICIO)", "SERVICIOS", "XFecha =" _ 
& TXTFECHA.Text)
************************
¿Se entiende la idea?
hla, muchas gracias tu solución me parece perfecta, lo único malo es que me da error de sintaxis, puedes revisar por favor, no encontré donde esta mal.
Muchas gracias
Te hago unas preguntas:
TXTFECHA - ¿es un cuadro de texto en un formulario, un cuadro combinado o que?. ¿Qué formato tiene, de fecha? ¿Por qué la comparación la hacés como como TXTFECHA.Text?
¿Cuándo ponés guión bajo ( _ ) en el nombre de los elementos es porque hay un espacio o porque el nombre es así? Si es para sustituir el espacio, no es necesario cuando usás corechetes.
¿Probaste así? (Si es necesario corregí lo de los guiones)
---------------------------------------------------------------------
INGRESOS = DLookup("sum([COSTO_SERVICIO])", "SERVICIOS", "[fecha_servicio] = Form![TXTFECHA]")
---------------------------------------------------------------------
Y otra cosa:
¿Por qué usás la función DLookUp para la sumatoria de un campo y no DSum que es para eso?
----------------------------------------------------------------------
INGRESOS = DSum("[COSTO_SERVICIO]", "SERVICIOS", "[fecha_servicio] = Form![TXTFECHA]")
----------------------------------------------------------------------
Saludos!
Che, te adjunto la ayuda de Microsoft sobre el uso de la función Dsum.
http://office.microsoft.com/es-es/access/HA012288293082.aspx
Cualquier cosa volvé a preguntarme...
jajajajaja que fácil con el dsum, y no lo usaba porque no lo conocía, es la primera vez que hago un pseudo sistema en access. Sabes me estas ayudando mucho si estuvieras aquí te mandaría unas cervezas en agradecimiento. De todos mdos de seguro más adelante tendré más consultas. Muchas gracias
Respuesta
1
A primera vista puede ser un error de sintaxis ( _&), pero también en la comparación de los tipos de datos. De todas formas voy a ejecutar el ejemplo y te respondo más detalladamente.
¿Qué version de access usas?
Aquí hay un ejemplo sin errores:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
PUEDES revisar también los ( ) en [COSTO_SERVICIO]
Respuesta
1
Cambia
"fecha_servicio=" & txtfecha.text
por
"fecha_servicio= ' " & txtfecha.text & " ' "
Te separe la comilla sencilla para que la pudieras ver pero esta debe ir pegada a las comillas dobles
Ok, puse:
INGRESOS = DLookup("sum(COSTO_SERVICIO)", "SERVICIOS", "fecha_servicio= '" & TXTFECHA.Text & "' ")
¿Y el mensaje que sale es que "no coinciden los datos en la expresión de cirterios"
si ingresos costo_servicio es de tipo entero largo
servicios es el nombre de la tabla
y fecha_servicio es de tipo fecha mediana que puede estar fallando?
cambia las comillas por #
Respuesta
1
Perdona por no contestar antes, estuve unos días fuera.
Se me ocurren tres cosas. La primera añadir #.
Me explico, en las expresiones como la que citas, según el tipo de dato, a Access hay que darle más información, así hay que colocar comilla simple cuando es String, y # cuando es Date:
DLookup("sum(COSTO_SERVICIO)","SERVICIOS","[fecha_servicio]=#" & TXTFECHA.Value & "#")
De todos modos tómalo con pinzas, no soy muy aficionado a este tipo de funciones de búsqueda, suelo aprovechar las relaciones
La segunda cosa que se me ocurre es que tendrías que tratar la fecha como tal, sino es un texto. Yo cambiaría TXTFECHA. Value por Format(TXTFECHA,"dd/mm/yyyy")
La tercera, si la función NO está en el código VB de algún formulario o informe, que la separación entre parámetros se hace con ; y no con.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas