TRUCOS ACCESS
trucos access: Evitar pasar al siguiente registro de un formulario al pulsar el tabulador en el ultimo campo editable
En la propiedad Ciclo del formulario, Access coloca por defecto el valor Todos los registros. Esto habria que cambiarlo al valor Registro activo, con lo cual el usuario no pasara de registro a no ser que pulse el boton correspondiente de la barra de estado.
trucos access: Evitar los mensajes de confirmacion en las consultas de actualizacion
Al ejecutar la consulta aparece por defecto un mensaje para confirmar la actualizacion de datos, pero se puede obviar eligiendo erramientas!"pciones, erramientas!"pciones, # dentro de la ficha $odificar!%uscar, desmarcar la casilla Consultas de accion que ha# dentro del apartado Confirmar. El resultado es que todos los precios de la tabla original se veran modificados de un plumazo. &in embargo, cuando se ejecuta la consulta desde un formulario, queda mas profesional si no se muestran esos mensajes. 'ara ello, se puede a(adir la siguiente linea de codigo justo antes de las que se ha#an generado para el boton: )cmd.&et*arnings +alse )e esta forma, la consulta se ejecuta sin pedir confirmaciones. o obstante, es recomendable volver a activar las confirmaciones despues de la ejecucion de esas consultas mediante esta otra linea de codigo: )cmd.&et*arnings True
trucos access: Evitar datos duplicados en el mismo campo
Aunque Access diga, al introducir datos en un campo clave principal en un nuevo registro, que #a e-iste en el campo clave principal de otro registro, avisa del error despues de que #a se ha producido, obligando a introducir todos los campos del registro duplicado hasta el final. &in embargo, e-iste un procedimiento mediante el cual Access puede avisar de la duplicidad nada mas introducir el dato. o primero es asegurarse de que el campo a comprobar esta inde-ado # es clave principal. &upongamos una base de datos de pacientes que ingresan en un hospital # el objetivo es detectar que no se repita el dato introducido en el campo umistoria.
Abrir el formulario en vista )ise(o, elegir /er!Codigo e incluir en el apartado 0eneral!)eclaraciones 0eneral!)eclaraciones 10eneral a la izquierda # )eclaraciones a la derecha2 el siguiente codigo: )im %ase)atos as )ata%ase )im 'acientes as Recordset Con ello se define que van a utilizarse dos objetos )A" o de acceso a datos: una base de datos # un recordset # asegurando que seran visibles en todos los procedimientos del formulario. En el evento Al cargar del formulario incluir estas lineas de codigo: &et %ase)atos 3 Current)%12 &et 'acientes 3 %ase)atos."penRecordset14'acientes5 %ase)atos."penRe cordset14'acientes5ngresados4,db"penTable2 ngresados4,db"penTable2 a primera linea asigna la base de datos actual a la variable %ase)atos, la segunda asigna a la variable 'acientes los registros e-istentes en la tabla 'acientes 5ngresados de la base de datos %ase)atos, # la abre de tipo tabla, es decir, se va a poder leer de ella por indice, que sera el que se indica con la siguiente instruccion que debe ir a continuacion de las dos anteriores: 'acientes.5nde- 3 4'rimar#6e#4 4'rimar#6e#4 En el evento Antes de actualizar de la variable umistoria incluir: &ub umistoria7%efore8pdate 1Cancel as integer2 'acientes.&ee9 434, umistoria 5f ot 'acientes.o$atch then $sgbo- 4um. de historia #a e-istente.4,; Cancel 3 True E-it &ub End 5f End &ub a instruccion que contiene &ee9 1que es un metodo que solo se puede utilizar con los Recordset abiertos con db"penTable2, lo que hace es intentar encontrar en la tabla 'acientes alguno con el numero de historia igual a la variable umistoria, # va a buscar en numeros de historia porque al cargar el formulario #a sabe que el indice iba a ser la clave principal, que hemos supuesto que va por umero de istoria.
trucos access: Evitar que se ejecuten las opciones de inicio
Cuando e-iste una macro llamada Autoe-ec, Access la ejecuta automaticamente automaticamente al abrirse el archivo de la base de datos. En todas las versiones de Access se puede evitar su ejecucion pulsando la tecla $A<8&C8A& durante el proceso de apertura del archivo 1se e-ceptua el procedimiento especial que se comenta en el truco n= >?2. )esde Access @ se puede hacer uso en la linea de comandos de Access de un nuevo parametro llamado !"&TART8' que tambien impide la ejecucion de la macro Autoe-ec, asi como de todas aquellas opciones de inicio que se ha#an especificado al elegir erramientas!5nicio. 'or ejemplo, para abrir una base de datos con este parametro, la linea de comando de Access quedaria asi: msaccess.e-e !nostartup 4c:BbasesBbasedat 4c:BbasesBbasedato.mdb4 o.mdb4
trucos access: Evitar la aparicion del menu conte-tual
Crear una nueva barra de herramientas personalizada # despues elegir erramientas!5nicio erramientas!5nicio consignar en el apartado %arra de menu conte-tual la recien creada. Asi, al pulsar el boton derecho del raton, se desplegara la barra de herramientas que se ha#a establecido.
trucos access: Evitar error por falsa linea de comandos
Access en todas sus versiones, incluida la ?, muestra un error de linea de comandos erronea cuando se hace un doble clic para abrir un archivo $)% que se encuentra en un directorio que contiene espacios en su nombre # tambien cuando el nombre del archivo contiene espacios. a unica forma de evitarlo es eliminar esos espacios. Como consejo, lo mejor es evitar el uso de nombres largos para carpetas # archivos de bases de datos, #a que el ejecutable msaccess.e-e no permite nombres largos de archivos en su linea de comandos. 'or ejemplo, la siguiente linea no funcionara: msaccess.e-e basedatos.mdb &in embargo, si funcionara esta otra: msaccess.e-e basedaD>.mdb
trucos access: Abrir un formulario en el mismo registro que mostraba cuando se cerro la ultima vez teniendo en cuenta al usuario # al 'C que utilizo
Como ampliacion de lo anterior, aqui se trata el mismo asunto pero
teniendo en cuenta el nombre del usuario # de su 'C, lo cual puede ser util en entornos corporativos. Todo el procedimiento es practicamente similar. &e a(aden ciertas lineas al codigo de los eventos # lo realmente nuevo es la adicion de un modulo para definir la funcion que recoge el nombre del 'C. &e ha incluido en un modulo # no en el codigo del formulario porque de esta forma podra ser utilizado desde cualquier formulario # no solo desde uno. Tambien la tabla au-iliar tendra ahora mas campos. os pasos a seguir son: Crear una tabla au-iliar 1que aqui vamos a llamar Acceso2 para almacenar el ultimo registro visualizado en el formulario. Contendra dos campos, uno 1que llamaremos CampoClave para guardar el nombre del campo clave principal de la tabla asociada al formulario # otro para guardar el valor de dicha clave: CA$'"& T5'" CampoClave Te-to 1Clave principal2 8suario Te-to 1Clave principal2 "rdenador Te-to 1Clave principal2 /alor Te-to El campo CampoClave se ha descrito como de tipo te-to pero puede ser tambien de tipo numerico o autonumerico. Ello dependera del tipo de campo que sea el campo clave principal de la tabla asociada al formulario. En este ejemplo suponemos que ese campo es de tipo te-to # que su nombre es Clave+ormul. En cada formulario deberemos tomar nota del nombre de ese campo # de su tipo. A(adir el siguiente codigo al evento Al descargar del formulario deseado: 'rivate &ub +orm78nload1Cancel As 5nteger2 )im /alor As &tring 5f 5sull1$eFClave+ormulG2 Then H Cambiar FClave+ormulG por el nombre del campo clave principal /alor 3 4aceIRec4 Else /alor 3 $eFClave+ormulG $eFClave+ormulG H Cambiar FClave+ormulG por el nombre del campo clave principal End 5f &et rst 3 db."penRecordset1&ql, db"pen)#naset2 db"pen)#naset2 5f rst.RecordCount 3 Then
rst.AddeI rstF8suarioG 3 Application.Current8ser rstF"rdenadorG 3 ombre'C rstFCampoClaveG rstFCampoClaveG 3 $e.ame rstF/alorG 3 /alor rst.8pdate Else rst.Edit rstF/alorG 3 /alor rst.8pdate End 5f rst.Close End &ub A(adir el siguiente codigo al evento Al cargar del formulario, el cual efectua una busqueda en la tabla Acceso del campo clave del registro abierto, toma el valor de la clave # se coloca en el: 'rivate &ub +orm7oad12 &et db 3 Current)b &ql 3 4&EECT J +R"$ Acceso *ERE 4 &ql 3 &ql K 48suario 3 H4 K Application.Current8ser &ql 3 &ql K 4H A) "rdenador 3 H4 K ombre'C &ql 3 &ql K 4H A) CampoClave 3 H4 K $e.ame K 4H4 &et rst 3 db."penRecordset1&ql, db"pen&napshot2 5f rst.RecordCount L Then 5f ot 5sull1rstF/alorG2 Then 5f rst/alor ML 4aceIRec4 Then &et rst+rm 3 $e.RecordsetClone H &i el campo clave principal 14Clave+ormul4 en este ejemplo2 es de tipo te-to, H la instruccion a incluir seria esta:
rst+rm.+ind+irst 4FClave+ormulG 4FClave+ormulG 3 H4 K rstF/alorG K 4H4 H Cambiar FClave+ormulG por el nombre del campo clave principal H &i el campo clave principal 14Clave+ormul4 en este ejemplo2 es de tipo H numerico, la instruccion seria: H rst+rm.+ind+irst 4FClave+ormulG 3 4 K rstF/alorG H Cambiar FClave+ormulG por el nombre del campo clave principal 5f ot rst+rm.o$atch Then $e.%oo9mar9 3 rst+rm.%oo9mar9 End 5f rst+rm.Close Else )oCmd.0oToRecord , , aceIRec End 5f End 5f End 5f rst.Close End &ub o ha# que olvidar que no solo ha# que incluir el codigo, sino asegurarnos que en la hoja de propiedades del formulario quedan marcados ambos eventos: Al cargar # Al descargar con F'rocedimiento de eventoG. Estando abierto el formulario en modo de dise(o, pulsar el boton Codigo # a(adir en la seccion )eclaraciones el siguiente codigo: "ption Compare )atabase "ption E-plicit )im db As )atabase )im rst As Recordset )im rst+rm As Recordset )im &ql As &tring
Crear un modulo con un nombre cualquiera, que llevara este codigo:
"ption Compare )atabase "ption E-plicit )eclare +unction 0etComputerame ib 49ernelN?4 Alias 40etComputerameA4 40etComputeram eA4 1%#/al lp%uffer As &tring, n&ize As ong2 As ong +unction ombre'C12 As &tring )im %uffer As &tring )im &ize As ong )im O As ong %uffer 3 &pace1?PP2 &ize 3 ?PP HAsigna ombre $aquina O 3 0etComputerame1%uffer, &ize2 ombre'C 3 eftQ1%uffer, &ize2 End +unction
trucos access: Abrir un formulario en el mismo registro que mostraba cuando se cerro la ultima vez
o e-iste una opcion por defecto, pero se puede a(adir un peque(o codigo para que se guarde el ultimo registro visualizado # Access vuelva a el al ser abierto el mismo formulario. os pasos a seguir son: >=2 Crear una tabla au-iliar 1que aqui vamos a llamar Acceso2 para almacenar el ultimo registro visualizado en el formulario. Contendra dos campos, uno 1que llamaremos CampoClave para guardar el nombre del campo clave principal de la tabla asociada al formulario # otro para guardar el valor de dicha clave: CA$'"& T5'" CampoClave Te-to 1Clave principal2 /alor Te-to El campo CampoClave se ha descrito como de tipo te-to pero puede ser tambien de tipo numerico o autonumerico. Ello dependera del tipo de campo que sea el campo clave principal de la tabla asociada al formulario. En este ejemplo suponemos que ese campo es de tipo te-to # que su nombre es Clave+ormul. En cada formulario deberemos tomar nota del nombre de ese campo # de su tipo.
?=2 A(adir el siguiente codigo al evento Al descargar del formulario deseado: 'rivate &ub +orm78nload1Cancel As 5nteger2 )im /alor As &tring 5f 5sull1$eFClave+ormulG2 Then H Cambiar FClave+ormulG por el nombre del campo clave principal /alor 3 4aceIRec4 Else /alor 3 $eFClave+ormulG $eFClave+ormulG H Cambiar FClave+ormulG por el nombre del campo clave principal End 5f &et rst 3 db."penRecordset1&ql, db"pen)#naset2 db"pen)#naset2 5f rst.RecordCount 3 Then rst.AddeI rstFCampoClaveG rstFCampoClaveG 3 $e.ame rstF/alorG 3 /alor rst.8pdate Else rst.Edit rstF/alorG 3 /alor rst.8pdate End 5f rst.Close End &ub N=2 A(adir el siguiente codigo al evento Al cargar del formulario, el cual efectua una busqueda en la tabla Acceso del campo clave del registro abierto, toma el valor de la clave # se coloca en el: 'rivate &ub +orm7oad12 &et db 3 Current)b &ql 3 4&EECT J +R"$ Acceso *ERE CampoClave 3 H4 K $e.ame K 4H4
&et rst 3 db."penRecordset1&ql, db"pen&napshot2 5f rst.RecordCount L Then 5f ot 5sull1rstF/alorG2 Then 5f rst/alor ML 4aceIRec4 Then &et rst+rm 3 $e.RecordsetClone H &i el campo clave principal 14Clave+ormul4 en este ejemplo2 es de tipo te-to, H la instruccion a incluir seria esta: rst+rm.+ind+irst 4FClave+ormulG 4FClave+ormulG 3 H4 K rstF/alorG K 4H4 H Cambiar FClave+ormulG por el nombre del campo clave principal H &i el campo clave principal 14Clave+ormul4 en este ejemplo2 es de tipo H numerico, la instruccion seria: H rst+rm.+ind+irst 4FClave+ormulG 3 4 K rstF/alorG H Cambiar FClave+ormulG por el nombre del campo clave principal 5f ot rst+rm.o$atch Then $e.%oo9mar9 3 rst+rm.%oo9mar9 End 5f rst+rm.Close Else )oCmd.0oToRecord , , aceIRec End 5f End 5f End 5f rst.Close End &ub o ha# que olvidar que no solo ha# que incluir el codigo, sino asegurarnos que en la hoja de propiedades del formulario quedan marcados ambos eventos: Al cargar # Al descargar con F'rocedimiento de eventoG. =2 Estando abierto el formulario en modo de dise(o, pulsar el boton Codigo # a(adir en la seccion )eclaraciones el siguiente codigo:
"ption Compare )atabase "ption E-plicit )im db As )atabase )im rst As Recordset )im rst+rm As Recordset )im &ql As &tring as dos primeras lineas #a estaran escritas al acceder a esa seccion. o mismo ocurre con las lineas primera # ultima del codigo de los eventos. &implemente ha# que procurar no repetirlas. En el numero siguiente se e-plica como ampliar este truco para que reconozca al usuario # a su 'C.
trucos access: Abrir una tabla en modo de solo lectura
'uede ocurrir que desde un formulario venga bien en un determinado momento abrir una de las tablas para e-aminar su contenido. &i se da ese caso, lo mejor es abrirla en modo de solo lectura a fin de evitar modificaciones indeseadas. &upongamos que se desea presentar la tabla al pulsar sobre un boton. 'ara ello, se crea el boton con la herramienta al efecto #, justo en el momento de aparecer la primera pantalla del asistente, cancelar el proceso. )e esta forma, el boton queda creado aunque sin codigo asociado. Acceder, por tanto, a las propiedades del boton #, dentro del evento Al hacer clic, insertar esta linea de codigo: )oCmd."penTable 4ombre7tabla4, , acRead"nl# donde ombre7tabla representa el nombre de la tabla que se desea abrir.
trucos access: Abrir un formulario automaticamente en el primer registro vacio despues del ultimo
En el evento Al cargar incluir este codigo: )oCmd.0oToRecord , , aceIRec
trucos access: Abrir una base de datos distinta desde un boton de un formulario
En el formulario abierto en modo de dise(o, pulsar el boton que crea botones de la barra de herramientas. &i se inicia el asistente, pulsar Cancelar. uedara a la vista en el formulario un bo ton con un nombre de la forma Comando 1si es el primer boton creado en el formulario2. Acceder a sus propiedades haciendo doble clic sobre el #, dentro de la ficha Eventos, pulsar sobre el evento Al hacer clic, eligiendo del menu desplegable 'rocedimiento de evento. 'ulsar sobre el diminuto boton de los N puntos que ha# a su derecha e incluir las siguientes lineas antes de la instruccion 4End &ub4: )im stAppame As &tring stAppame 3 4msaccess.e-e -:BrutaB%ase.mdb4 Call &hell1stAppame, >2 )oCmd.uit Ahora solo basta reemplazar la cadena de caracteres entrecomillada en la ?S linea para que apunte al directorio # archivo $)% deseados. as comillas ha# que mantenerlas. a# que hacer notar que la ruta de acceso al archivo $)% ha de especificarse con su nombre corto de $&)"&U de lo contrario, no se abrira.
trucos access: +orzar a que se guarden los datos introducidos en un formulario en el caso de pulsar un boton definido por el usuario en el mismo formulario
Al rellenar un dato en un formulario # dejar el cursor en el campo que se acaba de modificar para pulsar un boton para imprimir o para cerrar 1o lo para lo que sea2, los cambios hechos se pierden. &e soluciona pasando el
cursor a otro campo pero interesa que sea automatico. 'ara ello, ha# que incluir el siguiente codigo en el evento Al hacer clic de cada boton: )oCmd.RunCommand acCmd&aveRecord acCmd&aveRecord Esto solo funciona en Access @ o posterior. En Access . la sinta-is seria:
)oCmd.)o$enu5tem ac+orm%ar, acRecords$enu, ac&aveRecord, , ac$enu/er
trucos access: +orzar la aparicion de los datos de un registro e-istente al introducir uno de los datos
&upongamos que al introducir un )5 queremos que aparezcan los demas datos de una persona, si es que e-iste en la base de datos #, si no, poder introducir sus datos. 'ara ello ha# que crear ? tablas # despues relacionarlas entre si. 8na de ellas contendra solo el campo del )5 # la otra contendra todos los datos 1incluido el )5 tambien2. 'ara introducir datos ha# que crear un formulario con o rigen en la primera tabla 1la mas peque(a2 que inclu#a el campo del )5 referente a esa primera tabla # ademas un subformulario con origen en la segunda tabla que presentara el resto de los datos e-cepto el del )5, que se debe establecer como o visible en sus propiedades.
trucos access: +orzar a que el valor introducido en un campo del formulario se quede como predeterminado para subsiguientes registros
Estando en modo de dise(o del formulario, pulsar el boton de Codigo 1o elegir /er!Codigo2. &i no se ha introducido nunca codigo, aparecera solo una o dos lineas con algo asi: "ption Compare )atabase Teclear en la linea siguiente: )im CampoTrabajo As &tring Con ello se define un campo de trabajo para todo el formulario llamado CampoTrabajo # de tipo caracterU tambien se podria utilizar 5nteger, ong, Real, etc. #a que debe ser igual a como este definido en la tabla de la base de datos. uego ir a la ventana de propiedades del +ormulario, buscar el evento )espues de actualizar, elegir 'rocedimiento de evento, pulsar despues sobre el boton de los tres puntos, con lo cual se abre de nuevo la ventana de codigo, en este caso con tres lineas como las siguientes: 'rivate &ub +orm7After8pdate +orm7After8pdate12 12
End &ub Entre ellas se tecleara: CampoTrabajo 3 FCampoG suponiendo que el campo que se desea que salga predeterminado sea Campo. %uscar despues la propiedad Antes de insertar, seleccionar 'rocedimiento de evento, pulsar el boton de los tres puntos # aparecera: 'rivate &ub +orm7%efore5nsert1Cancel As 5nteger2 End &ub Teclear entre ellas: FCampoG 3 CampoTrabajo &i este campo no es el primero del registro, cuando se introduzca el primer caracter en el siguiente registro aparecera el valor en el campo deseado. ota: 'uede aparecer un problema al operar con el primer registro de la tabla, para lo cual ha# dos posibilidades: >2 'ermitir a FcampoG longitud cero en sus propiedades dentro de la tabla. ?2 En el codigo del evento Antes de insertar, en lugar de poner FcampoG3CampoTrabajo poner: 5f en1CampoTrabajo2 L Then FcampoG 3 CampoTrabajo End 5f
trucos access: +orzar a que un formulario se abra mostrando el ultimo registro introducido
Al abrir un formulario, siempre se abre por defecto mostrando el primer registro introducido. 'ara forzar que se abrir con el ultimo, acceder a sus propiedades # en la seccion Al cargar, elegir 'rocedimiento de evento, luego pulsar sobre el boton de los puntos suspensivos e insertar el siguiente codigo: )oCmd.0oToRecord , , acast
trucos access: A(adir todos los campos a la vez de una tabla a la cuadricula de una consulta
Cuando se va a crear una consulta, siempre aparece un cuadro que inclu#e los campos de las tablas elegidas. &i se pretenden coger todos los campos, el metodo mas eficaz es hacer doble clic sobre el titulo de la tabla # quedaran seleccionados todos los campos que tenga. uego basta un solo arrastre para que todos los campos se integren en la cuadricula de la consulta.
trucos access: A(adir un boton de automarcado
&i alguna vez se necesita llamar a alguien por telefono mientras se esta una base de datos, he aqui como. )esde el modo )ise(o del formulario, hacer clic sobre el icono del asistente de botones de comando en la caja de herramientas. &eleccionar "tros en la ventana Categorias # Automarcador en la ventana Acciones. acer clic en &iguiente, elegir una imagen o te-to para el boton # hacer clic en finalizar, despues cambiar al modo +ormulario # probar el boton. 'oner el cursor en el campo de numero de telefono del formulario, hacer clic en el boton recien creado, # cuando el dialogo de $arcado telefonico automatico aparezca, elegir Aceptar. Cuando suene el telefono, descolgar # hacer clic en el boton de hablar en la ventana de dialogo de $arcado telefonico automatico.
trucos access: A(adir un nuevo elemento a un cuadro combinado cu#o origen de la fila es una tabla no actualizable
$uchas veces se crean tablas para las que no nos molestamos en hacer formularios de mantenimiento, como pueden ser tablas de paises o de codigos postales. &in embargo, utilizamos estas tablas en cuadros combinados, con lo que e-iste la posibilidad de que el usuario quiera a(adir un nuevo elemento a la lista. $ediante el siguiente procedimiento se a(ade un nuevo pais a la tabla de paises sin necesidad de abrir un formulario de altas. En la propiedad Al no estar en la lista del cuadro combinado insertar el siguiente codigo: &ub id7pais7notinlist1neIdata as string,response as integer2 dim mensaje as string,titulo as string,respuesta as integer dim db as database,r as recordset,codigo as b#te mensaje 3 4El elemento no se encuentra en la lista. V)esea a(adirloW4 titulo 3 4uevo 'ais4 respuesta 3 msgbo-1mensaje,NX,titulo2 if respuesta 3 X then H&i se desea dar de alta el nuevo elemento set db 3 currentdb12
set r 3 db.openrecordset1Tpais2 codigo 3 ult7idpais12 Y > H+uncion que obtiene el ultimo codigo de pais de la tabla r.addneI rFid7paisG 3 codigo rFnombreG 3 neIdata r.update r.close origen 3 4&elect id7pais,nombre +rom Tpais4 H&e actualiza el origen de la fila meFid7paisG.roIsource 3 origen meFid7paisG.requer# meFid7paisG 3 codigo H&e asigna el nuevo codigo else meFid7paisG 3 null docmd.gotocontrol 4id7pais4 end if response 3 data7errcontinue End &ub
a funcion ult7idpais12 podria ser de la siguiente forma: 'rivate +unction ult7idpais12 As %#te )im db As )atabase )im ssTmp As Recordset )im s& As &tring )im #Codigo As %#te s& 3 4&EECT $a-1id7pais2 A& 8ltCodigo +R"$ Tpais4 &et db 3 currentdb12 &et ssTmp 3 db."penRecordset1s& db."penRecordset1s&, , db"pen&napshot, db+orIard"nl#2
#Codigo 3 ssTmp8ltCodigo ssTmp.Close &et ssTmp 3 othing &et db 3 othing Return #Codigo End +unction
trucos access: Cambiar el valor inicial de un contador
J Crear una tabla que contenga el campo autonumerico pero no introducir ningun numero. J Crear una segunda tabla, con un campo de tipo numerico # tipo Entero argo # que tenga el mismo nombre que el de tipo contador de la primera tabla. J 5ntroducir un registro en la segunda tabla que sea un numero menor del que se desea que sea el inicial. J Crear un consulta para agregar datos a una tabla, a fin de agregar el dato de la segunda tabla a la primera. J Ejecutar la consulta # #a se tendra un contador desde el valor deseado.
trucos access: Cambiar la plantilla de formularios por defecto
&i se suele utilizar siempre un formato diferente al que Access proporciona para los formularios, se puede configurar para que aparezca siempre una plantilla personalizada. 'ara ello, una vez creado el formato de formulario, guardarlo con cualquier nombre dentro de una base de datos cualquiera # elegir erramientas!"pciones. erramientas!"pciones. )entro de la ficha +ormularios!5nformes introducir el nombre dado a la plantilla para reemplazar a la que viene por defecto # aceptar los cambios. as siguientes veces, Access se iniciara con la nueva plantilla para formularios.
trucos access: Cambiar el formato de una tabla
Abrir una tabla en modo normal # elegir /er!%arras de herramientas!+ormato herramientas!+ormato 1hoja de datos2. En la nueva barra apareceran botones para cambiar el tipo de letra # su tama(o, asignar color para el fondo de la tabla, para los caracteres # para las lineas, asi como elegir el formato para las lineas de la estructura, pudiendo hacer que desaparezcan
las lineas de la cuadricula o solo hacer desaparecer las lineas horizontales, etc.
trucos access: Crear un formulario principal unido a un subformulario
Aqui se muestra la manera de crear un formulario resumen que proporcione la imagen principal, asi como un subformulario con detalles: J Relacionar las tablas del formulario principal # del subformulario, escogiendo Relaciones del menu principal de erramientasU erramientasU entonces seleccionar $ostrar tabla. J A(adir las tablas del formulario # subformulario al espacio de trabajo Relaciones, seleccionandolas de la lista $ostrar tablaU despues hacer clic en A(adir. J Arrastrar el campo primario en negrita de la tabla del formulario principal al campo del mismo nombre en la tabla del subformulario. J acer clic en Crear en el dialogo Relaciones, cerrar la ventana # guardar la nueva relacion. J Ejecutar el asistente de formularios. En la primera pantalla escoger las tablas del formulario # subformulario especificando que campos se deben mostrar en los dos formularios. J acer clic en &iguiente, # el asistente le preguntara como quiere ver los datos. J Asegurarse de seleccionar el boton de radio +ormulario con subformulario. J Elegir un formato para los datos # un estilo general. J Elegir un nombre para los nuevos formularios.
trucos access: Crear una suma continua en un formulario
'ara crear una suma continua en un formulario, la tabla sobre la que esta basada debe contener al menos un campo autonumerico 1en las versiones >.- o ?., un campo contador2. &i la tabla no contiene ese campo, se puede abrir la tabla en modo dise(o # crear el campo. El siguiente ejemplo utiliza una tabla que contiene tres campos: Contador 1Campo Autonumerico2, Cantidad 1Campo numerico2 # Total 1Campo umerico2. a tabla se llama 'rueba. Crear un formulario nuevo basado en la tabla 'rueba. +ormulario: +ormulario>
"rigendelRegistro: "rigendelRegistro: 'rueba Cuadro de Te-to: Contador "rigen del Control: Contador Cuadro de Te-to: Cantidad "rigen del Control: Cantidad Cuadro de Te-to: Total "rigen del control: 3)sum14FCantidadG4U4'rueba4U4FContadorGM3+orms 3)sum14FCantidadG4U4'rueba4U4FContadorGM3+orms F+ormulario>GFContadorG42
a funcion )sum calcula la suma del campo Cantidad en todos los registros que tengan el contador menor o igual que el registro activo. Esta es la razon por la que se necesita un campo autonumerico.
trucos access: Crear accesos directos de objetos de la base de datos
)esde la ventana de la %ase de datos, seleccionar una tabla, consulta, formulario o informe # arrastrarlo al escritorio de *indoIs o a una carpeta del E-plorador si estuviera abierto, o bien a una ventana de iconos. &e creara un acceso directo a ese objeto de la base de datos # se podra ejecutar directamente. directamente.
trucos access: Calcular una edad en a(os
&upongamos que e-iste una tabla con los campos +echaacimiento # +echao#, ambos de tipo +echa. El campo +echao# puede automatizarse asignando como valor predeterminado el valor +echa12, con lo cual siempre aparecera en el formulario la fecha actual del sistema. En el formulario se crea un cuadro de te-to nuevo para que muestre la edad. 'ara ello, acceder a sus propiedades #, dentro de la ficha Todas, consignar los siguientes datos en las propiedades que se indican: "rigen del control: 31F+echao#GF+echaacimientoG2!NXP,?,P 31F+echao#GF+echaacimientoG2!NXP,?,P +ormato: +ijo ugares decimales:
trucos access: Calcular la letra del 5+ a partir de un )5
Esta funcion recibira una cadena con un valor # la devolvera a(adiendo al final la letra correspondiente. &i la cadena recibida tiene signos de puntuacion, los quitaraU realmente solo deja los numeros. 'ara ello, crear un modulo nuevo inclu#endo todo el codigo siguiente tal cual: +unction etraif1strA As &tring2 As &tring )im cCA)EA As &tring )im c8$ER"& As &tring )im strT As &tring, str% As &tring )im aZ, 5+Z, bZ, cZ )im i As 5nteger etraif 3 44 c8$ER"& 3 4>?NPX;@4 cCA)EA 3 4TR*A0$<+')O%[\& 4TR*A0$<+')O%[\&/C6E4 /C6E4 strT 3 TrimQ1strA2 5f en1strT2 3 Then E-it +unction str% 3 44 H)ejar solo los numeros... +or i 3 > To en1strA2 5f 5n&tr1>, c8$ER"&, $idQ1strA, i, >22 Then str% 3 str% Y $idQ1strA, i, >2 End 5f e-t strA 3 str% aZ 3 5+Z 3 /al1strA2 )o bZ 3 5nt15+Z ! ?2 cZ 3 5+Z 1? J bZ2
aZ 3 aZ Y cZ 5+Z 3 bZ oop *hile bZ ML bZ 3 5nt1aZ ! ?N2 cZ 3 aZ 1?N J bZ2 etraif 3 $idQ1cCA)EA, cZ Y >, >2 End +unction
8na vez introducido el codigo, la funcion puede ser llamada desde cualquier otro procedimiento. 'ara comprobar que funciona se puede elegir la opcion /er!/entana de depuracion 1en la version ? ha# que elegir /er!/entana 5nmediato2, en la que se pueden introducir comandos para ser ejecutados de modo inmediato haciendo uso de la funcion recien creada. En la parte inferior de dicha ventana ejecutar la siguiente orden: 'rint etra5+ 14>X?NPN?42 'ulsando 5TR" aparecera la letra ', que es la correspondiente a ese )5. &e puede en esta misma ventana probar con cualquier otro )5. En cualquier procedimiento se puede #a incorporar una sentencia tal como esta: etra 3 etra5+ 1/ariable)52 /ariable)5 es el nombre de una variable, campo de una tabla o cuadro de te-to, que tenga un )5 para el que se desee calcular la letra. etra es el nombre una variable o un campo de una tabla o un cuadro de te-to de un formulario o informe en el que deseas incluir la letra calculada.
etra5+ es el nombre dado a la funcion que calcula el 5+. Al cerrar el modulo, contestar afirmativamente afirmativamente a la pregunta de guardar cambios # asignar un nombre cualquiera para el. Ahora vamos a incluir la funcion en un formulario. &upongamos que en un formulario ha# un cuadro de te-to llamado )5 cu#o "rigen del control puede ser un campo de una tabla, o no. &i se desea que una vez introducido por el usuario un )5 en dicho campo se le a(ada la letra calculada, se podria incluir en el evento )espues de actualizar del cuadro de te-to )5 un procedimiento de evento, que debe quedar asi: 'rivate &ub )57After8pdate 12 )5 3 )5 K 44 K etra5+ 1)52 End &ub
Tambien se podria querer tener la letra en un cuadro de te-to separado llamado etra, # en ese caso ha# que sustituir la sentencia por: etra 3 etra5+ 1)52 pero siempre dentro del evento )espues de actualizar del cuadro de te-to en el que se introduce el )5.
trucos access: Controlar el ciclo de la tecla TA% en formularios
'or defecto, la tecla TA% va pasando de campo en campo # cuando llega al ultimo, pasa al primer campo del registro siguiente. Esto se puede cambiar mediante la propiedad Ciclo, que por defecto se establece con el valor Todos los registros, pero admite otros dos valores: Registro activo 1se queda en el mismo registro sin pasar al siguiente, con lo cual el cursor pasa de nuevo al primer campo2 # 'agina activa 1se queda en la misma pagina del mismo registro2.
trucos access: Controlar que formulario se abre por defecto al abrir una base de datos
En las versiones Access . # Access @ se puede hacer de ? formas, mientras que en Access ?. # anteriores de una. /ersiones ?. # anteriores: Al abrir una base de datos se ejecuta automaticamente automaticamente la macro Autoe-ec, si es que e-iste. En la macro se puede especificar el formulario que se presenta al abrir la %ase de )atos. /ersiones . # posteriores: Ademas de seguir funcionando la macro Autoe-ec, en el menu erramientas, e-iste la opcion 5nicio, que abre un cuadro de dialogo en el que se definen una serie de valores iniciales, entre ellos el formulario que se presenta inicialmente, asi como poder dar un nombre descriptivo a la base de datos para que tenga la apariencia de ser un ejecutable independiente.
trucos access: )esactivar lineas de macro
&i se desea desactivar una linea de ejecucion de una macro, basta con especificar la palabra +alse en la columna Condicion. Esto puede ser interesante para propositos de pruebas # de depuracion de errores, #a que se pueden desactivar lineas sin necesidad de eliminarlas. &i e-istiera #a una condicion previa, se puede introducir +alse and al principio, con lo cual todo el resto queda anulado.
Tablas
trucos access: )esactivar el raton
Algunas veces se puede desear que el usuario no pueda utilizar el raton al estar dentro de un formularioU para ello se puede utilizar esta funcion, la cual se basa en la utilizacion de las llamadas librerias dinamicas 1)2 desde los procedimientos de /%A. *indoIs tiene cientos de librerias de este tipo, al conjunto de todas ellas se les conoce como A'5 1Application 'rogramming 5nterface2. Estas funciones nos permitiran manipular las ventanas de *indoIs entre otras muchas mas cosas. &eguir estos pasos: J Colocar la siguiente declaracion de funcion en la seccion )eclaraciones de un modulo: )eclare +unction &hoI Cursor ib 48serN?4 1 %#/al +&"* As 5nteger 2 As 5nteger J Crear un boton de comando que al ser pulsado 1evento Al hacer clic2 ejecute la funcion &ub Comando7Clic912. )im Ret/al Ret/al 3 &hoICursor 1 2 $sgbo- 4 a desaparecido el raton 4 Ret/al 3 &hoICursor 1 > 2 End &ub
trucos access: 5mprimir las relaciones entre tablas
En las primeras versiones de Access no habia mas remedio que capturar la pantalla con un programa grafico o haciendo uso de la tecla 5mpr'ant. )esde la version @ # a la vista de la ventana de relaciones, se puede elegir Archivo!5mprimir relaciones, relaciones, lo cual generara un informe automaticamente automaticamente con el contenido de la ventana que incluso de puede guardar.
trucos access: 5mprimir el registro actual
J 5mprimir el registro actual no deberia ser tan pesado. < no lo sera una
vez que se a(ada este boton a los formularios.
trucos access: umeracion automatica dependiente de un cambio de a(o
En muchos libros de registro de entrada de empresas, departamentos departamentos # organismos publicos se lleva una numeracion consecutiva que comienza con el n= > cada a(o. &i en Access se crea un campo autonumerico para este cometido, al pasar a un nuevo a(o, el contador del autonumerico seguira adelante indefinidamente. indefinidamente. &i lo que se desea conseguir es que el contador vuelva al valor > de modo automatico, ha# que seguir el procedimiento que aqui se e-plica. &upongamos una tabla llamada E-pedientes en la que, entre otros, e-isten los campos A(oactual, que controla el a(o en que estamos, # ume-p, que controla el campo contador del que hablamos. Como estos campos se van a calcular automaticamente, automaticamente, en el formulario de entrada de datos no seran punto de tabulacion. 'or esta razon vamos a tener en cuenta el primer campo que reciba el enfoque del cursor para introducir un dato. En las propiedades de este campo, ir al evento Al recibir el enfoque para incluir unas lineas de codigo como las siguientes: FA(oactualG 3 End 5f
5f Fume-pG 3 Then Fume-pG 3 )Count14Fume-pG4, 4E-pedientes42 Y >
End 5f
o unico que ha# que hacer es reemplazar los nombres de los campos 1que figuran entre corchetes2 # el nombre de la tabla por los que correspondan.
trucos access: umeracion correlativa automatica sin campo autonumerico
&upongamos una tabla llamada Clientes con varios campos, de los cuales uno es numerico entero largo llamado umCliente, estableciendo que el campo sea inde-ado sin duplicados o bien clave principal. En el evento Al activar registro del formulario de entrada de datos para esa tabla, insertar el siguiente codigo: "n Error 0oTo err7+orm7Current err7+orm7Current
5f FumClienteG M > Then FumClienteG 3 )$a-14umCliente4, 4Clientes42 Y > End 5f
e-it7+orm7Current: E-it &ub
err7+orm7Current: 5f Err 3 @ Then H8so no valido de ull Resume e-t Else $sg%o- ErrorQ Resume e-it7+orm7Current e-it7+orm7Current End 5f
En la propiedad 'unto de tabulacion del campo umCliente, dentro de formulario, establecer su valor a o, #a que sera un campo que no ha# que rellenar manualmente.
a sido absolutamente necesario incluir las lineas que hacen referencia al error n= @ 1uso no valido de ull2 debido a que la primera vez que se accede al formulario para introducir datos, se producira dicho error al no e-istir registros. Con esas lineas de codigo se evita que aparezca dicho error, #a que la linea "n error goto... envia el flujo de la ejecucion a la parte del codigo donde se detecta # se envia de nuevo el flujo de ejecucion a la linea siguiente, e-cepto en el caso de producirse un error diferente, en cu#o caso se mostraria el error producido gracias a las lineas que siguen a Else.
trucos access: 'resentar el registro correspondiente al teclear un dato univoco en un formulario
'artimos de la base de que se dispone de un formulario para incluir los datos de los clientes # que en el se introduce un dato univocoU por ejemplo, un )5. J Crear otro formulario no basado en ninguna tabla o consulta. Al pulsar el boton uevo formulario elegir la opcion de $odo de ver dise(o. J 5ncluir en dicho formulario un cuadro de te-to con su etiqueta para incluir el )5U llamemos, por ejemplo, a esta caja de te-to )5T-t. J 5ncluir en este formulario un subformulario 1de la barra de herramientas elegir el boton etiquetado &ubformulario!&ub5nforme. &ubformulario!&ub5nforme. J 'oner las siguientes propiedades en el control asi creado: "bjeto origen: ombre del formulario utilizado como principal. /incular campos secundarios: El nombre del campo que contiene el )5 en la tabla en la que se basa el anterior formulario. /incular campos principales: El nombre del cuadro de te-to del formulario actual, en este caso )5T-t. J 'oner el formulario en modalidad formulario para ver si se ve todo # redimensionar el subformulario en caso necesario.
trucos access: 'resentar cuadros de mensaje
a funcion $sg%o- muestra un mensaje en un cuadro de dialogo, espera a que el usuario pulse un boton del cuadro # devuelve un valor, el cual se correspondera con el boton pulsado. En la a#uda de Access se pueden estudiar todos los parametros posibles de esta funcion. Aqui vamos a mostrar solo ? aspectos: como a(adir mas de una linea # que tipo de botones pulsables ha# disponibles. 'ara hacer aparecer un cuadro de mensaje de una sola linea, el codigo
necesario seria como el siguiente: variable 3 $sg%o-14$ensaje4, vb"6"nl#, 4Titulo42 a variable que ha# a la izquierda del signo de igualdad puede ser cualquiera. El mensaje mostrado seria lo que va entrecomillado como primer parametro, luego viene la definicion del tipo de botones a mostrar en el cuadro 1en este caso solo se mostraria un boton Aceptar2 # despues, tambien entrecomillado, el titulo del cuadro. 'ara un cuadro de mas de una linea ha# que emplear la palabra clave vbCrf dentro del mensaje que separe mediante signos K las diferentes lineas. 8n ejemplo basico seria: variable 3 $sg%o-14>S linea 4 K vbCrf K 4?S linea4, vb"6"nl#, 4Titulo42 En sustitucion de vbCrf se pueden utilizar Chr1>N2, que denota el caracter A&C55 >N, que es el retorno de carro, # tambien Chr1>2, que corresponde al caracter de avance de linea. os tres tienen la misma funcionalidad. En cuanto a los botones a mostrar en el cuadro de mensaje, en el ejemplo anterior se ha especificado vb"6"nl# pero la lista completa es la siguiente:
/b"6"nl# $uestra solamente el boton Aceptar /b"6Cancel $uestra los botones Aceptar # Cancelar /bAbortRetr#5gnore $uestra los botones Anular, Reintentar e 5gnorar /b
os valores devueltos por estos botones, al ser pulsados, son los siguientes: Constante /alor )escripcion vb"6 > Aceptar vbCancel ? Cancelar vbAbort N Anular vbRetr# Reintentar vb5gnore P 5gnorar vb
El valor devuelto se podria tratar despues en otra linea de codigo para un condicional, por ejemplo. a funcion $sg%o- es mas amplia de lo aqui e-puesto. 5ncluso puede mostrar un tipo de icono segun el tipo de mensaje, asi como especificar archivos de a#uda especificos del cuadro. 'ara obtener informacion sobre esos aspectos, abrir la a#uda de Access, la cual no es mu# buena para principiantes, pero una vez e-plicado como funciona $sg%o- aqui, no habra ma#or problema para entenderlo al completo.
trucos access: 'roteger una base de datos para que funcione dias distintos a partir de su instalacion
J Crear una tabla dias con dos campos: FnumdiaG de tipo numerico cu#o valor inicial es # FfechaG de tipo fecha!hora. J acer que el formulario principal del programa se ejecute al inicio automaticamente automaticamente #, en su evento Al cargar, insertar este codigo: )im db As )atabase, r As Recordset, sql As &tring )im mensaje As &tring, titulo As &tring sql 3 4&elect J +rom dias4 &et db 3 Current)b12 &et r 3 db."penRecordset1sql2 5f r.RecordCount 3 Then H &i la primera vez no e-iste el registro se inserta r.AddeI rFnumdiaG 3 > rF+ECAG 3 )ate r.8pdate Else 5f rFnumdiaG L3 Then H&e comprueba si se ha utilizado dias la base de datos mensaje 3 4&e han superado los dias de la demo4 titulo 3 4)emo4 $sg%o- mensaje, ;, titulo
)oCmd.uit HCerrar Access Else 5f rF+ECAG ML )ate Then H&e comprueba si ho# #a se ha utilizado la base de datos r.Edit rFnumdiaG 3 rFnumdiaG Y > rF+ECAG 3 )ate r.8pdate End 5f End 5f End 5f a2 'roteger 'roteger mediante mediante contra contrase(a se(a una base base de datos: 'roteger la base de datos con una contrase(a, desde la version ., viene como una opcion de menu. Concretamente, en el menu erramientas, opcion &eguridad, la primera subopcion que se ofrece es Establecer contrase(a para la base de datos. &i se activa dicha opcion, aparecera un cuadro de dialogo en el que se puede definir la contrase(aU una vez pulsado el boton Aceptar, cada vez que cualquier usuario de Access, intente abrir la base de datos, se le solicitara la contrase(a # no podra entrar en ella si no introduce el valor correcto. 'ero, una vez dentro, puede hacer cualquier barbaridad. b2 'roteger una base de datos por control de usuarios: a# otra opcion algo mas compleja. Access incorpora unos ficheros 1desde la version . con e-tension .$)* # en la version ?. con e-tension .$)A2 en los que guarda los valores de seguridad. &e accede a dichos ficheros utilizando el ejecutable *R60A)$.EOE que suele encontrarse en el directorio de Access. El nombre que suele aparecer para el ejecutable es Administrador para trabajo en grupo. Access trae por defecto un fichero &<&TE$.$)*, normalmente en el mismo directorio, el cual contiene dos 0rupos de usuarios: Administradores # 8suarios # un unico usuario llamado Administrador. &i se ejecuta Access, se entra en cualquier base de datos # se selecciona del menu erramientas la opcion &eguridad!Cuentas de usuario # de grupo, se puede comprobar en el cuadro de dialogo que se visualiza que en el cuadro combinado 8suario!ombre aparece el usuario Administrador # en el cuadro de lista 0rupos disponibles, los dos grupos indicados anteriormente. Todo lo anterior e-istia, aunque no se intu#era. Cuando se inicia Access, el programa se conecta al fichero &<&TE$.$)*, del directorio Access, # por lo tanto, por defecto se entra en las bases de datos como Administrador, # por ello se puede hacer de todo con ellas.
o que ha# que hacer para asegurar una base de datos es crear un nuevo fichero para trabajo en grupo, es decir un nuevo ----.$)*. 'ara ello ejecutar *R60A)$.EOE # ahi se vera que, sin saberlo, se esta conectado a &<&TE$.$)* 1es el archivo que aparece en la linea Archivo de informacion2, el cuadro de dialogo tiene un boton para crear un nuevo archivo 1seguir sus instrucciones, le#endo todo # anotando cuidadosamente todo lo que diga que ha# que anotar2. Cuidado a la hora de grabar pues propone reemplazar &<&TE$.$)* # eso no debe hacerse. 'ongamos por caso que se crea un archivo llamado 'R8E%&E0.$)* 1mejor ubicarlo en el mismo directorio en el que se encuentra la base de datos que se pretende asegurar2. 'or defecto, al crearlo, Access queda conectado a dicho grupo de seguridad. &e puede comprobar saliendo # volviendo a entrar. a linea Archivo de informacion contiene ahora el nombre del nuevo fichero .$)*. &alir de nuevo. Ahora se puede conectar 1antes de ejecutar el propio Access2 a uno u otro grupo de trabajo. Al entrar en Access habiendo conectado previamente al nuevo grupo, no aparecen las ultimas bases de datos abiertas, sino que el lugar aparece vacioU esto es porque en el archivo $)*, ademas de grupos de usuarios # usuarios, guarda tambien esta informacion. Ahora vamos a empezar a hacer una base de datos segura: J Asegurarse de estar conectado al grupo 'R8E%&E0.$)* J Abrir Access #, sin abrir ninguna base de datos, elegir del menu erramientas la opcion Cuentas de usuario # de grupo. A parece un cuadro de dialogo mas confuso de lo que a primera vista parece. J "bservar que esta abierta la pesta(a 8suarios # que en el cuadro combinado ombre, solo aparece el usuario Administrador. J 'ulsar el boton uevo para crear un nuevo usuarioU se solicitara ombre para el mismo e 5d.personalU el segundo no es importante # se puede poner el mismo nombre en los dos sitios para no provocar mas confusion. J 'ulsar Aceptar. /erificar que el nuevo usuario aparece en el cuadro combinado # que, por defecto lo ha incluido en el 0rupo 48suarios4 # comprobar si en el cuadro de lista de abajo a la derecha aparece dicho grupo # se(alar en el cuadro de lista de la izquierda el valor Administradores. J 'ulsar el boton AgregarLL. Ahora el nuevo usuario 1imaginemos que se le ha llamado 'ruebasAdmin2, tambien pertenece al grupo Administradores. Cualquier usuario que se cree puede pertenecer a mas de un grupo de usuarios. J 'ulsar la pesta(a Cambiar contrase(a de cone-ion. Aparece un cuadro de dialogo para cambiar la contrase(a del usuario actual. "bservar que indica que el usuario actual es el Administrador 1no 'ruebasAdmin2. )ejar en blanco el valor Contrase(a anterior # teclear el mismo valor en Contrase(a nueva # Confirmacion. 'ulsar Aceptar. o que se acaba de hacer es poner una contrase(a al Administrador de Access #, a partir de este momento, cuando se ejecute Access conectado al grupo de usuarios 'R8E%&E0.$)*,
siempre pedira usuario # contrase(a. J Al intentar entrar, Access pedira usuario # contrase(a. o que lo que antes aparecia como Administrador ahora aparece como Admin en nombre de usuario aunque en realidad se esta refiriendo al mismo usuario. Entrar # salir de Access. J Como en un paso de los anteriores, crear un usuario llamado 'ruebasAdmin, e intentar entrar con el en Access. "bservar que aun no tiene contrase(a, por lo que, para entrar con el, curiosamente se tiene el campo Contrase(a vacio. 8na vez dentro, se puede poner a dicho usuario una contrase(a. i siquiera el administrador tiene capacidad para asignar ni ver contrase(as ajenas. o que se puede hacer es borrar las contrase(as 1que siempre es util para el usuario inutil, al que se le olvida la contrase(a2. &alir de nuevo de Access. J Ejecutar *R60A)$.EOE para cambiar de grupo # conectarse al grupo de toda la vida: &<&TE$.$)* #, una vez hecho, entrar de nuevo en Access, notando que ahora todo vuelve a la normalidad: se veran las llamadas antiguas a las bases de datos, no se pide contrase(a, etc. Resumen de lo realizado hasta ahora: J emos creado un 0rupo de trabajo nuevo al que hemos llamado 'R8E%&E0.$)*. J En el hemos creado un usuario nuevo: 'ruebasAdmin, al que hemos incorporado en el grupo de Administradores, aunque tambien pertenece al grupo 8suarios. 'ara asegurar una base de datos: >2 Conectarse al grupo de trabajo seguro 1en este caso 'R8E%&E0.$)*2. ?2 Abrir Access # entrar con el usuario seguro: 'ruebasAdmin. N2 Crear una base de datos vacia, que llamaremos %ase)atos&egura.$)% 2 5mportar a la misma todas las tablas, consultas, formularios, informes, macros # modulos desde la base de datos que se pretende hacer segura 1en Access . # @, elegir Archivo!"btener Archivo!"btener datos e-ternos!5mportar2. e-ternos!5mportar 2. &e acaba de crear una base de datos cu#o propietario es 'ruebasAdmin del grupo de trabajo 'R8E%&E0.$)*. P2 Con la base de datos nueva abierta, elegir erramientas!&eguridad!Cuentas erramientas!&eguridad!Cuentas de usuario # de grupo... X2 Al usuario Administrador quitarlo del grupo Administradores. 2 Aseguremonos de que el usuario 'ruebasAdmin pertenece a Administradores # a 8suarios. ;2 Elegir erramientas!&eguridad!'ermisos erramientas!&eguridad!'ermisos de usuario # de grupo...
@2 Elegir lista de usuarios, seleccionar el usuario 'ruebasAdmin, en el combo Tipo de objeto seleccionar %ase de datos 1ha# que tener cuidado, #a que esta oculta antes del valor que toma por defecto: Tabla2. a# que marcar todas las casillas de verificacion. >2 Elegir en Tipo de objeto el valor Tabla, seleccionando de la lista ombre de objeto todas las tablas e inclu#endo el valor Tablas!consultas nuevas, marcar todas las casillas de verificacion 1lo mas facil es quitar la marca en la casilla Administrar # volversela a poner2. >>2 Elegir todos # cada uno de los tipos de objeto # hacer lo mismo para cada uno de ellos. En este momento el usuario 'ruebasAdmin es due(o # se(or de todo. >?2 Elegir lista de usuarios, seleccionar el usuario Administrador, en el combo Tipo de objeto seleccionar %ase de datos. )esmarcar las casillas de verificacion Abrir o Ejecutar, Abrir en modo e-clusivo # Administrar. >N2 Elegir lista de grupos, seleccionar el grupo Administradores, # hacer lo mismo del punto anterior: elegir %ase de datos, desmarcar las casillas de verificacion, etc. Esto no se menciona en ninguna a#uda oficial de las versiones ?., . ni @. >2 &eleccionar ahora el grupo 8suarios, # hacer lo mismo. a base de datos ahora es segura # se puede comprobar siguiendo los siguientes pasos: >2 Cerrar Access. ?2 Conectar al grupo de trabajo &<&TE$.$)*. N2 Entrar en Access 1por defecto se entra como Administrador2. A dministrador2. 2 5ntentemos abrir nuestra base de datos segura. os dara un mensaje mas o menos asi: o tiene los permisos necesarios para acceder al objeto, etc. P2 5ntentemos crear en este &<&TE$.$)* un usuario 'ruebasAdmin igual al que tenemos creado en 'R8E%&E0.$)*. Recordemos que para poder entrar con este usuario ha# que poner una contrase(a al usuario Administrador de este grupo de trabajo. X2 Entrar en Access con este usuarioU tampoco deja entrar. 2 Conectar a 'R8E%&E0.$)* # entrar como AdministradorU intentar abrir la base de datos segura #... tampoco. &olo se puede acceder a ella con el usuario 'ruebasAdmin estando conectados a 'R8E%&E0.$)* # solo el que conozca la contrase(a de dicho usuario podra entrar en la misma. Ahora podemos empezar a crear nuevos grupos de usuarios # nuevos usuarios # empezar a otorgar permisos al uso de tablas #
consultas, # formularios... o utilizar la base de datos segura, en un entorno de /isual %asicU los usuarios no podran acceder a ella de ninguna otra manera. 'ara hacerla aun mas segura se puede codificar.
trucos access: &incronizar dos cuadros combinados en un formulario
&e pretende describir como sincronizar dos cuadros combinados en un formulario, de forma que la seleccion que se hacer en el primer cuadro combinado limite la lista que aparezca en el segundo cuadro combinado. El siguiente ejemplo usa la base de datos de ejemplo eptuno.mdb, proporcionada con Access. El primer cuadro combinado muestra las categorias de productos, # el segundo cuadro combinado muestra los productos disponibles para la categoria seleccionada en el primer cuadro combinado: a2 Abrir la base de datos de ejemplo eptuno.mdb. b2 Crear la siguiente consulta nueva basada en la tabla 'roductos, # guardar la consulta como Consulta ista Categorias. Consulta : Consulta ista Categorias Tabla : 'roductos Tipo : Consulta de &eleccion Campo: 5) de 'roducto "rden: Ascendente $ostrar: &i Campo: ombre de producto Tabla: 'roductos $ostrar: &i Campo: 5) de categoria $ostrar: o Criterios: +ormulariosFCategorias # 'roductosGFCategoriasG c2 Crear un nuevo formulario no basado en ninguna tabla o consulta con los siguientes cuadros combinados, # guardar el formulario como Categorias # 'roductos: Cuadro Combinado > ombre : Categorias
Tipo de origen de la fila: Tabla ! Consulta "rigen de la fila : Categorias umero de columnas : ? Anchura de columnas : U> Columna dependiente : > )espues de actualizar : Refrescar
Cuadro Combinado ? ombre : 'roductos Tipo de origen de la fila: Tabla ! Consulta "rigen de la fila : Categorias # 'roductos umero de columnas : ? Anchura de columnas : U> Columna dependiente : > ota: a propiedad Columna dependiente del primer cuadro combinado no debe definirse al campo llamado en la fila Criterios de la consulta de arribaU de otra forma, el segundo cuadro combinado mostrara solo el primer registro.
d2 Crear la siguiente macro # guardarla como HRefrescarH: ombre de $acro: Refrescar Accion: uevaConsulta Argumentos de la accion ombre del control: 'roductos
e2 /er el formulario Categorias # 'roductos en vista +ormulario. Cuando se seleccionar una categoria en el primer cuadro combinado, el segundo cuadro combinado se actualiza solo a la lista de productos disponibles para la categoria seleccionada. En el ejemplo anterior, el segundo cuadro combinado se rellena con el resultado de la consulta HConsulta ista CategoriasH. Esta consulta encuentra todos los productos que tienen un 5) de Categoria igual al de la categoria seleccionada en el primer cuadro combinado.
'ara cualquier categoria seleccionada en el primer cuadro combinado, el evento )espues de Actualizar ejecuta la macro Refrescar, que fuerza al segundo cuadro combinado a ejecutar la consulta Consulta ista Categorias de nuevo. Esto refresca la lista de productos disponibles en el segundo cuadro combinado. &in esta macro, podria forzar al segundo cuadro combinado a refrescarse por si mismo pulsando la tecla +@.
trucos access: &incronizar replicas de una base de datos
8sar Access para crear # sincronizar replicas de una base de datos es tan facil como utilizar el $aletin de *indoIs @P. 'ero al contrario que el maletin, Access proporciona potentes herramientas 1asi como detallada documentacion en linea2 para resolver conflictos entre diferentes versiones de una base de datos Access. e aqui como hacerlo. &i la base de datos tiene una contrase(a, desactivarla seleccionando erramientas!&eguridad erramientas!&eguridad # activando Anular contrase(a de la base de datos. A continuacion, teclear la contrase(a actual en el dialogo Anular la contrase(a establecida para la base datos # hacer clic en Aceptar. )el menu principal erramientas, seleccionar Replica, # despues Crear replica. Esto convierte la base de datos e-istente en $aestra de )ise(o, lo que significa que es la unica copia cu#a estructura se puede cambiar. 'uede hacer tantas replicas como necesite # sincronizarlas utilizando la opcion &incronizar del menu Replicado.
trucos access: Teclas de atajo en botones de formularios
'ara conseguir unos botones mas profesionales # que sean activos con una combinacion de teclas en vez de pulsarlo con el raton, ha# que poner en el titulo del boton un caracter K antes de la letra que se desea que aparezca subra#ada # que sea la letra indice. 'or ejemplo, K%oton aparecera como %oton # en la presentacion del formulario sera accesible con la combinacion AT% 1por ser % la letra elegida para el atajo de teclado2.
trucos access: Teclas # secuencias de teclas de atajo
5nsertar la fecha actual C"TR" U 1signo punto # coma2 5nsertar la hora actual C"TR" : 1signo ? puntos2 A(adir un nuevo registro C"TR" Y 1signo suma2 %orrar un registro C"TR" 1signo resta o guion2 Copiar el valor del campo a rellenar con el valor del registro anterior C"TR" H 1signo apostrofe2
8sar un valor por defecto para un campo C"TR"ATE&'AC5" C"TR"ATE&'AC5" 0rabar todos los cambios $A<8&C8A&5TR" Activar la barra de menues +> &eleccionar la siguiente barra de herramientas C"TR"TA% C"TR"TA% &eleccionar la anterior barra de herramientas C"TR"$A<8&C8A&TA% &eleccionar el boton siguiente cuando la barra de herramientas esta activa TA% &eleccionar el boton anterior cuando la barra de herramientas esta activa $A<8&C8A&TA% )esplegar un cuadro combinado + o AT+ECA A%A[" Actualizar el contenido de un cuadro de lista o cuadro combinado +@ Ciclo entre ventanas abiertas C"TR"+X Restaurar la ventana seleccionada cuando todas estan minimizadas 5TR" $ostrar el menu de control ATE&'AC5" $ostrar la direccion completa para un hiperte-to +? 5nsertar retornos de linea en cuadros de te-to C"TR"5TR" Conmutador de depuracion en el modo de edicion de codigo C"TR"0
trucos access: Acceso rapido a opciones frecuentes
Crear una macro nueva. En la columna ombre de macro consignar el caracter ] # a continuacion una letra 1por ejemplo ]'2. En la columna Accion elegir EnviarTeclas # en la zona inferior, dentro del apartado 'ulsaciones de teclas escribir el signo ^ seguido de aquellas letras que esten subra#adas en los menues de Access. 'or ejemplo, para desplegar las propiedades, escribir ^/E, #a que / es la letra subra#ada del menu /er # E es la letra subra#ada de la opcion 'ropiedades. 0uardar la marco con el nombre Auto9e#s 1no vale otro nombre2. Cuando estemos frente a un formulario, la pulsacion de la tecla C"TR" junto con la letra elegida elegida en el nombre de la la macro producira el efecto efecto de haberlo elegido de los menues. &iguiendo el ejemplo anterior, la pulsacion de C"TR"' mostraria las propiedades de un objeto.
trucos access: Analizar tablas
&i se tienen datos redundantes en una tabla, se puede hacer uso del analizador de tablas para una mejor eficiencia. 'ara ello ha# que elegir erramientas!Analizar!Tabla. El analizador funciona sin da(ar la tabla original e incluso genera una consulta que simula la tabla original inalterada, de forma que se puede seguir utilizando como origen de datos.
trucos access: Ane-ionar datos de una tabla en otra respetando el valor de un campo autonumerico 'rimeramente, crear un duplicado 1copiar # pegar con otro nombre2 de la tabla de destino cambiando en ella el campo Autonumerico por umerico de tipo Entero largo # eliminar, en su caso, la clave principal o si se ha establecido la propiedades 5nde-ado sin duplicados. )e lo contrario, fracasara la consulta. 5mportar los datos de esta tabla utilizando una consulta de datos ane-ados 1opcion disponible dentro del menu Consultas de una consulta2 para mover los registros a la tabla de destino, #a que este tipo de consultas conservan los valores originales cuando se colocan los datos en campos autonumericos. a# que eliminar, si e-iste, la clave principal del campo que la ostente o si se ha establecido la propiedad 5nde-ado sin duplicados en algun otro campo. )e lo contrario, fracasara l a consulta. &i la otra tabla esta en una base de datos distinta, no ha# ma#or problema para la importacion. &i ha sido generada por otra aplicacion, siempre que sea compatible con el estandar ")%C, incluso bastaria con ejecutar directamente la consulta de datos ane-ados, es decir, se puede omitir el paso intermedio de crear una copia de la tabla. 'or tanto, ha# que elegir Archivo!"btener datos e-ternos!/incular tablas # elegir a continuacion el nombre de archivo. Entre los tipos de archivo figuran muchos que Access reconoce directamente # tambien figura ")%C.
trucos access: Animacion con los creditos del programa Crear una nueva base de datos # grabarla con el nombre 0o &peed Racer 0o. uego elegir A#uda!Acerca de # hacer doble clic con el boton derecho del raton sobre el dibujo del cuadro de dialogo. 'ara salir de la animacion, pulsar E&C.
trucos access: Asignar el foco a un campo concreto de un formulario al cargarse En las propiedades del formulario # dentro del evento Al activar registro, consignar esta linea de codigo: ombreCuadro.&et+ocus donde ombreCuadro es el nombre del cuadro de te-to al que se desea asignar el foco para que se muestre el cursor en el.
trucos access: Atajo para ver el dise(o de un elemento de la base de datos &i se hace doble clic sobre un elemento en la ventana de la base de datos, se abre la vista de hoja de datos 1la tabla si es un elemento de tabla, el formulario si es un elemento de formulario, etc.2, pero se puede forzar que se abrir la vista de dise(o si se mantiene pulsada la tecla C"TR" mientras se hace el doble clic.