Access - Código abrir formulario no funciona

 
Vista:

Código abrir formulario no funciona

Publicado por AleReguera (3 intervenciones) el 04/03/2018 21:04:17
Buenas noches.

Tengo un código realizado en Access para un Login, que cuando se logea el usuario abre un formulario u otro, en función del rango que tenga un empleado. Os copio aquí el código que tengo (funciona todo correcto, excepto que no me abre el formulario con el código DoCmd.Openform...)

No me sale ningún error, simplemente que no me abre nada, como si no le hubiera puesto la función DoCmd.Openform...

1
2
3
4
5
6
7
8
9
10
11
12
13
UserLevel = DLookup("NivelEmpleado", "Empleados", "DNIEmpleado = '" & Me.Txt_Usuario.Value & "'")
'Abre formulario de administrador
If UserLevel = 1 Then
	DoCmd.Close
	MsgBox "Bienvenido", , "Administrador"
	DoCmd.OpenForm "Panel_administrador"
End If
'Abre formulario de oficina
If UserLevel = 2 Then
	DoCmd.Close
	MsgBox "Bienvenido", , "Personal de atención al cliente"
	DoCmd.OpenForm "Panel_oficina"
End If

A ver si me podeis ayudar porque no se que falla....Un saludo. 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

Código abrir formulario no funciona

Publicado por TrujelloCm (1 intervención) el 04/03/2018 22:15:03
Hola, no estoy muy puesto con vba pero ami me funciona esto, prueba y me cuentas

1
DoCmd.OpenForm "Panel_oficina", acNormal, "", "", , acNormal

la sintaxxis es esta:
OpenForm (NombreDeFormulario, Vista, NombreDeFiltro, CondiciónWhere, ModoDeDatos, ModoDeVentana, OpenArgs)

recuerda que despues de cada com hay un espacio

Yo personal mente lo tengo en un modulo aparte de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'------------------------------------------------------------
' ABRIR FORMULARIO 
'------------------------------------------------------------
Function AbrirFormPanel_oficina()
On Error GoTo AbrirFormPanel_oficina_Err
    'Abrimos formulario
    DoCmd.OpenForm "Panel_oficina", acNormal, "", "", , acNormal
 
AbrirFormPanel_oficina_Exit:
    Exit Function
 
AbrirFormPanel_oficina_Err:
    MsgBox Error$
    Resume AbrirFormPanel_oficina_Exit
 
End Function

Y lo llamo desde un botón de esta manera:

1
2
3
Private Sub btnNuevo_Click()
    AbrirFormPanel_oficina
End Sub

Prueba y me cuentas, pero te repito que no estoy muy puesto en VBA
Espero que te sirva
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

Código abrir formulario no funciona

Publicado por Anonimo (3325 intervenciones) el 05/03/2018 12:17:28
Una pequeña indicación sobre apertura de objetos.

En su gran mayoría las manipulaciones de objetos (como en el presente caso la apertura de un formulario) admiten PARAMETROS que si no se utilizan tomara los de 'por defecto' y por defecto son lo de 'acNormal' y las dobles comillas como indicadores de cadena de texto vacías.

Aquellos parámetros que NO se utilicen se pueden dejar en blanco y si todos están en blanco .... sobran incluso las comas de separación.
Las comas (como separadores) solo son necesarias (mas bien indispensables) si se desea utilizar algún parámetro y se necesita indicar 'su posición ordinal' en la lista de parámetros (hay mas modos de indicar valores como parámetros)

Ejemplos:
El caso actual se resolvería así ==>
1
DoCmd.OpenForm "Panel_oficina"

Si le desease enviar una condición (que es el tercer parámetro) se aplicaria asi:
La condición: "[Usuario] = " & DLookup("NombreEmpleado", "Empleados", "DNIEmpleado = '" & Me.Txt_Usuario & "'")

1
DoCmd.OpenForm "Panel_oficina", , ,  "[Usuario] = " & DLookup("NombreEmpleado", "Empleados", "DNIEmpleado = '" & Me.Txt_Usuario & "'")

Y (si estuviera así diseñada la aplicación) se abriría el formulario mostrando los registros que ese usuario tuviera asignados.
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

Código abrir formulario no funciona

Publicado por TrujelloCm (6 intervenciones) el 05/03/2018 16:49:29
Gracias por tu indicación, todos los días se aprende algo y a mi me ayuda, como dije, no estoy muy puesto en VBA y solo he tratado de ayudar con un ejemplo que a mi me ha valido, de hecho, en este mismo ej. usé la forma
1
DoCmd.OpenForm "Panel_oficina"
y no me abría el formulario
Pero repito sinceramente, gracias por tu corrección.
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

Código abrir formulario no funciona

Publicado por Anonimo (3325 intervenciones) el 05/03/2018 18:15:03
Lo que he expuesto (como aclaración, no como corrección) es lo que aparece cuando acudes a la ayuda de Access (cuando se pulsa F1)

En ella y de forma expresa cuando detalla como se puede manipular el modo de apertura de los formularios, indica con claridad que solo es imprescindible el nombre del formulario (y que el tipo de dato que admite es Variant), el resto son opcionales y por lo tanto prescindibles.

Si en tu caso solo ha sido funcional al añadir el resto de parámetros, posiblemente en su diseño se le asignaron propiedades que en esa apertura son sobrescritos (sin ellos .... abriría como icono u otra forma que solo el creador podrá concluir).

P.D.
La ayuda de Access esta avalada por los autores de la aplicación y validada por la experiencia practica de miles de usuarios finales.
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

Código abrir formulario no funciona

Publicado por AleReguera (3 intervenciones) el 05/03/2018 21:52:02
Y porqué en mi código no me hace absolutamente nada sólo a la hora de abrir el formulario nuevo? Es decir...de las 3 acciones que pongo en el código:

1
2
3
4
If UserLevel = 1 Then
	DoCmd.Close
	MsgBox "Bienvenido", , "Administrador"
	DoCmd.OpenForm "Panel_administrador"

Se cumple que cierre el formulario....se cumple que me salga el mensaje de Administrador...pero no se cumple el código de abrir formulario...es lo que no entiendo, porque el código de abrir formulario es sencillo...pero no me lo abre.
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

Código abrir formulario no funciona

Publicado por TrujelloCm (6 intervenciones) el 05/03/2018 22:02:02
Como comenté al principio, no soy programador VBA y solo te indiqué la forma en que me funcionó a mí ya que tenía el mismo código que tú y no hacía nada. probé con esto, y me funcionó
1
DoCmd.OpenForm "Panel_oficina", acNormal, "", "", , acNormal
pero seguramente el otro usuario te pueda ayudar más que yo
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

Código abrir formulario no funciona

Publicado por AleReguera (3 intervenciones) el 05/03/2018 21:58:16
Ya he dado con el problema....

Al poner en el formulario de Inicio de sesión el código "Al cronómetro" FechaAcceso = Now

Ese código hace que no me abra el formulario siguiente....no entiendo el porqué...
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

Código abrir formulario no funciona

Publicado por Anonimo (3325 intervenciones) el 06/03/2018 00:02:57
La solución es sencilla (y nada tiene que ver en so se le envían o no parámetros), el evento al cronometro interrumpe cada x tiempo forzando situaciones incorrectas.

Cierra el formulario DESPUES de abrir el otro, así podrá cumplimentar toda la secuencia y trabajar de forma correcta, se cumplirá esa acción y antes de recibir el foco de forma definitiva 'regresara' al que llama para cerrarlo.
(la secuencia de eventos esta descrita en la ayuda de Access, es tan legible como el foro y coincido con lo de que en papel seria mas apreciada)

Otra opción (pero es mas avanzada) consiste en enviarle el nombre del formulario que llama (en la propiedad 'OpenArgs') y que esta sea la acción inicial que ejecute: el cierre del formulario que lo llamo.

A todo esto, asumo que ese formulario (el que llama) no será modal y que en la orden de cerrar se le indica el tipo de objeto y nombre del formulario a cerrar, algo como:

1
DoCmd.Close acForm, Me.Name
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