Función Dlookup con un criterio variable

Tengo un formulario con origen de control una consulta, el formulario no es continuo pero necesito ver todos los registros los cuales son solo 80, bueno lo resolví usando la función dlookup para cada registro, usando una textbox independiente. Así va perfecto, lo que pasa es que repetí la función dlookup 80 veces. Para hacer más elegante la solución trate de usar un for next para generar una variable y usarla en la función, he tratado de varias maneras, pero no logro que funcione. Agradezco cualquier ayuda, soy nuevo en access y vba.

El nombre del textbox es C1 hasta C80

El dato de criterio de COD_TRAGO también va de C1 hasta C80, por eso uso la misma variable, probé usar dos variables pero igual no me funciona.

Así me funciona

C1 = Nz(DLookup("[CTOTAL]", "Ctragos3", "[COD_TRAGO]= ' C1 ' "), 0)

CON ESTE CODIGO NO

Dim I As Integer

'Dim S As String
'For I = 1 To 80

S = "C" & I

S = Nz(DLookup("[CTOTAL]", "Ctragos3", "[COD_TRAGO]= " & S), 0)

'Next I

1 respuesta

Respuesta
2

Recuerdo cuando en esta página no se podían poner imágenes. Pero ahora que se puede...

Te pongo un ejemplo

Si tengo la tabla Clientes(acuérdate de los cuatro primeros, no es cosa de poner 80 cuadros de texto)

Y tengo un formulario, Formulario1 con cuatro cuadros de texto llamados, C1, C2,...

Cuando pulso el botón, pero podría ser en cualquier evento

Me ha buscado en la tabla Clientes el nombre de cliente que coincida con el número de la derecha del cuadro de texto. El código simplemente es

Private Sub Comando98_Click()
Dim i As Integer
Dim CTL As Control
For i = 1 To 4
Set CTL = Controls("C" & i)
CTL = DLookup("nombrecliente", "clientes", "idcliente=" & i & "")
Next i
End Sub

Donde pongo 4 tienes que poner 80 y donde pongo CTL=... podrías poner cualquier condición If..

Muchas gracias por contestar tan rápido, el valor del criterio de comparación es el mismo que el valor del CTL, cambie esa varianble en la función dlookup y me da un error de sintaxis falta un operador en COD_TRAGO= probé de varias maneras y sigue el error.

CTL= Nz(DLookup("[CTOTAL]", "Ctragos3", "[COD_TRAGO]= " & CTL & ""), 0)

CTL= Nz(DLookup("[CTOTAL]", "Ctragos3", "[COD_TRAGO]= " & CTL), 0)

Supongo que el nombre de CTL es igual a C1, C2, etc. En ese caso CTL es texto, pero tú lo pones como si fuera numérico. Por otro lado, para referirse al nombre de un control no puedes usar simplemente

=" & ctl & ""

Y por último, la función nz, si no le dices nada, ya te transforma los nulos en ceros

En resumen

ctl=nz(dlookup("ctotal","ctragos3,"cod_trago='" & CTL.Name & "'"))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas