Access - Filtro de un formulario

 
Vista:

Filtro de un formulario

Publicado por Filtro de folmulario (28 intervenciones) el 22/06/2007 15:14:15
Hola buenas:

A ver como me explico.
Si pongo este código en un botón de un formulario de access:
"DoCmd.DoMenuItem acFormBar, acRecordsMenu, 2, , acMenuVer70"
lo que hace es que cada vez que pulse ese boton se me aplique el filtro de ese formulario.

Pues bien mi idea es poner ese botón en otro formulario mientras este sigue abierto.
Digamos que tengo un formulario con una lista de empleados ordenados alfabeticamente por apellido en el cual no puedo modificar los datos. Pero tengo un botón que me abre otro formulario para poder modificarlos. Si por ejemplo se apellida Garcia y estaba en el puesto nº 8 en el anterior formulario al cambiarle el apellido a Alonso quiero que automaticamente en cuanto le de en el boton del formulario de modificar a guardar cambios a parte de guardar esos cambios (eso ya lo hace) que me actualice la lista del primer formulario (el que sólo me deja ver los datos).

Un saludo y gracias.
Tronic
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:Filtro de un formulario

Publicado por Enrique (1299 intervenciones) el 22/06/2007 16:45:39
Hola Tronic:
Se entiende que ambos formularios tienen como origen del registro la misma Tabla y supongamos que el Formulario donde NO se pueden modificar datos se llame FORMULARIO1, el que SI puede modificar datos se llame FORMULARIO2 y el Botón de Comando se llame GUARDAR. Primero hay que guardar el registro en la Tabla y después hacer un REQUERY a los campos del Formulario1 DESDE el Formulario2, por cada uno que se pueda modificar, ejemplo:

'EVENTO CLICK DEL BOTON DE COMANDO EN EL FORMULARIO2:
Private Sub Guardar_Click()
DoCmd.RunCommand acCmdSaveRecord
Form_Formulario1.Nombre.Requery
Form_Formulario1.Apellido1.Requery
Form_Formulario1.Apellido2.Requery
End Sub

Ambos Formularios deben de estar abiertos. Prueba a ver si funciona.

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:Filtro de un formulario

Publicado por Tronic (28 intervenciones) el 22/06/2007 19:02:04
Hola Enrique.

Tube otra duda el otro día y tambien me la solucionaste tu.
Eso que me has dicho ya lo había probado y si que actualiza los campos pero no me los ordena que es lo que quiero tambien
No se si se podra pero yo si pongo un boton en el formulario1que active el filtro si que me los vuelve a ordenar. La idea del boton no me mola mucho queda algo cutre.
y si no hay boton dandole al boton secundari del mouse y luego en "aplicar filtro u ordenar" si que me los ordena.
Pero yo quiero que lo haga desde le formulario2.

Gracias
Tronic
pd: tambien me llamo Enrique (kike)
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:Filtro de un formulario

Publicado por Enrique (1299 intervenciones) el 22/06/2007 20:30:41
Hola Kike:
Tu mismo decías en el primer mensaje: "Pues bien mi idea es poner ese botón en otro formulario..... ", o sea que lo del botón no se me ha ocurrido a mi, y si ahora te parece "cutre" ¿ que quieres que te diga ?

En cuanto a que no te ordena los campos, como no sé como lo tienes hecho, ni que tipo de formulario estas usando (Normal, Contínuo o Vista Hoja de datos), ni si lo haces por código o mediante una consulta. En fin, que no aportas datos suficientes para darte alguna indicación. Siento no poder ayudarte en esta ocasión.

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:Filtro de un formulario

Publicado por Tronic (1 intervención) el 22/06/2007 20:56:22
Hola de nuevo.

Lo que me parece cutre es poner el boton en el formulario 1 solo para que me ordene los datos.
El botón que tu decias en el formulario 2 ya le tengo y ese es necesario para guardar los datos que hemos modificado.

Solo quiero que ese botón me ordene tambien los datos del formulario 1. Ademas de actualizarmelos, que ya lo hace, que me los ordene tambien.

Que es precisamente eso lo único que no me hace, los actuliza pero no los ordena.

El formulario 1 es continuo, aparecen todos los datos de todos los clientes.
con un boton por cada cliente que me abre el formulario 2 para editarlos (modificarlos) pero ese formulario (formulario2) solo muestra un cliente no todos como el anterior.

Na tampoco te preocupes, si no se puede solucionar buscaré otra manera.

he probao a poner el evento:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 2, , acMenuVer70
al activar, o al actualizar, al recibir vista....
pero no funciona. solo al mover el mouse o click

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

RE:Filtro de un formulario

Publicado por Enrique (1299 intervenciones) el 22/06/2007 22:51:28
Hola Tronic:
Ahora creo que lo he entendido, lo que no quieres es tener que pulsar un botón en el Formulario1 para que te ordene los campos; en ese caso se me ocurrre un "truquillo" que consiste en dejar el codigo que ordena en el Evento Click del botón, pero ocultando dicho botón poniendo su propiedad Visible a No y ejecutar el Evento Click del botón del Formulario1 desde el botón "Actualizar" del Formulario2, así:

Form_Formulario1.NombreBoton_Click

Lo he probado y el Evento Click se ejecuta igual, aunque el botón del Form1 esté Invisible. Por supuesto que hay formas más "profesionales" de ordenar los registros por código, actuando sobre el RecordSource del formulario, pero prefiero no complicarte si te va bien con el DoCmd.DoMenuItem....... que estás usando ahora para la ordenación.

Un saludo
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:Filtro de un formulario

Publicado por Tronic (28 intervenciones) el 25/06/2007 14:38:40
Hola Enrique.

Lo siento pero lo que me has dicho no me funciona.
Me da error de compilacion
"No se encontro el metodo o dato miembro"

Saludos
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:Filtro de un formulario

Publicado por Enrique (1299 intervenciones) el 25/06/2007 16:04:54
Hola Tronic:
Es cierto, se me olvidó decirte que el Evento Click del botón en el Formulario1 tiene que ser Público y ahora lo tienes como Privado. Fíjate que tienes algo parecido a esto:

Private Sub NombreBoton_Click()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 2, , acMenuVer70
End Sub

Lo único que tienes que hacer es cambiar la palabra Private por Public y así ya no te saldrá el error de compilación que indicas.

De todas formas tampoco es necesario actuar sobre el botón (podrías incluso eliminarlo), prueba de esta manera:

En el Formulario1 (donde no quieres pulsar el botón) pon este Evento:
Public Sub Ordena()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 2, , acMenuVer70
End Sub

En el Formulario2, Evento Click del botón, pones este otro:
Private Sub NombreBoton_Click()
Aqui pones el código que actualiza
Form_Formulario1.Ordena '<--- Ejecuta el Evento Público del Formulario1
End Sub

Ahora ya debería de funcionar sin problemas.
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:Filtro de un formulario

Publicado por Tronic (28 intervenciones) el 26/06/2007 16:25:56
Hola Enrique.

Funciona!!!
Apuntate otra, te debo 2.

Gracias.
Tronic

PD: lo uncio que no me deja cerrar el formulario, pero lo seguire intentando (te paso el código por si ves algo mal):

Private Sub guardar_Click()
On Error GoTo Err_guardar_Click

If Nombre <> "" Then

DoCmd.RunSQL ("INSERT INTO [grupo] ([grupo]) VALUES(grupo)")

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Form_subformulario.Nombre.Requery
Form_subformulario.Definicion.Requery
Form_subformulario.Etimologia.Requery
Form_subformulario.Notas.Requery

Form_Ver.nota.Requery
Formularios!ver![cuadro Combinado108].Requery

Form_subformulario.Requery

Form_suformulario.Ordena

DoCmd.Close

Else
MsgBox "El campo 'Nombre' es necesario. Introduzca un nombre para la definición"
End If

Exit_guardar_Click:
Exit Sub

Err_guardar_Click:
'MsgBox Err.Description
Resume Exit_guardar_Click

End Sub

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

RE:Filtro de un formulario

Publicado por Enrique (1299 intervenciones) el 26/06/2007 20:03:48
Hola Tronic:
Lo único que se me ocurre es asegurar el cierre del formulario desde donde ejecutas el Evento Guardar, nombrándolo expresamente, en lugar del simple DoCmd.Close que solo cierra el Formulario activo:

DoCmd.Close acForm, "NombreFormulario"

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