Entradas populares

*Publicidad

Mostrando entradas con la etiqueta Acces. Mostrar todas las entradas
Mostrando entradas con la etiqueta Acces. Mostrar todas las entradas

9/3/11

Métodos abreviados en Acces:

Es muy probable que al rellenar formularios o tablas haya que introducir el mismo valor de campo para varios registros consecutivos, como, por ejemplo, introducir nombres de fechas, provincias, poblaciones, etc. Con la combinación de teclado CTRL + ‘ esta operación se realiza de forma automática. Otras combinaciones útiles son:
CTRL + + Añade un registro nuevo
CTRL + : Inserta la fecha actual
CTRL + - Elimina el registro actual
CTRL + ; Inserta la hora actual
CTRL + ALT + ESPACIO Inserta el valor predeterminado de un campo
CTRL + INTRO Inserta una nueva línea en un campo
MAYUS + INTRO Combinación que guarda los cambios realizados en el registro actual

Evita la ejecucion de las opciones de inicio


Cuando hay una macro llamada Autoexec, Access la abre automaticamente.
En todas las versiones de Access se puede evitar su ejecucion pulsando la tecla "Mayusculas" durante el proceso de apertura del archivo.

En 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. La linea de comando de Access quedaria asi:

msaccess.exe /nostartup "c:basesbasedato.mdb" .


Abrir el formulario que se cerro la ultima vez


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.

Añadir 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

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 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 diseño, pulsar el boton Codigo y añadir 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
Entrar