Entradas populares
-
Como habrás observado, al crear un acceso directo de algún programa, siempre aparecen las flechitas en la parte inferior izquierda del icono...
-
Registrador de Controles ActiveX y Librerías .DLL Software para registrar aquellos archivos .ocx o .dll que a veces son necesarios para po...
-
Bien muchos sabemos que hacer una cuenta de usuario es una tarea fácil mediante Panel de Control, pero que ocurre cuando no podemos accede...
-
Comando que nos sirve para registrar y eliminar del Registro controles OLE, por ejemplo los archivos de controles ActiveX (OCX) o de bibliot...
-
Motorola XT626 ( Iron Rock ) Bueno en esta ocasión traigo el Firmware para poder liberar tu equipo con Nextel y poderlo usar en otr...
-
Este post esta dedicado saber como cambiar la famosa frase a.m. o p.m. que existe en nuestra barra de herramientas a un costado de la hora, ...
-
Bien este aporte es para aquellos usuarios de windows que tengan un mal funcionamiento al ingresar su PenDrive en un ordenador tales como no...
-
Gracias al Prefetching, un nuevo servicio de Windows XP, podemos aumentar la velocidad de carga de nuestro equipo en un tiempo más que ...
-
La mayoría de los efectos se especifican de la misma forma: rodeando el texto que se quiere marcar entre dos etiquetas o directivas ( ta...
-
Arrancar automáticamente Windows XP sin pedir Usuario y contraseña. Supongamos que tenemos configurado en nuestro ordenador a varios usuar...
*Publicidad
9/3/11
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
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario