Autor |
Tema Buscar Opciones del Tema
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Tema: Busqueda de registro en formulario Enviado: 29/Julio/2019 a las 17:10 |
Hola, tengo una nueva duda, a ver si me podéis echar un cable.
He creado un formulario que al final tiene un botón que activa un evento tal como sigue:
Si el campo X del formulario esta null entonces abro un nuevo formulario , llamémosle FORM1, hasta aquí perfecto via if isnull ..... ahora bien, si el campo X no esta null, contiene una referencia, me gustaría que abriese el FORM2 que contiene información de una tabla y que esa referencia del campo X la tuviese en cuenta al abrir el form 2 de tal forma que abriese ese registro exacto de la tabla y no otro cuando abre el FORM2.
Imagino que debe ser fácil, pero sólo llego a abrir el FORM2 con otro registro que no es el del campo X por tanto con una información que no me sirve ?
Alguna idea ?
Gracias.
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 29/Julio/2019 a las 17:38 |
Hola. ¿Cómo abres el form2? ¿Hacen falta todos los registros de la tabla del form2 o sólo el registro del campo X? Ya comentas. Un saludo a todos
|
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Enviado: 30/Julio/2019 a las 11:06 |
Hola,
El form 2 lo abro desde el mismo boton con un evento:
Private Sub Comando44_Click()
If IsNull(FacturaNr) Then DoCmd.OpenForm "Formulario22" ( este seria el FORM1 )
Else DoCmd.OpenForm "Formulario23" ( este seria el FORM2 )
End If End Sub
En el form2 tienen que aparecer todos los registros si.
Gracias
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 30/Julio/2019 a las 11:22 |
Hola. Mira este hilo del foro:
Casi seguro que aporta ideas para resolver la duda. Ya comentas. Un saludo a todos
|
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Enviado: 30/Julio/2019 a las 16:05 |
Gracias !
Por lo que entiendo tengo que agregar codigo a los dos formularios. Mi primer formulario es el Formularioesp y al final abro el Formulario22, este no tengo problema y lo abro y cierro en funcion de si el campo FacturaNr esta vacio o no. Ahora añado el resto para el evento del comando al hacer click y que no sea null:
Private Sub Comando44_Click() If IsNull(FacturaNr) Then DoCmd.OpenForm "Formulario22"
Else
DoCmd.Save Dim stDocName As String stDocName = "FORMULARIO23" DoCmd.OpenForm stDocName, , , , , , Me.NumeroDEF
End If End Sub
En la parte del codigo del formulario 23 es donde me pierdo mas:
Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then Dim rst As Recordset Set rst = Me.RecordsetClone rst.FindFirst "Id =" & Me.OpenArgs Me.Bookmark = rst.Bookmark rst.Close Else Me.Form.Filter = "NumeroDEF = Me.NumeroDEF" Me.Form.FilterOn = False End If End Sub
La variable es que el campo FacturaNr esté o no vacio, pero cuando abro el formulario 23 quiero que me abra el formulario por el registro ( que tambien existe en el formularioesp ) NumeroDEF
Que me sugieres ?
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 30/Julio/2019 a las 17:13 |
Hola. Prueba con un código parecido a:
Private Sub Form_Open(Cancel As Integer) Dim rst As Recordset
If Not IsNull(Me.OpenArgs) Then Set rst = Me.RecordsetClone rst.FindFirst "NumeroDef =" & Me.OpenArgs Me.Bookmark = rst.Bookmark rst.Close
End If End Sub
Eso sí, suponiendo que en el formulario23 el campo también se llama NumeroDef y que siempre existe el valor buscado. Sí se tiene duda de esto del valor, habrá que utilizar "Nomatch" para comprobar que la búsqueda tiene éxito o no. También se supone que es un valor numérico, si no es así habrá que ponerlo entre comillas simples. Escrito de memoria, así es que.... Ya comentas. Un saludo a todos
|
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Enviado: 31/Julio/2019 a las 09:37 |
Hola gracias,
El campo NumeroDEF existe en el formulario23 pero puede ser alfanumérico, por tanto lo entrecomillo simple y me da el error " el argumento no es opcional "
Si lo entiendo bien el numero o secuencia del registro y los tipos de argumentos deben coincidir, puede que el error esté en que no he declarado el argumento como opcional ?
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 31/Julio/2019 a las 10:10 |
Hola. Pero ¿qué has puesto y en que línea salta el error? Ya comentas. Un saludo a todos
|
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Enviado: 31/Julio/2019 a las 10:38 |
Perdon,
He puesto lo que me has pegado arriba, pero he cambiado las comillas dobles por simples:
Private Sub Form_Open(Cancel As Integer) Dim rst As Recordset
If Not IsNull(Me.OpenArgs) Then Set rst = Me.RecordsetClone rst.FindFirst ''NumeroDef ='' & Me.OpenArgs Me.Bookmark = rst.Bookmark rst.Close
End If End Sub
El error me lo marca en la linea
rst.FindFirst ''NumeroDef ='' & Me.OpenArgs ( sombreado Find First )
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 31/Julio/2019 a las 10:52 |
No, No por ser una cadena quedaría:
rst.FindFirst ''NumeroDef ='" & Me.OpenArgs & "'"
Ya comentas
|
|
Abel
Nuevo
Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 39
|
Enviado: 31/Julio/2019 a las 11:17 |
Ahora si !!! si señor !!!
Ostras me acabas de alegrar el dia, me tenia loco !!
Gran ayuda, gran aporte.
Muchas gracias.
|
|
prga
Moderador
Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
|
Enviado: 31/Julio/2019 a las 11:44 |
Hola. En un hilo de hoy mismo, Jesús ( Mihura) ponía esta apostilla:
Dices que no entiendes nada de módulos (VBA) y quieres manejarlos, necesitas aprender. En este foro hay un excelente curso de iniciación al Access de Eduardo Olaz, hazlo, verás que bien te viene.
La hago también mía y creo que es válida para este hilo y otros muchos de este foro. Un saludo a todos
Editado por prga - 31/Julio/2019 a las 11:53
|
|