Botón que acceda directamente a un formulario

Tengo un formulario que se llama incidencias en el cual aparece a modo de resumen el nº de incidencia, el titulo de la incidencia y la fecha en la que se ha producido. Ahora lo que quiero es crear un botón en el cual, cuando haga click me abra otro formulario donde tengo esta incidencia de manera más detallada.
Yo lo que he hecho pero no queda nada profesional por eso os pido ayuda, es crear una consulta en la cual le pide al usuario que introduzca el nº de incidencia, una vez introducido el número le abre el formulario con esa incidencia al detalle.
Lo que busco es que cuando el usuario pulse el botón acceda directamente a la incidencia en cuestión.

1 Respuesta

Respuesta
1
Supongamos lo siguiente:
- El campo que te guarda el nº de incidencia se llama [NIncidencia], y el campo que guarda el número de incidencia en el detalle se llama [NIncidenciaDetall], y que son de tipo numérico
- El formulario con la incidencia detallada se llama FIncidenciaDetall
Lo que tienes que hacer es lo siguiente:
1.- Creas un botón de comando en el formulario Incidencias
2.- Sacas sus propiedades y te vas a la pestaña Eventos->Al hacer click. Verás que hay un pequeño botón con puntos suspensivos. Haces click sobre él y en la ventana que te aparece le dices que quieres generar código.
3.- Te aparecerá la ventana de VB, con dos líneas por defecto (Private Sub... y End Sub). No debes tocar esas líneas. En medio de ellas escribes el siguiente código:
---
Private Sub...
Dim vIn as Integer
vIn = Me.[NIncidencia].Value
DoCmd.OpenForm "FIncidenciaDetall",,,"[NIncidenciaDetall]=" & vIn
End Sub
---
Tú sólo debes cambiar el nombre del formulario y el nombre de los campos (marcados en negrita) por los que tú tengas en tu BD.
Ya me dirás qué tal te ha ido.
Hola,
No me ha funcionado.
Cuando pulso el botón me aparece un mensaje de introducir un valor por parámetro cuya "pregunta" es el nombre del cuadro de texto donde está alojado en nuestro caso NIncidenciaDetall.
Si le pongo el nº de la incidencia me la abre, pero vamos es como no quiero hacerlo :D
Si necesitas que te de más datos, solo tienes que pedírmelos.
Gracias y un saludo,
En la tabla donde guardas los detalles de la incidencia, ¿cómo se llama el campo que te recoge el número de incidencia?
Ya me dirás.
Hola,
En la tabla se llama Nº de incidencia.
OK!
Ahí tenemos un pequeño problema, que es el º a la derecha de la ene. Vamos a probar tres cosas:
Primera: en el código modifica la línea del DoCmd por esta otra:
DoCmd.OpenForm "FIncidenciaDetall",,,"[Nº de incidencia]=" & vIn
(Entre comillas debe ir el nombre de tu formulario).
Si así te funciona, asunto liquidado ;) Si no te funciona probamos la segunda.
Segunda: abres la tabla en vista diseño, seleccionas el campo Nº de incidencia y lo copias. Ahora te vas al código y modificas la línea del DoCmd así:
DoCmd.OpenForm "FIncidenciaDetall",,,"[Nº de incidencia]=" & vIn
(Entre comillas debe ir el nombre de tu formulario).
Pero NO escribas "manualmente" Nº de incidencia, sino que escribes:
Corchete de apertura - Pegas lo copiado - Corchete de cierre
En definitiva, te debería quedar:
[Nº de incidencia]
Aunque parezca igual que el primero, puede que no lo sea. Por eso lo hacemos así.
Si así te funciona pues... listo ;) Y si no... la decisión drástica.
Tercera: abres la tabla en vista diseño y le quitas el º, de manera que te quede como nombre de campo N de incidencia. Y cambias la línea del DoCmd así
DoCmd.OpenForm "FIncidenciaDetall",,,"[N de incidencia]=" & vIn
(Entre comillas debe ir el nombre de tu formulario).
Esta tercera opción es la más delicada, puesto que en teoría Access debería cambiarte automáticamente ese campo con el nuevo nombre en todos los objetos de la aplicación. Pero, si has escrito algo "manual", o se te ha creado algún filtro o código por ahí en medio, aunque tú no lo veas o no lo sepas, quizá te encuentres con que algo no funciona.
Si necesitas hacer esta tercera opción te recomiendo que utilices una copia de tu BD y que testees para asegurarte de que todo funciona correctamente.
Ya me dirás.
Muchísimas gracias funciona perfectamente con la primera opción que me dijiste.
Si no te importa te voy a formular la siguiente y última duda que tengo con esto.
El formulario Incidencias también tenía el campo código del camión. Ahora lo que quiero es crear un botón que me abra un formulario que se llama "Nueva incidencia". Lo que quiero hacer pero no lo consigo es que cuando me abra el formulario automáticamente coja el código del camión. Si quisiera seguir agregando registros que se siguiera manteniendo ese código.
Muchísimas gracias de nuevo. Un saludo,
Tu duda son dos dudas, así que vamos a por la primera:
1.- Abrir el formulario con el código del camión
Voy a suponer que el código del camión es de tipo numérico, y que el campo que lo contiene se llama [CodCamion]. Tú deberás cambiar el nombre del campo por el que tengas en tu BD.
También supondré que el campo del formulario "Nueva incidencia" se llama [CodCamionNuevo]
1.- Al botón que utilizas para crear la nueva incidencia, en el evento Al hacer click, le generas el siguiente código:
---
Private Sub...
Dim vCam As Integer
vCam = Me.[CodCamion].Value
DoCmd.OpenForm "Nueva incidencia",,,,acFormAdd
Forms![Nueva incidencia].[CodCamionNuevo].value = vCam
End Sub
---
2.- Agregar registros con el mismo código
1.- En el formulario "Nueva incidencia" creas un botón de comando que se llamará como título, por ejemplo, <Agregar con mismo código>.
2.- Sacas las propiedades de ese botón y te vas a la pestaña Otras->Nombre, y le escribes ahí cmdNuevoMismoCodCam
3.- Todavía en las propiedades, te vas a la pestaña Eventos->Al hacer click, y le generas el siguiente código:
---
Private Sub...
Dim vCam As Integer
DoCmd.RunCommand acCmdSaveRecord
vCam = Me.[CodCamionNuevo].Value
DoCmd.RunCommand acCmdRecordsGoToNew
Me.[CodCamionNuevo].Value = vCam
End Sub
---
Recuerda que, en los códigos, debes cambiar los nombres de los campos por los que tú tengas en tu BD (te los he marcado en negrita)
Ten en cuenta que si utilizas los botones y tanto [CodCamion] como [CodCamionNuevo] no tienen ningún valor te saltará un error. Ojo.
Y eso es todo.
Ya me dirás,
Neckkito

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas