Access - ejemplo instrucción cmd.openform con una consulta de filtro

 
Vista:
sin imagen de perfil

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por INÉS (7 intervenciones) el 23/06/2013 19:02:08
Hola a todos.
Alguien tiene un ejemplo de la sintaxis de la instrucción cmd. openform en la que utilice una consulta de tablas relacionadas de filtro.

Muchas gracias
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

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por quique (293 intervenciones) el 23/06/2013 20:03:17
Hola Ines: No se si comprendí tu pregunta pero sería algo así.
Si es apretando un botón
Private Sub Comando1_Click()
DoCmd.OpenForm "Nombre de tu Form"
End Sub
Si fuera después de actualizar la consulta sería en el Afterupdate.
Ahora bien si el form lo tenes como un subformulario la instrucción debiera ser un Requry.
Saludos
Quique
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
sin imagen de perfil

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por INES (7 intervenciones) el 24/06/2013 12:15:11
Hola Quique y Neckkito gracias a ambos.
Efectivamente Quique tengo un formulario con un subormulario cuya relación es 1 registro de la tabla de origen del formulario es a n registros de la tabla origen del subformulario.
De un cuadro de lista selecciono un registro en concreto, y para ese filtro, que extraigo del registro de cuadro de lista seleccionado con el doble click, quiero abrir el formulario que contiene ese subformulario con el DoCmd.OpenForm aplicando el filtro de la consulta, pero no sé cómo espeficarlo en al instrucción DoCmd. Es decir,
si tengo que poner el nombre de la consulta entre comillas, ????
si la consulta debe contener en la condición where la cadena [fomrularios]![nombre formulario que contiene la lista]![valor del campo que relaciona ambas tablas]????
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por Neckkito (1157 intervenciones) el 24/06/2013 14:08:41
Hola, Inés:

El formulario y el subformulario ya van relacionados, según comentas, por lo que por ahí no tienes que hacer nada.

Imaginemos que en tu formulario tienes un identificador del registro, que yo le llamaré [Id], de tipo numérico.

Imaginemos que el valor que te guarda el cuadro de lista es, precisamente, ese identificador de los registros.

Entonces, en el evento "Al hacer doble click" del cuadro de lista le generas el siguiente código:

...
Private Sub...
docmd.openform "nombreForm",,,"[Id]=" & me.[nombreListBox].value
End Sub
...

Si ese [Id] fuera un dato de tipo texto el filtro debería ir entre comillas simples, así:

1
"[Id]='" & me.[nombreListBox].value & "'"



A ver si así te funciona.

Un saludo,

Neckkito
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
sin imagen de perfil

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por INÉS (7 intervenciones) el 25/06/2013 11:50:28
Hola Neckkito

Muchas gracias con lo que tú me comentas me sale, pero ahora me gustaría que del subformulario cuya vista predeterminada la tengo como un único formulario (no como vista hoja de datos!!), me mostrase, de los n registro,s un registro en concreto.
Perdona por si no me expreso suficientemente bien.
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por Neckkito (1157 intervenciones) el 26/06/2013 18:43:15
Hola!

Imaginemos que en tu formulario tienes un textbox de búsqueda de un valor tipo texto, llamado txtBusco, y supongamos que:
- Tu subformulario se llama "subFrmSecundario"
- El campo que se tiene que buscar se llama [Busco]

Luego en el evento "Después de actualizar" del textbox podrías escribir el siguiente código:

...
Private Sub...
Dim miFiltro as string
Dim vBusco as string
'Cogemos el valor del textbox
vBusco=nz(me.txtBusco.Value,"")
'Si no hay valor salimos
If vBusco="" then exit sub
'Creamos el filtro
miFiltro="[Busco]='" & vBusco & "'"
'Aplicamos el filtro al subformulario
me.subFormSecundario.Filter=miFiltro
'Ejecutamos el filtro
me.subFrmSecundario.FilterOn=true
End Sub
...

Si no se te actualizara la información al momento añade esta línea antes del End Sub

...
me.subFrmSecundario.Requery
...

Y listos.

Un saludo,

Neckkito
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
sin imagen de perfil

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por INES (7 intervenciones) el 27/06/2013 23:38:46
Hola Neckkito.
Muchas gracias por tu aportación con parte del contenido de tu explicación ya lo he conseguido.
Ahora tengo otra consulta, estoy intentando hacer un INSERT

DIM SQL AS STRING
DIM VALOR1 AS DOUBLE

VALOR1 = ME.VARIABLE
sql = "INSERT INTO [tabla] (campo1) VALUES (VALOR1)"
DoCmd.RunSQL sql

Cuando ejecuto la instrucción me sale un msgbox pidiéndome el valor del parámetro VALOR1.
Depurando el programa yo me detengo en la instrucción sql = “INSERT ........” y el campo valor1 está informado con el valor del formulario, sin embargo me lo pide en el msgbox.
He probado escribiendo el valor literal en lugar de VALOR1 y entonces me lo hace correctamente, sin embargo cuando se lo doy como una variable me lo pide.
¿se te ocurre por què puede ser??
Muchas gracias
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por Neckkito (1157 intervenciones) el 27/06/2013 23:45:06
Hola, Inés:

La consulta SQL que has construido no entiende que VALOR1 es un dato recogido en una variable, sino que entiende que es un parámetro.

La tienes que construir así:

1
sql = "INSERT INTO [tabla] (campo1) VALUES ('" & VALOR1 & "')"



A ver si así te funciona.

Saludos,

Neckkito
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
Imágen de perfil de jorros
Val: 11
Ha aumentado su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por jorros (5 intervenciones) el 27/05/2017 00:05:14
Gracias Neckkito
He estado mirando las redes y todo los que encontraba me daba error, tu respuesta ha sido la correcta, al resto les faltaba la ...Value

Un saludo
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ejemplo instrucción cmd.openform con una consulta de filtro

Publicado por Neckkito (1157 intervenciones) el 23/06/2013 22:04:19
Hola, Inés:

Estoy de acuerdo con Quique en que tu consulta es difusa y difícil de interpretar. Por aportar algo, si los datos te salen de esa consulta que comentas, que relaciona las tablas, quizá lo más práctico sería crearte un formulario directamente sobre dicha consulta para ver los datos que quieres ver.

Tras eso sí que puedes aplicar lo que comenta Quique del Docmd.OpenForm.

Y, puestos a ahondar más, incluso podrías filtrar sobre los datos devueltos por la consulta al tiempo que abres el formulario. Para eso necesitarías la siguiente sintaxis:

DoCmd.OpenForm "nombreForm", , , "[Campo]=<Filtro>"

La construcción del filtro dependerá del tipo de datos que necesites filtrar (texto, número, fecha...).

A ver si entre los dos, más o menos, acertamos en algo

Saludos,


http://neckkito.siliconproject.com.ar
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