Mediante código

Como puedo hacer lo siguiente:
Minimizar la base de datos cuando abro el formulario principal.
Actualizar vínculos a otra base de datos desde la que estoy.
Compactar y Salir.

1 respuesta

Respuesta
1
Bueno charliemm:
Vamos por partes:
1.Minimizar la Bd, me imagino aq que quieres abrir el formulario y que no quede el fondo de access. Pero aquí hay un pequeño problema... access y sus aplicaciones es un entorno MDI(Interfaz de un padre que administra formularios). Entonces lo que puedes hacer es crear un formulario que te sirva de fondo de tu aplicación, con las propiedades Modal y emergente en Si. Y que ademas lo maximizes al abrir.
Entonces al abrir (evento open del formulario) colocas este código:
***********************
DoCmd. Maximize
Docmd. OpenForm "Principal"
************************
Aquí principal es el nombre del formulario principal tuyo...
Esto te sirve para "esconder" access.
OJO:el formulario principal, y todos los formularios que desees abrir deben tener sus propiedades Modal y emergente en SI, por que sino se "perderan".
Aunque deberías utilizar las propiedades de inicio, en la ventana de base de datos, haz click derecho con el mouse en la parte donde aparece los botones de Abir, diseño, nuevo pero sin tocar ningún botón, al hacer click derecho ve al menu Inicio.
Allí donde dice mostrar formulario/pagina, es aquiel que se abrirá al Abir la BAse de datos, aquí puedes deschequear mostrar ventana de base de datos, ver menu restringidos, usar teclas especiales de access.. y lo que no quieres ver...
Ojo... antes de hacer esto deberías hacer una copia de la bd...
Pero si ya modifico esto, y necesitas hacer otros cambios, simplemente al abrir la Bd, mantén presionada la tecla SHIFT, hasta que se abre totalmente la db, esto hacer que "omita", los cambios que se hizo el "inicio", pero solamente en esa sesiuon, porque al volver abrir sin la tecla SHIFT, la abre según los datos de "inicio".
2.Para eso en un formulario debemos colocar estas variables en General:
Dim ErrVinculo As Boolean
Dim tdfVinculado As TableDef
Dim BASD As Database
Ahora este codogo va en un evento por ejemplo al hacer click en un botón, PERO OJO:debes colocar un areferencia primero para que funciones vas al menu herramientas dentro del código, y ve a referencias, selecciona "Microsoft office 11.0 Object Libray" (esta es para 2003, pero busca la version ultima como la 10.0 para xp)... haz click en aceptar.
Este código lo desarrolle, para que te muestra un cuadro de dialogo en cual seleccionas la bd de origen y el mse encarga de lo demás.
*************************
Dim AntiguaRuta As String
Dim regid As DAO.Recordset
Dim BDOrigen As Database
On Error Resume Next
Etiqueta0.Caption = "Comprobando origen de Datos........Espere un Momento."
DoEvents
Set BASD = CurrentDb
NumTablaVin = 0
For I = 0 To BASD.TableDefs.Count - 1
If BASD.TableDefs(I).Connect <> "" Then
NumTablaVin = I
BASD.TableDefs(I).RefreshLink
End If
Next I
If Err.Number = 3024 Or Err.Number = 3044 Or Err.Number = 3043 Then
Etiqueta0.Caption = "Vinculando Nueva Ruta a la Base de Datos:"
Cuadro2.Visible = True
DoEvents
AntiguaRuta = Right(BASD.TableDefs(NumTablaVin).Connect, (Len(BASD.TableDefs(NumTablaVin).Connect) - _
InStr(1, BASD.TableDefs(NumTablaVin).Connect, "=", 1)))
If MsgBox("La ruta actual al origen de Datos ya no es válida '" & AntiguaRuta & _
"'." & vbCrLf & vbCrLf & "Debe localizarla Nuevamente.", _
vbInformation + vbOKCancel, "Error de Origen de Datos") = vbCancel Then
DoCmd.Quit
End If
Conectar:
Dim CajaDialogo As FileDialog
Set CajaDialogo = Application.FileDialog(msoFileDialogOpen)
Err.Clear
With CajaDialogo
.Filters.Clear
.Filters.Add "Microsoft Access (*.mdb)", "*.mdb" ', 1
.FilterIndex = 1
.InitialView = msoFileDialogViewLargeIcons
.ButtonName = "&Vincular"
.Title = "Vincular Datos"
.AllowMultiSelect = False
.InitialFileName = Application.CurrentProject.path
If .Show = -1 Then
Conectar = ";DATABASE=" & .SelectedItems(1)
TIT.Caption = "Comprobando el Nuevo Origen de Datos......Espere"
DoEvents
Sleep (200)
Set BDOrigen = DBEngine.Workspaces(0).OpenDatabase(.SelectedItems(1))
If Err.Number <> 0 Then
MsgBox Err.Description, vbExclamation, "Error"
DoCmd.Quit
Exit Sub
End If
DoEvents
MensajeErr = ""
For I = 0 To BASD.TableDefs.Count - 1
If BASD.TableDefs(I).Connect <> "" Then
SQL = BASD.TableDefs(I).Name
Set regid = BDOrigen.OpenRecordset(SQL)
If Err.Number = 3078 Then
MensajeErr = "El Origen de Datos seleccionado no es válido o está dañado. " & vbCrLf & _
vbCrLf & "Vuelva a intentarlo."
GoTo ErrVinculo
End If
If BDOrigen.TableDefs(SQL).Attributes = dbAttachedTable Then
If Err.Number = 0 Then
MensajeErr = "Está tratando de vincularse a una Base de Datos que depende de otra." & vbCrLf & _
vbCrLf & "Revise que el origen de Datos sea válido."
GoTo ErrVinculo
End If
End If
ErrVinculo:
If MensajeErr <> "" Then
MsgBox MensajeErr, vbInformation, "Error"
DoEvents
TIT.Caption = ""
Err.Clear
GoTo Conectar
End If
End If
Next I
regid.Close
Set regid = Nothing
Set BDOrigen = Nothing
PROGRESO.Max = BASD.TableDefs.Count - 1
PROGRESO.Min = 1
PROGRESO.Visible = True
For I = 0 To BASD.TableDefs.Count - 1
If BASD.TableDefs(I).Connect <> "" Then
Err.Clear
Set tdfVinculado = BASD.TableDefs(I)
tdfVinculado.Connect = Conectar
tdfVinculado.RefreshLink
If Err.Number = 3045 Then
MsgBox "No se puede vincular al Origen de datos señalado porque" & vbCrLf & "hay un Usuario " & _
"que actualmente lo tiene Bloqueado." & vbCrLf & vbCrLf & "Serciorese que ningún " & _
"Usuario este trabajando" & vbCrLf & "actualmente con el Programa o el Origen de Datos.", _
vbExclamation, "Error"
Me.TimerInterval = 0
DoCmd.Quit
Exit Sub
End If
End If
TIT.Caption = (I + 1) & " de " & BASD.TableDefs.Count & " Objetos de Datos Vinculados " & _
"hasta el momento"
PROGRESO.Value = I
DoEvents
Next I
MsgBox "Se ha actualizado la ruta al Origen de Datos con Exito." & vbCrLf & vbCrLf & _
"Nueva Ruta: '" & .SelectedItems(1) & "'.", vbInformation, "Nueva Ruta"
Me.TimerInterval = 0
DoCmd.Close acForm, "CONEXION"
Else
If MsgBox("Imposible de Abrir el programa sino se localiza el Origen de Datos." & vbCrLf & vbCrLf & _
"¿Desea intentarlo otra vez ?. En caso contrario se cerrará la Aplicación", vbCritical + _
vbYesNo, "Importante") = vbYes Then
GoTo Conectar
Else
DoCmd.Quit
End If
End If
End With
Set CajaDialogo = Nothing
End If
***************************
3. Para compactar: este código lo puedes colocar en un formulario, y en el evento click del botón lo llamas, o en otro lado donde lo requieras:
**************************
'---------------------------------------------------------
'
' CompactarDb
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
' [email protected]
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Sub CompactDb()
CommandBars("Menu bar"). _
Controls("Herramientas"). _
Controls("Utilidades de la base de datos"). _
Controls("Compactar y reparar base de datos..."). _
accDoDefaultAction
End Sub
*****************************
Para salir sirve esto:
Docmd. Quit
Pero si lo que quieres es que al cerrar la bd, compacte automáticamente haz esto:
Ve a opciones en el menu herramientas, ve a la ficha General, y chequea Compactar al cerrar.
Bueno me avisas como te fue:
Att:telemaco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas