** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Asignar valor a Function
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAsignar valor a Function

 Responder Responder
Autor
Mensaje
Jaimevc Ver desplegable
Nuevo
Nuevo


Unido: 05/Agosto/2017
Localización: Mexico
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Tema: Asignar valor a Function
    Enviado: 15/Mayo/2019 a las 04:35
Buen día, desde ya les agradezco su tiempo, verán tengo el siguiente caso:

Tengo una consulta en Access, una normal no de VBA (pondré imagen), ahora en la sección de los criterios me gustaría ingresar el valor de una variable creada desde mi formulario.
Según lo que he investigado debo hacerlo por medio de una función, así que hice lo siguiente:

Creé un módulo y declaré una variable pública, además creé una función y le asigné el valor de la propia variable:

Public Var1 As String

Public Function MiDato() As String

MiDato = Var1

En el botón en su evento al hacer click le asigno un valor a la variable del módulo, además este botón ejecuta la consulta:

Var1 = Me.Campo1.Value

DoCmd.OpenQuery "Consulta1" acNormal
DoCmd.Close acQuery "Consulta1" acSaveYes

Ahora en mi consulta de Access en el campo donde van los criterios le puse:

= MiDato()

Pero al dar click en el botón simplemente la consulta se queda vacía, no me muestra ningún dato, espero puedan ayudarme.

La imagen de la consulta:



Editado por Jaimevc - 15/Mayo/2019 a las 04:45
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5140
Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 14:03
Hola!

Sí te he entendido bien no hace falta ninguna función, simplemente en criterios de la consulta y con el generador de expresiones lo podrías hacer, sería algo así:

En criterios escribes:

Forms![Nombredelformulario]![Nombredelcampo]
Un Saludo.
Arriba
Jaimevc Ver desplegable
Nuevo
Nuevo


Unido: 05/Agosto/2017
Localización: Mexico
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 16:46
Si tienes razón, de acuerdo a lo que he comentado si sería esa la solución, veo que me faltó comentar un poco  más del programa, la verdad sentí que si lo comentaba iba a poner mas complejo el tema y no me iban a entender, pero bueno aquí va:

En el formulario tengo una lista desplegable en la cual selecciono por medio de qué va a ser mi búsqueda, si por nombre o apellido, y debajo está precisamente el campo desde el cual se tomará el dato.

Dependiendo de la opción que se seleccione el dato del campo se almacenará en uno o en otra variable.

Eso amplia mi código a dos variables y dos funciones en el módulo:

Public Var1 As String
Public Var2 As String

Public Function MiDato1() As String
MiDato1 = Var1

Public Function MiDato2() As String
MiDato2 = Var1

Ahora en el Botón puse el siguiente código:

If Me.List.Value = "Nombre" then
Var1 = Me.List.Value
Else
If Me.List.Value = "Apellido" then
Var2 = Me.List.Value
End if
End If

Y en mi consulta en la parte del campo Nombre tengo como criterio
=MiDato1()
y en el campo de Apellido tengo como criterio
=MiDato2()

Como ven, esto se amplió mucho mas, en sí lo que quiero es seleccionar que tipo de busqueda voy a hacer y entonces hacer la busqueda y que me filtre los datos según mi selección, pero al correr el programa simplemente pareciera que no tiene ningún dato almacenado en la función.

Espero que me entiendan lo que trato de hacer, agradezco de cualquier forma su ayuda.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5140
Enlace directo a este mensaje Enviado: 15/Mayo/2019 a las 23:46
Hola!

Puedes hacer referencia a la función desde el generador de expresiones:

Prueba sin el signo igual (=)

Nombre en criterio
MiDato1()
y en el campo de Apellido en criterio
MiDato2()

Editado por mounir - 15/Mayo/2019 a las 23:47
Un Saludo.
Arriba
Jaimevc Ver desplegable
Nuevo
Nuevo


Unido: 05/Agosto/2017
Localización: Mexico
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Enviado: 16/Mayo/2019 a las 02:40
Ya lo he hecho así y sigue dandome la consulta vacía. La vedad núnca había usado una función, así que ahí es donde creo que está el detalle, a lo mejor no lo estoy haciendo bien en esa parte, ya leí un montón pero aún sigue quedandome vacía, seguiré leyendo, a lo mejor hay algo por ahí que me haga comprender el uso correcto, o la forma de poder llevar el valor de una variable a la consulta. Y es que no he querido meterme a las consultas en VBA porque la verdad me da un poco de miedo, lo que estudié no tiene nada que ver con programación pero igual me gusta jeje. Espero pronto encontrar una solución, si no pues tendré que usar un segundo Texbox para poderlo hacer como tu me dijiste, pero no creo que me dé por vencido aún, en dado caso creo que intentaría hacer la consulta en Vba y ver si se puede. Gracias por el apoyo.

Editado por Jaimevc - 16/Mayo/2019 a las 03:54
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11011
Enlace directo a este mensaje Enviado: 16/Mayo/2019 a las 09:01
Como te dice Mounir te tiene que funcionar, yo he probado esto:

Global Xs As String

Xs = "Luis"

Function ValorGlobales() As String
    ValorGlobales = Xs
End Function


y la consulta:

SELECT Clientes.Codigo, Clientes.Nombre, Clientes.Literal
FROM Clientes
WHERE Codigo < 5 AND Nombre=ValorGlobales()

da el resultado que debe:

ClientesConsulta
Codigo Nombre
2 Luis

Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Cárcel Brieva
Estado: Sin conexión
Puntos: 3352
Enlace directo a este mensaje Enviado: 16/Mayo/2019 a las 14:36
No tengo el código, evidentemente, pero ¿estás seguro de que la variable Var1 no está definida nuevamente como local?

Luis
Estoy en el módulo psiquiátrico de la prisión de Brieva
Arriba
Jaimevc Ver desplegable
Nuevo
Nuevo


Unido: 05/Agosto/2017
Localización: Mexico
Estado: Sin conexión
Puntos: 15
Enlace directo a este mensaje Enviado: 17/Mayo/2019 a las 01:50
Tenían razón, las tenía como locales, todo solucionado, muchas gracias, me ayudaron bastante, y pues aprendí algo nuevo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable