Asignar valor de un control al resultado de un DLookup

Tengo una tabla T con campos C1 (texto) y C2 (numérico). Pongamospor ejemplo:
C1 C2
Pepe     1
Pepe 1
Juan 2
Los valores tanto de C1 como de C2 pueden estar repetidos.

Lo que quiero es asignar a un cuadro de texto txt1 de un formulario F, el valor de C2 que se corresponda con C1=txt2, siendo txt2 otro cuadro de texto de F.

El planteamiento podría ser el siguiente, pero me falla la asignación de txt1 con el valor correspondiente de C2 (con la consulta SQL que indico debería funcionar pero no sé si se puede insertar junto a la sentencia de código porque a mi me falla):

If IsNull(DLookup("[C1]", "[T]", "C1='" & Form!txt2.Value & "'")) = False Then
        Form!txt1.Value = ¿¿¿¿[T].C2??? _

                                    ¿¿¿Select C2 from T where T.C1= Forms!F![txt2] group by C1?????
End if
El resultado aplicado al ejemplo, debería dar un valor en txt1=1 para txt2=Pepe, y txt1=2 para txt2=Juan.

1 respuesta

Respuesta
1

If IsNull(DLookup("[C1]", "[T]", "C1='" & Form!txt2.Value & "'")) = False Then
Form!txt1.Value =DLookup("[C1]", "[T]", "C1='" & Form!txt2.Value & "'")_
End if

Si no quieres hacer 2 búsquedas, lo puedes hacer con un recordset:

Dim db as database

Dim rs as recordset

Set db=Currentdb

Set rs=db.OpenRecordset("Select C2 from T where C1='" & Form!txt2.Value & "'")

If NOT rs.Eof then

Form!txt1.Value=rs!C2

End If

Es decir, si el recordset No está vacío ---> No es final de fichero (NOT rs. EOF) igualame el valor del campo C2

Hola,

muchas gracias por la ayuda. El resultado a través del doble DLookup es perfecto (sería C2 en vez de C1, o sea, .... =DLookup("[C2]", "[T]", "C1='" & Form!txt2.Value & "'", pero funciona perfectamente).

Lo intenté por el recordset pero la compilación me da error ("no se ha definido el tipo"), concretamente en la declaración Dim db as database, ¿por qué puede ser?

Saludos.

Puede ser que te falte la referencia: Microsoft DAO 3. 6

Con un módulo abierto vas a herramientas ---> referencias y ves si la tienes chequeada.

También puedes hacer:

Dim db as DAO.Database

Buenas,

al abrir Referencias en el Editor de Visual, tengo un "error en el acceso al registro". Estoy como Administrador del sistema y he buscado en la red ese error que por lo visto puede estar relacionado con una instalación de Crystal Reports (http://support.microsoft.com/kb/269383/es), sin embargo, y a pesar de usar el programa RegMon (hoy Process Monitor) y hacer todo lo indicado por Microsoft, sigo con el problema. Bueno, esto ya es cosa aparte que deberé revisar. 

También me da error el Dim db as DAO.Database. 

Dejo abierto aún, por si se te ocurre alguna idea sobre ese error.

Gracias y un saludo.

Lo siento de verdad pero no sé que decirte sobre el error que te sale. Tendrás que resolverlo, ya que si no, el access lo tienes bastante "capado" al no poder utilizar objetos como el recordset.

Si te parece, deja un par de días abierta la pregunta, miraré por ahí y si veo algo te cuento.

Muchas gracias. También yo investigaré. 

He encontrado esto en la red, por si te sirve...

http://www.forospyware.com/t147523.html

Hola,

cuando estuve inicialmente indagando en el asunto, ya consulté ese enlace. De momento tengo pendiente el problema, a ver si más adelante puedo solventarlo con un poco más de tiempo. 

De verdad, muchas gracias por tu amabilidad.

Un saludo.

P.D.: sé que igual es mucho pedir, pero bueno te lo comento por si acaso: tengo una consulta en el tablón sobre la que estoy trabajando ("Condición If compuesta mediante DLookup") y no sé si podrías ayudarme, pero sin compromiso y en todo caso, gracias por la ayuda ya prestada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas