¿Cómo mejorar mis consultas en mi base de datos con Access?

Tengo una base de datos que únicamente tiene las tablas, y a ésta tengo vinculadas varias bases de datos que se corresponden con cada uno de los usuarios que manejamos la base de datos.
En el formulario principal tengo un campo USUARIO, que tiene como valor predeterminado el usuario que utiliza cada base de datos vinculada. El problema que tengo es que siempre estoy intentando mejorar el formulario principal, y es un jaleo cada vez que tengo que sustituir ese formulario en cada una de las bases de datos, porque tengo que cambiarle a cada uno el valor predeterminado del campo USUARIO.
Lo que pretendo es que cuando se abra el formulario y no tenga ningún valor predeterminado puesto, te lo pida directamente el programa. No sé si será posible hacerlo, pero me evitaría repetir una y otra vez el cambio del Valor predeterminado.

1 Respuesta

Respuesta
1
Voy a suponer que el campo se llama, como comentas, [USUARIO].
Si no he entendido mal tu consulta para conseguir lo que pides lo que tienes que hacer es lo siguiente:
1.- Abre el formulario principal en vista diseño
2.- Sacas las propiedades del formulario y te vas a la pestaña Eventos->Al abrir. Si te sitúas en el espacio en blanco que hay a la derecha del evento te saldrá un pequeño botón de puntos suspensivos. Si haces click sobre él te saldrá una ventana. Ahí le dices que quieres generar código.
3.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas escribes el siguiente código:
...
Private Sub ...
Dim vUser as string, vNomUser as Variant
'Pillamos el valor del campo USUARIO
vUser = Nz(Me.USUARIO.Value,"")
'Si no hay valor se lo pedimos al usuario
If vUser="" Then
vNomUser = InputBox("Introduzca nombre de usuario","USUARIO")
'Detectamos si se pulsa cancelar
If StrPtr(vNomUser)=0 then Exit Sub
'Escribimos el nombre de usuario proporcionado en el campo USUARIO
Me.USUARIO.Value = vNomUser
End If
End Sub
...
Ya me dirás qué tal te va.
Antes que nada agradecerte tu respuesta tan rápida.
Sobre la solución que me has propuesto, no me hacía nada, así que he estado investigando por ahí y he modificado el código que me enviaste, hasta dejarlo así:
Private Sub Form_Open(Cancel As Integer)
If Forms!formulario1.usuario.DefaultValue = "" Then
vNomUser = InputBox("Introduzca nombre de usuario", "USUARIO")
If StrPtr(vNomUser) = 0 Then Exit Sub
Forms!formulario1!usuario.DefaultValue = vNomUser
End If
End Sub
El único problema que tengo ahora es que siempre que abro el formulario me pide el Valor Predeterminado, porque evidentemente la propiedad "Valor Predeterminado" sigue vacío. No sé si habrá alguna solución, si no la hay me conformaré con esto.
Muchas gracias
Vamos a ver...
Olvidémonos del código: lo que necesito saber es:
- Cuando abres el formulario, el campo usuario, ¿siempre te aparece vacío?
El código que te pasé lo que hace es:
- Si el campo usuario no está vacío quiere decir que tienes el usuario "rellenado", por lo que sale del código sin más.
- Si el campo usuario está vacío te pide que indiques un usuario.
Lógicamente, si abres el form y hay un valor en usuario el código no debe hacerte nada.
Bueno, pues ya me explicarás...
Hola
A ver si me explico mejor
El problema que tengo con las bases de datos vinculadas es que cada vez que quiero hacerle una mejora, tengo que ir cambiando los valores predeterminados de cada formulario, porque así controlamos quién ha insertado los datos en la base. Lo que quiero es evitar tener que cambiarlo a mano cada vez que hago un cambio, y que lo pida la base de datos si no tiene un valor predeterminado.
No sé si con esto te vale. Gracias
Y la pregunta del millón es:
¿De dónde obtienes el nombre de usuario?
cada uno de mis compañeros tiene una base de datos propia, vinculada a la base de datos común donde están las tablas.
El nombre de usuario lo he ido poniendo a mano yo entrando en el formulario, y poniendo en el campo usuario como valor predeterminado el nombre de cada uno, en cada una de las bases de datos.
No sé si es a esto a lo que te refieres.
OK. Prueba una cosa:
- Abre ese formulario de entrada, en vista diseño
- Te vas a ese campo donde le indicas el valor predeterminado. Saca sus propiedades y te vas a la pestaña Otras->Nombre
- No sé qué nombre te saldrá. Da igual. Tú lo cambias por USUARIO
- Vuelve a probar el código que te indicaba en la primera respuesta..
A ver cómo te funciona.
Ya me dirás cosas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas