Ayudita con Access

Antes que nada quisiera agradeceros toda la información que suministráis y la paciencia que tenéis para solucionar los problemas y dudas de los demás usuarios. Me he registrado en la web porque estoy haciendo una Base de Datos y cada vez que he consultado en google, he encontrado la mejor respuesta en esta página.
Tengo varias cuestiones.
a) He consultado las soluciones (varias) que se dan para restringir el acceso a un formulario de Access por usuario y contraseña en la web, pero no consigo entenderlas ya que estoy aprendiendo y no sé de Visual Basic. Tengo una tabla (Tabla1) con dos campos (usuario y contraseña). Tengo un formulario inicial con una lista desplegable donde salen los usuarios y un botón aceptar. ¿Qué código necesito y dónde lo introduzco?
b) Tengo un campo con fechas, y quiero que ese campo se compare con la fecha actual, de forma que si ya ha pasado me genere en otro campo el valor "caducado", y si aún no ha pasado que me indique "en fecha". Al igual que la duda anterior no se donde realizar la acción ni cómo.
c) Y la última duda que de momento tengo planteada es: ¿Puedo importar desde Excel una tabla de Access esté donde esté el archivo Access en cuestión? Me explico, Yo desde Excel puedo abrir mediante una macro una tabla de Access que está en mi pc, pero si envío la BD y el Excel con la macro a otro ordenador, para abrir esa tabla me dirá que no es la ruta, ya que la macro fue creada en mi pc y no en el pc al que yo le he enviado los archivos.
Te agradezco la ayuda que me puedas ofrecer. Muchas gracias.
Legendario_9.
1

1 respuesta

Respuesta
1
Me gusta el titulo que le has puesto a la consulta ;) Vamos a echarte pues una "manita" ;)
1.- Respecto a la primera pregunta, échale un vistazo a este link:
http://neckkito.eu5.org/index.php?option=com_content&view=article&id=55:formulario-de-accesso-con-password&catid=40:ejemplos-de-seguridad&Itemid=65
2.- Para tu segunda consulta voy a suponer un par de cosas:
Que estás trabajando con un formulario.
Que el campo donde tienes la fecha se llama [fecha]
Que el campo donde quieres el resultado se llama [situacion]
Tú deberás cambiar esos campos por los nombres que tú tengas en tu BD. Si no sabes cómo mirar los nombres de los campos (no los confundas con las etiquetas!) Tienes que hacer lo siguiente, con el formulario en vista diseño:
Seleccionas el campo->Propiedades->Pestaña Otras->Nombre, y ahí verás el nombre del campo (puedes cambiarlo si te es más útil).
Vámonos con el tema pues de la fecha y el valor de la situación:
1.- Sacas las propiedades del campo [fecha] y te vas a pestaña Eventos->Después de actualizar. Haces click en el espacio en blanco que hay a la derecha del nombre y verás que te aparece un pequeño botón de puntos suspensivos. Haces click sobre él y se te abrirá una ventana. Ahí le diches que quieres generar código.
2.- Se te abrirá el editor de VB (VBE), con dos líneas por defecto (Private Sub... y End Sub). En medio de esas líneas, que no debes modificar, escribes el siguiente código:
---
Private Sub...
Dim vFecha, vAhora as Variant
vFecha = Me.[fecha].value
'Si no hay valor en el campo sale del proceso
If IsNull(vFecha) Then Exit Sub
'Cogemos la fecha actual
vAhora = Date
'Comparamos y asignamos el valor que corresponda
If vFecha<vAhora Then
Me.[situacion].value = "caducado"
Else
Me.[situacion].Value = "en fecha"
End If
End Sub
---
Y eso es todo. Ahora, cuando des de alta una fecha, en cuanto salgas del campo [fecha] te aparecerá automáticamente la situación. Recuerda que debes cambiar los nombres que te he marcado en negrita por los nombres de tus campos.
3.- Respecto a tu tercera consulta decirte que Excel no es mi fuerte. En Access sabría cómo hacerlo, y me imagino que en Excel debe ser muy parecido, pero déjame hacer alguna prueba y te digo cosas. De todas maneras, con los puntos 1 y 2 ya tienes para un ratito de trabajo.
El punto 2 te lo he escrito de cabeza, sin testear. Si te surge algún problema tomas nota de qué te dice el error y me lo comentas, e intentamos solucionarlo.
Ya me dirás.
Un saludo,
... http://neckkito.eu5.org ...
Muchas gracias por la ayuda, he seguido los pasos que me indicaste y han resultado perfectamente. Cuenta desde ya con las cinco estrellas.
Comentarte que en el pdf al que me remites vienen las instrucciones muy bien explicadas, pero me daba un error, y era que en el pdf tienes escrito "GOTOSALIDA" y era separado. Te lo comento por si quisieras rectificarlo, por lo demás perfecto.
Tengo la base de datos casi terminada, solo me he quedado pendiente con tres detalles para finalizarla del todo.
- Uno es que tengo en un formulario varios combobox donde me llevan a un formulario base dependiendo por lo que lo filtre, de forma individualizada. Quisiera poder ir a ese formulario base filtrando por todos los combobox a la vez, sin que al haber uno en blanco me diese error.
- Otro detalle que me falta por ultimar, es que tengo en un formulario la resta de una fecha menos la fecha actual, dándome un resultado en días. Para ello le tengo puesto en el origen la fórmula, pero no consigo que ese resultado me lo grabe en los campos de una tabla.
-Por último, tengo un formulario que graba datos en una tabla. Yo realizo modificaciones o añado información a los campos. A parte, tengo otro formulario donde queda grabado como ha quedado grabado el campo en la tabla. ¿Habría alguna forma de que solo quede reflejado en ese formulario los cambios que yo realizo en el formulario inicial y no se refleje como queda en la tabla (que es el resultado final)?.
Espero no haberme explicado muy mal, y que mis consultas no sean muy complicadas de resolver.
Aun así, cuenta ya con las 5 estrellas.
Un saludo.
Mara aurë!
Hola!
Vamos a ver el tema de los combos:
Antes de hacer nada debes coger los nombres de los combos. Para ello, con el formulario en vista diseño, seleccionas el combo y sacas sus propiedades->Pestaña Otras->Nombre. Ahí tienes el nombre del combo.
Lo vamos a hacer secuencial, de manera que primero deberás rellenar el combo 1, después el 2 y por último el 3.
Una vez pillado el nombre de todos los combos (para el ejemplo supondré que son tres, cbo1, cbo2 y cbo3) te sitúas en el combo 3 y te vas a la pestaña Eventos->Al recibir el enfoque... y le generas el siguiente código:
---
Private Sub...
Dim hayVacios as Boolean
hayVacios = False
If IsNull(Me.cbo1.Value) then hayVacios = True
If IsNull(Me.cbo2.Value) then hayVacios = True
If hayVacios = True then
msgbox "Hay combos vacíos. No se puede continuar",vbInformation,"AVISO"
Exit Sub
End If
End Sub
---
Al ser el último de la serie te reclama que 1 y dos estén llenos.
En el cbo2 tienes que ponerle el siguiente código:
---
Private Sub...
Dim hayVacios as Boolean
hayVacios = False
If IsNull(Me.cbo1.Value) then hayVacios = True
If hayVacios = True then
msgbox "Hay combos vacíos. No se puede continuar",vbInformation,"AVISO"
Exit Sub
End If
End Sub
---
Al ser el segundo te reclama que el primero esté relleno.
Vamos al tema de las fechas:
En tu caso, desde el momento en que pones una operación en un campo dejas de vincularlo con el hipotético campo de la tabla para convertirlo en un campo calculado.
No tengo muy claro como realizas el proceso, pero vamos a suponer lo siguiente:
Que el campo donde introduces la fecha lo llamaré, en un alarde de originalidad, [fecha]
Que el control que te da el resultado en días se llama [txtDias]
Debes hacer lo siguiente:
1.- Con el formulario en vista diseño, le das al botón de la cinta de opciones "Campos disponibles".
2.- Seleccionas el campo de la tabla que debe guardarte los días (yo lo llamaré [dias]) y lo arrastras al formulario, donde quieras, puesto que no lo vas a ver
3.- Sacas las propiedades de ese campo y te vas a la pestaña Formato->Visible: NO
4.- Ahora sacas las propiedades del campo [fecha] y te vas a la pestaña Eventos->Después de actualizar..., y le generas el siguiente código:
---
Private Sub...
Dim vFecha, vDias as Variant
vFecha = Me.[fecha].Value
If IsNull(vFecha) Then Exit Sub
vDias = Me.[txtDias].Value
Me.[dias].Value = vDias
End Sub
---
Ahora, tras introducir la fecha, el campo calculado te mostrará los días y el procedimiento del evento hará que se pille ese valor y se almacene en el campo correspondiente de la tabla, que no está visible para no duplicar información "a la vista" en el formulario.
Respecto de tu tercera cuestión no entiendo qué quieres decir (ni lo intuyo, que es lo peor). No sé lo que estás pidiendo.
Respecto al tema de Excel he hecho varias pruebas pero no consigo encontrar la manera de conseguir que acceda a la BD. El VB de Excel es diferente al de Access y, ciertamente, no me he metido mucho con él. Siento mucho no poderte echar una mano con este tema, pero no hay manera de que me salga correctamente :(
Y eso es todo. Espero que lo que te he comentado te sirva de ayuda.
Suerte!
Buenas tardes, ¿qué hay de nuevo?.
He leído las respuestas que me das, la entiendo perfectamente, esta noche la intentaré llevar a cabo. Muchísimas gracias, ya sé por qué la puntuación tan alta que tienes.
Sobre la pregunta referente al Excel no te preocupes, intentaré poner la BD en un recurso compartido para así poder asignarle la dirección donde buscarla funcionando en todos los ordenadores conectados.
En la tercera cuestión, tienes razón, ¡Vaya como me explico! ni yo me entiendo...je je. Voy a intentar mejorar la cuestión:
Tengo dos formularios y una tabla. El formulario1 manda la información al formulario2 y a la tabla. Normalmente el formulario1 contiene datos inicialmente. Mi pregunta es: ¿Puedo hacer que al escribir en el Formulario1, me mande SOLO la información que introduzco nueva al formulario2, y que me envíe a la tabla TODA la información existente?
Espero haber aclarado un poco la pregunta, porque realmente no se entendía.
De nuevo muchísimas gracias, me has solucionado mis problemas con la BD.
Mara aurë!
Aunque puedo "entender" lo que estás pidiendo con tu consulta de los formularios 1 y 2, no veo clara la utilidad del sistema que utilizas. Ojo, no estoy diciendo que no sea útil, sino que estás aplicando una sistemática de trabajo que yo, hasta donde recuerdo (que es poco, je, je...) no he utilizado nunca.
Por eso no acabo de ver claro (yo mismo, quiero decir) las relaciones que estableces entre formularios y tabla.
En pocas palabras, que si no lo veo claro, a distancia, no sé cómo ayudarte. Quizá si me pudieras pasar tu BD comprimida en zip o rar (si quieres borra los registros, pero, please, déjame algunos, aunque inventados, para hacer pruebas) o bien me pudieras hacer una mini BD sólo con "el tema que nos ocupa" (dos formularios y una tabla) y pasármela a mi mail, le podría echar un vistazo y ver exactamente lo que haces y lo que quieres hacer. Y si en el mail me pones un ejemplo práctico ya sería... uffff ;)
Mi mail es [email protected]
Ya me dirás si te ha ido todo bien y si te animas a enviarme esa BD.
Mucho interés en solucionar las dudas y explicaciones muy claras para alguien sin idea en códigos.
Sin duda, la puntuación más alta, muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas