Access - Dlookup (error)

   
Vista:

Dlookup (error)

Publicado por Carlos (6 intervenciones) el 26/04/2008 12:54:40
Tengo el siguiente problema:
En un subfrmulario "detalle de pedido" quiero obtener el precio unitario de los artículos en cada línea de producto, lo cual tomo de la tabla de articulos. Para ello neptuno.mdb usa Dlookup. Y eso es lo que quiero hacer:

Private Sub Denominación_AfterUpdate()
Dim txtFiltro As String

txtFiltro = "articulo = " & Me!Denominación

Me!precio_unitario = DLookup("precio_unitario", "articulos", txtFiltro)

End Sub

Como la denominación de los articulos estan formadas por términos como "arandela, acero, 5mm" me salta el siguiente error: Error de sintaxis (falta operador) en la expresion de consulta 'articulo = arandela, acero, 5mm'
Entiendo que es por las comas.
Pero si busco un artículo de una sola palabra, como "transporte", entonces el error es:
El objeto no contiene el parámetro de automatización "transporte".

En cambio, si elimino la línea que define TxtFiltro, si me da un precio, el primero que pilla.
Si alguno me puede sacar de mi ignorancia, se lo agradeceré eternamente.
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

RE:Dlookup (error)

Publicado por Enrique (1299 intervenciones) el 26/04/2008 15:59:41
Carlos, si articulo es un campo de texto como me parece, debe ir entre comillas simples, de esta forma:

txtFiltro = "articulo =' " & Me!Denominación & "'"

Tampoco hay necesidad de definir previamente una variable como txtFiltro, puedes hacerlo todo en la línea del Dlookup:

Me!precio_unitario = DLookup("[precio_unitario]", "articulos", "articulo='" & Me.Denominacion & "'")

En estos casos, lo mejor siempre es usar como campo de comparación el Código de Articulo en vez de la Denominación, pero hay que tener en cuenta si el Codigo es Texto o es Numérico. Si es Número se hace como tu lo estás haciendo ahora y si es Texto, entre comillas como te he indicado.

Saludos
Enrique
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

RE:Dlookup (error)

Publicado por Carlos (6 intervenciones) el 26/04/2008 17:31:10
Gracias Enrique, eso es lo que andaba buscando.
Debe venir en la primera o la segunda página de cualquier manual de VBA.
Tienes razón, lo mejor sería hacer uso del código, pero es que no se lo sabe nadie de memoria y, de esta manera al menos, tiene mas sentido.
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

RE:Dlookup (error)

Publicado por OMPV (1 intervención) el 26/10/2015 21:26:26
Estimados

Deseo obtener su valioso apoyo con este error ya que estoy preparando un formulario de materiales, la verdad soy nuevo en ACCESS pero me interesa mucho aprender, el codigo es el siguiente:

Private Sub Cuadro_combinado58_AfterUpdate()
DESCRIPCION = DLookup("[DESCRIPCION]", "[PRECIOS]", "COD PRODUCTO=" & PRECIOS)
End Sub

El error que me da es

Se ha producido el error 3075 en tiempo de ejecución:
Error de sintaxis (falta operador) en la expresión de consulta 'COD PRODUCTO='

Agradezco de antemano su valiosa ayuda.
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

RE:Dlookup (error)

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/10/2015 23:37:29
La sintaxis en VBA tiene que ser fiel y precisa, no admite divagaciones porque normalmente no evalua, simplemente ejecuta.

El error de interpretación puede venir porque el campo en cuestión (consejo básico en Access: evita los espacios en los nombres si es posible) tiene un nombre que contiene un espacio, la solución mas sencilla consiste en añadir unos corchetes (para que Access interprete su contenido como un conjunto).

Original ==> DESCRIPCION = DLookup("[DESCRIPCION]", "[PRECIOS]", "COD PRODUCTO=" & PRECIOS)
Corregido ==> DESCRIPCION = DLookup("[DESCRIPCION]", "[PRECIOS]", "[COD PRODUCTO]=" & PRECIOS)

Doy por supuesto que 'ese campo' en la tabla es de tipo numérico y que el dato 'precios' es también un dato numérico

Lo que me llama la atención son los nombre de los elementos (no suele ponérsele como nombre a un precio [Cod Producto] o a un código de producto 'Precio') .....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar