Trucos Access

Embed Size (px)

DESCRIPTION

Trucos Access

Citation preview

TRUCOS ACCESS

TRUCOS ACCESStrucos 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 Herramientas/Opciones, y dentro de la ficha Modificar/Buscar, desmarcar la casilla Consultas de accion que hay dentro del apartado Confirmar.

El resultado es que todos los precios de la tabla original se veran modificados de un plumazo.

Sin embargo, cuando se ejecuta la consulta desde un formulario, queda mas profesional si no se muestran esos mensajes. Para ello, se puede aadir la siguiente linea de codigo justo antes de las que se hayan generado para el boton:

Dcmd.SetWarnings False

De esta forma, la consulta se ejecuta sin pedir confirmaciones. No obstante, es recomendable volver a activar las confirmaciones despues de la ejecucion de esas consultas mediante esta otra linea de codigo:

Dcmd.SetWarnings Truetrucos access: Evitar datos duplicados en el mismo campo

Aunque Access diga, al introducir datos en un campo clave principal en un nuevo registro, que ya existe en el campo clave principal de otro registro, avisa del error despues de que ya se ha producido, obligando a introducir todos los campos del registro duplicado hasta el final. Sin embargo, existe un procedimiento mediante el cual Access puede avisar de la duplicidad nada mas introducir el dato.

Lo primero es asegurarse de que el campo a comprobar esta indexado y es clave principal. Supongamos una base de datos de pacientes que ingresan en un hospital y el objetivo es detectar que no se repita el dato introducido en el campo NumHistoria.

Abrir el formulario en vista Diseo, elegir Ver/Codigo e incluir en el apartado General/Declaraciones (General a la izquierda y Declaraciones a la derecha) el siguiente codigo:

Dim BaseDatos as DataBase

Dim Pacientes as Recordset

Con ello se define que van a utilizarse dos objetos DAO o de acceso a datos: una base de datos y un recordset y asegurando que seran visibles en todos los procedimientos del formulario.

En el evento Al cargar del formulario incluir estas lineas de codigo:

Set BaseDatos = CurrentDB()

Set Pacientes = BaseDatos.OpenRecordset("PacientesIngresados",dbOpenTable)

La primera linea asigna la base de datos actual a la variable BaseDatos, la segunda asigna a la variable Pacientes los registros existentes en la tabla Pacientes Ingresados de la base de datos BaseDatos, y 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:

Pacientes.Index = "PrimaryKey"

En el evento Antes de actualizar de la variable NumHistoria incluir:

Sub NumHistoria_BeforeUpdate (Cancel as integer)

Pacientes.Seek "=", NumHistoria

If Not Pacientes.NoMatch then

Msgbox "Num. de historia ya existente.",48

Cancel = True

Exit Sub

End If

End Sub

La instruccion que contiene Seek (que es un metodo que solo se puede utilizar con los Recordset abiertos con dbOpenTable), lo que hace es intentar encontrar en la tabla Pacientes alguno con el numero de historia igual a la variable NumHistoria, y va a buscar en numeros de historia porque al cargar el formulario ya sabe que el indice iba a ser la clave principal, que hemos supuesto que va por Numero de Historia.

trucos access: Evitar que se ejecuten las opciones de inicio

Cuando existe una macro llamada Autoexec, Access la ejecuta automaticamente al abrirse el archivo de la base de datos. En todas las versiones de Access se puede evitar su ejecucion pulsando la tecla MAYUSCULAS durante el proceso de apertura del archivo (se exceptua el procedimiento especial que se comenta en el truco n 12).

Desde Access 97 se puede hacer uso en la linea de comandos de Access de un nuevo parametro llamado /NOSTARTUP que tambien impide la ejecucion de la macro Autoexec, asi como de todas aquellas opciones de inicio que se hayan especificado al elegir Herramientas/Inicio. Por ejemplo, para abrir una base de datos con este parametro, la linea de comando de Access quedaria asi:

msaccess.exe /nostartup "c:\bases\basedato.mdb"

trucos access: Evitar la aparicion del menu contextual

Crear una nueva barra de herramientas personalizada y despues elegir Herramientas/Inicio consignar en el apartado Barra de menu contextual la recien creada. Asi, al pulsar el boton derecho del raton, se desplegara la barra de herramientas que se haya establecido.

trucos access: Evitar error por falsa linea de comandos

Access en todas sus versiones, incluida la 2000, muestra un error de linea de comandos erronea cuando se hace un doble clic para abrir un archivo MDB que se encuentra en un directorio que contiene espacios en su nombre y tambien cuando el nombre del archivo contiene espacios. La unica forma de evitarlo es eliminar esos espacios. Como consejo, lo mejor es evitar el uso de nombres largos para carpetas y archivos de bases de datos, ya que el ejecutable msaccess.exe no permite nombres largos de archivos en su linea de comandos. Por ejemplo, la siguiente linea no funcionara:

msaccess.exe basedatos.mdb

Sin embargo, si funcionara esta otra:

msaccess.exe baseda~1.mdb

trucos access: Abrir un formulario en el mismo registro que mostraba cuando se cerro la ultima vez teniendo en cuenta al usuario y al PC que utilizo

Como ampliacion de lo anterior, aqui se trata el mismo asunto pero teniendo en cuenta el nombre del usuario y de su PC, lo cual puede ser util en entornos corporativos. Todo el procedimiento es practicamente similar. Se aaden ciertas lineas al codigo de los eventos y lo realmente nuevo es la adicion de un modulo para definir la funcion que recoge el nombre del PC. Se ha incluido en un modulo y no en el codigo del formulario porque de esta forma podra ser utilizado desde cualquier formulario y no solo desde uno. Tambien la tabla auxiliar tendra ahora mas campos.

Los pasos a seguir son:

Crear una tabla auxiliar (que aqui vamos a llamar Acceso) para almacenar el ultimo registro visualizado en el formulario. Contendra dos campos, uno (que llamaremos CampoClave para guardar el nombre del campo clave principal de la tabla asociada al formulario y otro para guardar el valor de dicha clave:

CAMPOS TIPO

CampoClave Texto (Clave principal)

Usuario Texto (Clave principal)

Ordenador Texto (Clave principal)

Valor Texto

El campo CampoClave se ha descrito como de tipo texto 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 texto y que su nombre es ClaveFormul. En cada formulario deberemos tomar nota del nombre de ese campo y de su tipo.

Aadir el siguiente codigo al evento Al descargar del formulario deseado:

Private Sub Form_Unload(Cancel As Integer)

Dim Valor As String

If IsNull(Me![ClaveFormul]) Then

' Cambiar [ClaveFormul] por el nombre del campo clave principal

Valor = "acNewRec"

Else

Valor = Me![ClaveFormul]

' Cambiar [ClaveFormul] por el nombre del campo clave principal

End If

Set rst = db.OpenRecordset(Sql, dbOpenDynaset)

If rst.RecordCount = 0 Then

rst.AddNew

rst![Usuario] = Application.CurrentUser

rst![Ordenador] = NombrePC

rst![CampoClave] = Me.Name

rst![Valor] = Valor

rst.Update

Else

rst.Edit

rst![Valor] = Valor

rst.Update

End If

rst.Close

End Sub

Aadir 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 y se coloca en el:

Private Sub Form_Load()

Set db = CurrentDb

Sql = "SELECT * FROM Acceso WHERE "

Sql = Sql & "Usuario = '" & Application.CurrentUser

Sql = Sql & "' AND Ordenador = '" & NombrePC

Sql = Sql & "' AND CampoClave = '" & Me.Name & "'"

Set rst = db.OpenRecordset(Sql, dbOpenSnapshot)

If rst.RecordCount > 0 Then

If Not IsNull(rst![Valor]) Then

If rst!Valor "acNewRec" Then

Set rstFrm = Me.RecordsetClone

' Si el campo clave principal ("ClaveFormul" en este ejemplo) es de tipo texto,

' la instruccion a incluir seria esta:

rstFrm.FindFirst "[ClaveFormul] = '" & rst![Valor] & "'"

' Cambiar [ClaveFormul] por el nombre del campo clave principal

' Si el campo clave principal ("ClaveFormul" en este ejemplo) es de tipo

' numerico, la instruccion seria:

' rstFrm.FindFirst "[ClaveFormul] = " & rst![Valor]

' Cambiar [ClaveFormul] por el nombre del campo clave principal

If Not rstFrm.NoMatch Then

Me.Bookmark = rstFrm.Bookmark

End If

rstFrm.Close

Else

DoCmd.GoToRecord , , acNewRec

End If

End If

End If

rst.Close

End Sub

No hay que olvidar que no solo hay que incluir el codigo, sino asegurarnos que en la hoja de propiedades del formulario quedan marcados ambos eventos: Al cargar y Al descargar con [Procedimiento de evento].

Estando abierto el formulario en modo de diseo, pulsar el boton Codigo y aadir en la seccion Declaraciones el siguiente codigo:

Option Compare Database

Option Explicit

Dim db As Database

Dim rst As Recordset

Dim rstFrm As Recordset

Dim Sql As String

Crear un modulo con un nombre cualquiera, que llevara este codigo:

Option Compare Database

Option Explicit

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function NombrePC() As String

Dim Buffer As String

Dim Size As Long

Dim X As Long

Buffer = Space(255)

Size = 255

'Asigna Nombre Maquina

X = GetComputerName(Buffer, Size)

NombrePC = Left$(Buffer, Size)

End Function

trucos access: Abrir un formulario en el mismo registro que mostraba cuando se cerro la ultima vez

No existe una opcion por defecto, pero se puede aadir un pequeo codigo para que se guarde el ultimo registro visualizado y Access vuelva a el al ser abierto el mismo formulario.

Los pasos a seguir son:

1) Crear una tabla auxiliar (que aqui vamos a llamar Acceso) para almacenar el ultimo registro visualizado en el formulario. Contendra dos campos, uno (que llamaremos CampoClave para guardar el nombre del campo clave principal de la tabla asociada al formulario y otro para guardar el valor de dicha clave:

CAMPOS TIPO

CampoClave Texto (Clave principal)

Valor Texto

El campo CampoClave se ha descrito como de tipo texto 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 texto y que su nombre es ClaveFormul. En cada formulario deberemos tomar nota del nombre de ese campo y de su tipo.

2) Aadir el siguiente codigo al evento Al descargar del formulario deseado:

Private Sub Form_Unload(Cancel As Integer)

Dim Valor As String

If IsNull(Me![ClaveFormul]) Then

' Cambiar [ClaveFormul] por el nombre del campo clave principal

Valor = "acNewRec"

Else

Valor = Me![ClaveFormul]

' Cambiar [ClaveFormul] por el nombre del campo clave principal

End If

Set rst = db.OpenRecordset(Sql, dbOpenDynaset)

If rst.RecordCount = 0 Then

rst.AddNew

rst![CampoClave] = Me.Name

rst![Valor] = Valor

rst.Update

Else

rst.Edit

rst![Valor] = Valor

rst.Update

End If

rst.Close

End Sub

3) Aadir 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 y se coloca en el:

Private Sub Form_Load()

Set db = CurrentDb

Sql = "SELECT * FROM Acceso WHERE CampoClave = '" & Me.Name & "'"

Set rst = db.OpenRecordset(Sql, dbOpenSnapshot)

If rst.RecordCount > 0 Then

If Not IsNull(rst![Valor]) Then

If rst!Valor "acNewRec" Then

Set rstFrm = Me.RecordsetClone

' Si el campo clave principal ("ClaveFormul" en este ejemplo) es de tipo texto,

' la instruccion a incluir seria esta:

rstFrm.FindFirst "[ClaveFormul] = '" & rst![Valor] & "'"

' Cambiar [ClaveFormul] por el nombre del campo clave principal

' Si el campo clave principal ("ClaveFormul" en este ejemplo) es de tipo

' numerico, la instruccion seria:

' rstFrm.FindFirst "[ClaveFormul] = " & rst![Valor]

' Cambiar [ClaveFormul] por el nombre del campo clave principal

If Not rstFrm.NoMatch Then

Me.Bookmark = rstFrm.Bookmark

End If

rstFrm.Close

Else

DoCmd.GoToRecord , , acNewRec

End If

End If

End If

rst.Close

End Sub

No hay que olvidar que no solo hay que incluir el codigo, sino asegurarnos que en la hoja de propiedades del formulario quedan marcados ambos eventos: Al cargar y Al descargar con [Procedimiento de evento].

4) Estando abierto el formulario en modo de diseo, pulsar el boton Codigo y aadir en la seccion Declaraciones el siguiente codigo:

Option Compare Database

Option Explicit

Dim db As Database

Dim rst As Recordset

Dim rstFrm As Recordset

Dim Sql As String

Las dos primeras lineas ya estaran escritas al acceder a esa seccion. Lo mismo ocurre con las lineas primera y ultima del codigo de los eventos. Simplemente hay que procurar no repetirlas.

En el numero siguiente se explica como ampliar este truco para que reconozca al usuario y a su PC.

trucos access: Abrir una tabla en modo de solo lectura

Puede ocurrir que desde un formulario venga bien en un determinado momento abrir una de las tablas para examinar su contenido. Si se da ese caso, lo mejor es abrirla en modo de solo lectura a fin de evitar modificaciones indeseadas. Supongamos que se desea presentar la tabla al pulsar sobre un boton. Para ello, se crea el boton con la herramienta al efecto y, justo en el momento de aparecer la primera pantalla del asistente, cancelar el proceso. De esta forma, el boton queda creado aunque sin codigo asociado. Acceder, por tanto, a las propiedades del boton y, dentro del evento Al hacer clic, insertar esta linea de codigo:

DoCmd.OpenTable "Nombre_tabla", , acReadOnly

donde Nombre_tabla 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:

DoCmd.GoToRecord , , acNewRec

trucos access: Abrir una base de datos distinta desde un boton de un formulario

En el formulario abierto en modo de diseo, pulsar el boton que crea botones de la barra de herramientas. Si se inicia el asistente, pulsar Cancelar. Quedara a la vista en el formulario un boton con un nombre de la forma Comando0 (si es el primer boton creado en el formulario).

Acceder a sus propiedades haciendo doble clic sobre el y, dentro de la ficha Eventos, pulsar sobre el evento Al hacer clic, eligiendo del menu desplegable Procedimiento de evento.

Pulsar sobre el diminuto boton de los 3 puntos que hay a su derecha e incluir las siguientes lineas antes de la instruccion "End Sub":

Dim stAppName As String

stAppName = "msaccess.exe x:\ruta\Base.mdb"

Call Shell(stAppName, 1)

DoCmd.Quit

Ahora solo basta reemplazar la cadena de caracteres entrecomillada en la 2 linea para que apunte al directorio y archivo MDB deseados. Las comillas hay que mantenerlas.

Hay que hacer notar que la ruta de acceso al archivo MDB ha de especificarse con su nombre corto de MS-DOS; de lo contrario, no se abrira.

trucos access: Forzar 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 y dejar el cursor en el campo que se acaba de modificar para pulsar un boton para imprimir o para cerrar (o lo para lo que sea), los cambios hechos se pierden. Se soluciona pasando el cursor a otro campo pero interesa que sea automatico. Para ello, hay que incluir el siguiente codigo en el evento Al hacer clic de cada boton:

DoCmd.RunCommand acCmdSaveRecord

Esto solo funciona en Access 97 o posterior. En Access 7.0 la sintaxis seria:

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

trucos access: Forzar la aparicion de los datos de un registro existente al introducir uno de los datos

Supongamos que al introducir un DNI queremos que aparezcan los demas datos de una persona, si es que existe en la base de datos y, si no, poder introducir sus datos. Para ello hay que crear 2 tablas y despues relacionarlas entre si. Una de ellas contendra solo el campo del DNI y la otra contendra todos los datos (incluido el DNI tambien).

Para introducir datos hay que crear un formulario con origen en la primera tabla (la mas pequea) que incluya el campo del DNI referente a esa primera tabla y ademas un subformulario con origen en la segunda tabla que presentara el resto de los datos excepto el del DNI, que se debe establecer como No visible en sus propiedades.

trucos access: Forzar a que el valor introducido en un campo del formulario se quede como predeterminado para subsiguientes registros

Estando en modo de diseo del formulario, pulsar el boton de Codigo (o elegir Ver/Codigo). Si no se ha introducido nunca codigo, aparecera solo una o dos lineas con algo asi:

Option Compare Database

Teclear en la linea siguiente:

Dim CampoTrabajo As String

Con ello se define un campo de trabajo para todo el formulario llamado CampoTrabajo y de tipo caracter; tambien se podria utilizar Integer, Long, Real, etc. ya que debe ser igual a como este definido en la tabla de la base de datos.

Luego ir a la ventana de propiedades del Formulario, buscar el evento Despues de actualizar, elegir Procedimiento 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:

Private Sub Form_AfterUpdate()

End Sub

Entre ellas se tecleara:

CampoTrabajo = [Campo]

suponiendo que el campo que se desea que salga predeterminado sea Campo. Buscar despues la propiedad Antes de insertar, seleccionar Procedimiento de evento, pulsar el boton de los tres puntos y aparecera:

Private Sub Form_BeforeInsert(Cancel As Integer)

End Sub

Teclear entre ellas:

[Campo] = CampoTrabajo

Si 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.

Nota:

Puede aparecer un problema al operar con el primer registro de la tabla, para lo cual hay dos posibilidades:

1) Permitir a [campo] longitud cero en sus propiedades dentro de la tabla.

2) En el codigo del evento Antes de insertar, en lugar de poner

[campo]=CampoTrabajo

poner:

If Len(CampoTrabajo) >0 Then

[campo] = CampoTrabajo

End If

trucos access: Forzar 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. Para forzar que se abrir con el ultimo, acceder a sus propiedades y en la seccion Al cargar, elegir Procedimiento de evento, luego pulsar sobre el boton de los puntos suspensivos e insertar el siguiente codigo:

DoCmd.GoToRecord , , acLast

trucos access: Aadir 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 incluye los campos de las tablas elegidas. Si se pretenden coger todos los campos, el metodo mas eficaz es hacer doble clic sobre el titulo de la tabla y quedaran seleccionados todos los campos que tenga. Luego basta un solo arrastre para que todos los campos se integren en la cuadricula de la consulta.

trucos access: Aadir un boton de automarcado

Si alguna vez se necesita llamar a alguien por telefono mientras se esta una base de datos, he aqui como. Desde el modo Diseo del formulario, hacer clic sobre el icono del asistente de botones de comando en la caja de herramientas. Seleccionar Otros en la ventana Categorias y Automarcador en la ventana Acciones. Hacer clic en Siguiente, elegir una imagen o texto para el boton y hacer clic en finalizar, despues cambiar al modo Formulario y probar el boton. Poner el cursor en el campo de numero de telefono del formulario, hacer clic en el boton recien creado, y cuando el dialogo de Marcado telefonico automatico aparezca, elegir Aceptar.

Cuando suene el telefono, descolgar y hacer clic en el boton de hablar en la ventana de dialogo de Marcado telefonico automatico.

trucos access: Aadir un nuevo elemento a un cuadro combinado cuyo origen de la fila es una tabla no actualizable

Muchas 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. Sin embargo, utilizamos estas tablas en cuadros combinados, con lo que existe la posibilidad de que el usuario quiera aadir un nuevo elemento a la lista. Mediante el siguiente procedimiento se aade 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:

Sub id_pais_notinlist(newdata as string,response as integer)

dim mensaje as string,titulo as string,respuesta as integer

dim db as database,r as recordset,codigo as byte

mensaje = "El elemento no se encuentra en la lista. Desea aadirlo?"

titulo = "Nuevo Pais"

respuesta = msgbox(mensaje,36,titulo)

if respuesta = 6 then 'Si se desea dar de alta el nuevo elemento

set db = currentdb()

set r = db.openrecordset(Tpais)

codigo = ult_idpais() + 1 'Funcion que obtiene el ultimo codigo de pais de la tabla

r.addnew

r![id_pais] = codigo

r![nombre] = newdata

r.update

r.close

origen = "Select id_pais,nombre From Tpais" 'Se actualiza el origen de la fila

me![id_pais].rowsource = origen

me![id_pais].requery

me![id_pais] = codigo 'Se asigna el nuevo codigo

else

me![id_pais] = null

docmd.gotocontrol "id_pais"

end if

response = data_errcontinue

End Sub

La funcion ult_idpais() podria ser de la siguiente forma:

Private Function ult_idpais() As Byte

Dim db As Database

Dim ssTmp As Recordset

Dim sSQL As String

Dim yCodigo As Byte

sSQL = "SELECT Max(id_pais) AS UltCodigo FROM Tpais"

Set db = currentdb()

Set ssTmp = db.OpenRecordset(sSQL, dbOpenSnapshot, dbForwardOnly)

yCodigo = ssTmp!UltCodigo

ssTmp.Close

Set ssTmp = Nothing

Set db = Nothing

Return yCodigo

End Function

trucos access: Cambiar el valor inicial de un contador

* Crear una tabla que contenga el campo autonumerico pero no introducir ningun numero.

* Crear una segunda tabla, con un campo de tipo numerico y tipo Entero Largo y que tenga el mismo nombre que el de tipo contador de la primera tabla.

* Introducir un registro en la segunda tabla que sea un numero menor del que se desea que sea el inicial.

* Crear un consulta para agregar datos a una tabla, a fin de agregar el dato de la segunda tabla a la primera.

* Ejecutar la consulta y ya se tendra un contador desde el valor deseado.trucos access: Cambiar la plantilla de formularios por defecto

Si se suele utilizar siempre un formato diferente al que Access proporciona para los formularios, se puede configurar para que aparezca siempre una plantilla personalizada. Para ello, una vez creado el formato de formulario, guardarlo con cualquier nombre dentro de una base de datos cualquiera y elegir Herramientas/Opciones. Dentro de la ficha Formularios/Informes introducir el nombre dado a la plantilla para reemplazar a la que viene por defecto y aceptar los cambios. Las 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 y elegir Ver/Barras de herramientas/Formato (hoja de datos). En la nueva barra apareceran botones para cambiar el tipo de letra y su tamao, asignar color para el fondo de la tabla, para los caracteres y 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:

* Relacionar las tablas del formulario principal y del subformulario, escogiendo Relaciones del menu principal de Herramientas; entonces seleccionar Mostrar tabla.

* Aadir las tablas del formulario y subformulario al espacio de trabajo Relaciones, seleccionandolas de la lista Mostrar tabla; despues hacer clic en Aadir.

* Arrastrar el campo primario en negrita de la tabla del formulario principal al campo del mismo nombre en la tabla del subformulario.

* Hacer clic en Crear en el dialogo Relaciones, cerrar la ventana y guardar la nueva relacion.

* Ejecutar el asistente de formularios. En la primera pantalla escoger las tablas del formulario y subformulario especificando que campos se deben mostrar en los dos formularios.

* Hacer clic en Siguiente, y el asistente le preguntara como quiere ver los datos.

* Asegurarse de seleccionar el boton de radio Formulario con subformulario.

* Elegir un formato para los datos y un estilo general.

* Elegir un nombre para los nuevos formularios.

trucos access: Crear una suma continua en un formulario

Para crear una suma continua en un formulario, la tabla sobre la que esta basada debe contener al menos un campo autonumerico (en las versiones 1.x o 2.0, un campo contador). Si la tabla no contiene ese campo, se puede abrir la tabla en modo diseo y crear el campo.

El siguiente ejemplo utiliza una tabla que contiene tres campos: Contador (Campo Autonumerico), Cantidad (Campo numerico) y Total (Campo Numerico). La tabla se llama Prueba.

Crear un formulario nuevo basado en la tabla Prueba.

Formulario: Formulario1

------------------------

OrigendelRegistro: Prueba

Cuadro de Texto: Contador

Origen del Control: Contador

Cuadro de Texto: Cantidad

Origen del Control: Cantidad

Cuadro de Texto: Total

Origen del control: =Dsum("[Cantidad]";"Prueba";"[Contador]