¿Cierro mal el formulario?

12 envíos / 0 nuevos
Último envío
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
¿Cierro mal el formulario?

Hola

 

Tengo un problema con un código que debe ejecutarse al abrir un formulario.

 

La situación se da entre dos formularios. Tengo uno que se llama "Mis Tareas" y otro que se llama "Tareas".

En el primero se filtran las tareas que hay que hacer por persona y por una serie de criterios, como fecha de inicio anterior o posterior a unas dadas, etc. Es decir, tengo una serie de cuadros combinados y cuadros de texto que filtran lo que aparece en un listbox al lado.

 

Quiero que cuando se hace doble click en la tarea que quieras seleccionar en el listbox, se abra el formulario "Tareas".

Hasta aquí, ningún problema.

 

El formulario "Tareas" tiene una serie de cuadros de texto y cuadros combinados en los que aparecen (y se pueden editar) los datos del registro correspondiente a la tarea seleccionada.

Este formulario lo utilizo para introducir los datos de tareas nuevas o para modificar los de las existentes. Incluye datos como Nombre de la tarea, Responsable de la tarea, Cliente, Fecha objetivo, Fecha de cumplimiento, etc.

 

Lo que necesito es que cuando se abra el formulario para editar, aparezca donde sea. Pero cuando lo abro desde el formulario "Mis Tareas" tiene que localizar el registro de la tarea correspondiente (sobre la que se hizo doble click) y presentarlo.

 

He escrito un código que funciona la primera vez, pero cuando toca cerrar el formulario y volverlo a abrir ya no funciona.

 

Lo que hago es lo siguiente:

 

En el formulario "Mis Tareas" introduzco el código siguiente:

 

Private Sub Lista16_DblClick(Cancel As Integer)

 Form_Tareas.Tag = Lista16.Value

DoCmd.OpenForm "Tareas", acNormal, , , acFormEdit, acWindowNormal

 End Sub

 
Es decir, utilizo la propiedad Tag del formulario para pasar la información, en vez de utilizar una variable global. Me ahorro declaraciones.
 
En el formulario "Tareas" introduzco el código siguiente:
 
Private Sub Form_Open(Cancel As Integer)
 
    If Form_Tareas.Tag <> "" Then                                 /Compruebo si abro el formulario desde "Mis Tareas". En condiciones normales, Tag no tiene valor asignado.
        Form_Tareas.Recordset.FindFirst "Id=" & Form_Tareas.Tag       /Localizo el primer registro que cumple el valor (y único, pues Id es un valor que no se repite)
        Form_Tareas.Tag = ""                                          /Vuelvo a asignar un valor nulo a Tag
    End If
End Sub
 
Por otra parte, cuando pincho sobre el botón "Volver", tengo que cerrar las tablas y el formulario:
 
Private Sub IrAPrincipal_Click()
  DoCmd.Close acTable, "Tareas", acSaveYes
  DoCmd.Close acTable, "Personal Consulnima", acSaveYes
  DoCmd.Close acForm, "Tareas", acSaveYes
  
End Sub
 
 
El caso es que el código sí funciona la primera vez, pero no la segunda y siguientes. ¿Qué hago mal? ¿Qué se me olvida resetear?
 
 
Saludos
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
indicar criterio para abrir el formulario

cuando abres un formulario con DoCmd.OpenForm puedes indicar qué registro quieres mostrar

fíjate en ese argumento que se llama WhereCondition

 

DoCmd.OpenForm "Tareas", acNormal, , "Id=" & Lista16.Value, acFormEdit, acWindowNormal

 

También es interesante, si quieres pasar argumentos al formulario de destino, el último argumento, ese que se llama OpenArgs, con él puedes pasar un texto con lo que tú quieras, que luego puedas manipular en el código del formulario.

 

------
Ya sé Excel, pero necesito más.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
¿cerrar las tablas?

por cierto, ¿por qué tienes que cerrar las tablas? ¿qué hacen abiertas?

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: indicar criterio para abrir el formulario

Muchas gracias

 

He estado trasteando con OpenArgs, y me funciona igual que cuando uso una variable global y cuando uso la propiedad Tag. Es decir, no funciona.

 

No había utilizado el parámetro WhereCondition porque eso me filtra la tabla (a modo de consulta), pero yo lo único que quiero es que se desplace al registro correspondiente. En cualquier caso, a unas malas, es una opción.

 

En cuanto a las tablas, es que no sé cómo hacer que los formularios se ejecuten sin que se abra el entorno de Access. Entonces se me abre de fondo el Access, y según abro y cierro las tablas se ven de fondo. Prefiero que no se vean más de lo imprescindible en mi versión beta de esto, para evitar tentaciones de meter datos a pedal.

 

Saludos

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: indicar criterio para abrir el formulario

Por cierto, he probado lo que me dices, y como solución a mi problema me sirve. Aunque, como te he comentado en el punto anterior, no es exactamente lo que yo buscaba.

 

Sin embargo, respecto a mi código para cerrar el formulario (cierro tablas y luego cierro el formulario) me ocurre que tengo que darle dos veces.

Es decir, con el formulario abierto pincho en el botón de volver y ejecuta el código. El resultado es que se cierran las tablas, pero no el formulario. Si vuelvo a pinchar en el botón, entonces sí que se cierra el formulario.

 

¿Por qué puede ser?

 

 

Saludos

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Opciones de la base de datos

En las opciones de la base de datos puedes decirle que muestre un formulario al inciar la aplicación. (está en opciones>base de datos actual)

 

abrir un formulario de access al iniciar la aplicación 

 

Puedes decirle también que oculte el panel de navegación, donde aparecen las tablas y demás cosas de access.

(para mostrarlos de nuevo basta con que pulses F11)

 Mostrar u ocultar el panel de navegación en access para no ver tablas ni formularios ni consultas

 

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: ¿Cierro mal el formulario?

Con esas opciones sigo viendo el entorno de Access.

 

Es cierto que se presentan menos cosas, pero no funciona como si fuera una aplicación independiente (lo he visto en algunas bases de datos, pero no lo sé hacer)

 

Saludos

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: indicar criterio para abrir el formulario

dos cosas que me extrañan:

1- Estableces el valor de Form_tareas.tag antes de abrir el formulario. cuando el formulario se abre ¿qué valor le llega?

2- Cuando cierras el formulario guardas cambios ¿es que has cambiado el diseño del formulario?

DoCmd.Close acForm, "Tareas", acSaveYes

¿y si no guardas cambios en el formulario al cerrarlo? quita acsaveyes

 

sigo sin entender por qué están las tablas abiertas

 

------
Ya sé Excel, pero necesito más.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: ¿Cierro mal el formulario?

Puedes desactivar los menús, puedes quitar opciones, pero siempre se podrá recuperar, porque lo estás abriendo con access

Puedes crear un archivo mediocompilado accde, pero tampoco es un ejecutable propiamente dicho

 

Lo más parecido a un ejecutable, para que se pueda abrir incluso en equipos sin licencia de access, es utilizar el runtime de access, es como el motor de access.

busca algo llamado Access Developer Extensions:

http://answers.microsoft.com/en-us/office/forum/office_2010-access/access-developer-extension-for-2010-version/ff040234-bf30-42b3-9e2f-0cc675088a25

en la versión 2007 tienes que descargarlo aparte (http://www.microsoft.com/en-us/download/details.aspx?id=24569)

en la versión 2010 viene en el paquete de instalación, aunque no se instala por defecto.

 

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: indicar criterio para abrir el formulario

Las tablas las tenía que abrir porque si no me da error al manipularlas.

Sin duda es porque estoy haciendo algo mal...

 

 

Saludos

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 39 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: indicar criterio para abrir el formulario

Pero la manipulación entiendo que es de los datos que hay almacenados en la tabla, no de la tabla en sí, es decir, que imagino que no modificas el diseño de la tabla, no añades campos nuevos ni creas índices nuevos, ..., simplemente editas datos existentes o añades datos nuevos ¿no?

 

Para editar los datos no necesitas que la tabla esté abierta, esa es la idea del formulario, editar los datos que están guardados en una tabla.

 

------
Ya sé Excel, pero necesito más.

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: indicar criterio para abrir el formulario

La aplicación la tengo que presentar hoy o mañana. De momento irá así. Pero como sin duda tendré que ir ampliándola o corrigiendo errores, en una segunda versión revisaré esto sin falta.

 

Muchas gracias