Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Base de datos : StartUpProperties
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Cómo puedo cambiar o crear a través de código las propiedades que aparecen en el Menu | Herramientas | Inicio...?
Respuesta : Con la función StartUpProperties puedes cambiar/crear cualquier propiedad de inicio de la base de datos. Tiene los siguientes

Argumentos

ArgumentoDescripción
PrpNameRequerido. Nombre de la propiedad que se vaya a cambiar o crear. Para ver una lista de los nombres de estas propiedades de inicio, consultar el cuadro "Propiedades de Inicio"
PrpValueRequerido. Valor de la propiedad de inicio que se vaya a cambiar/crear
DbPathOpcional. Ruta de la base de datos. Si este argumento se omite o es una cadena vacía ("") se buscará en la base de datos actual.

Propiedades de Inicio

Nombre propiedadDescripción
StartUpShowDBWindowValor de tipo boolean. Presentar la ventana Base de Datos
StartupShowStatusBarValor de tipo boolean. Presentar la barra de estado.
AllowShortcutMenusValor de tipo boolean. Permitir el uso de menús contextuales predeterminados
AllowFullMenusValor de tipo boolean. Permitir el uso de menús no restringidos
AllowBuiltInToolbarsValor de tipo boolean. Permitir el uso de barras de herramientas incorporadas
AllowToolbarChangesValor de tipo boolean. Permitir cambios en barras de herramientas y menús
AllowSpecialKeysValor de tipo boolean. Permitir el uso de las teclas especiales de Access
AllowBypassKeyValor de tipo boolean. Permitir el uso de la tecla Shift (Mayúsculas) para omitir la macro Autoexec o el formulario de inicio
AllowBreakIntoCodeValor de tipo boolean. Permitir interrumpir el código
HijriCalendarValor de tipo boolean. Calendario Hijri
UseAppIconForFrmRptValor de tipo boolean. Usar como icono Formulario o Informe (a partir de Access XP)
AppTitleValor de tipo string. Título de la aplicación
StartUpFormValor de tipo string. Formulario de inicio de la aplicación
AppIconValor de tipo string. Ruta y nombre del icono de la aplicación
StartUpMenuBarValor de tipo string. Nombre de la barra de menú de la aplicación
StartUpShortcutMenuBarValor de tipo string. Nombre de la barra de menú contextual
La función StartUpProperties devolverá -1 en caso de tener éxito o el número de error que se haya producido.

Existe una particularidad en la propiedad "AppIcon" (icono de la aplicación) y es que cuando esta propiedad se cambia a través de código, Access no comprueba si el archivo de icono existe o no. Esto puede llevar a que esta propiedad contenga una ruta no válida, lo cual provocará que cada vez que se cambie una propiedad por código se necesite abrir de nuevo la base de datos para que se "refresquen" las propiedades.

La función StartUpProperties sí comprueba este detalle, tanto en el caso de que se quiera asociar una ruta de archivo de icono errónea, como en el caso de que esta propiedad, al trasladarse entre PCs, contenga una ruta no válida. En la primera situación StartUpProperties devolverá el número de error 52 (Nombre o número de archivo incorrecto) y en la segunda simplemente borrará la propiedad, ya que ésta puede provocar errores indeseados.

Ejemplo de uso:
' este ejemplo establecería el título de la aplicación
Dim numError As Long

    numError = StartUpProperties("AppTitle", "Título de la aplicación")
    If numError = -1 Then
        MsgBox "El título de la aplicación ha cambiado"
    Else
        MsgBox "Error: " & Error(numError)
    End If

' este ejemplo establecería el icono de la aplicación
Dim numError As Long

    numError = StartUpProperties("AppIcon", "C:\MiIcono.ico")
    If numError = -1 Then
        MsgBox "El icono de la aplicación ha cambiado"
    Else
        MsgBox "Error: " & Error(numError)
    End If
Pega esta función en un módulo estandar
'---------------------------------------------------------
'
' StartUpProperties
'
' 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
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function StartUpProperties( _
                           PrpName As String, _
                           PrpValue As Variant, _
                           Optional DbPath As String) As Long
                
Dim db As Object 'DAO.Database
Dim prp As Object 'DAO.Property
Dim IconPath As Long

    Err.Clear
    On Error Resume Next
    ' si la propiedad a cambiar es AppIcon
    ' comprobamos que la ruta del icono sea válida
    If PrpName = "AppIcon" Then
        IconPath = Len(Dir(PrpValue))
        If IconPath = 0 Then
            'Nombre o número de archivo incorrecto
            StartUpProperties = 52
            Exit Function
        End If
    End If
    On Error GoTo 0
    
    On Error GoTo err_StartUpProperties
    
    If DbPath = "" Then
        Set db = CurrentDb
    Else
        Set db = DBEngine.OpenDatabase(DbPath)
    End If
    db.Properties(PrpName).Value = PrpValue
    db.Properties.Refresh
    
    Err.Clear
    On Error Resume Next
    ' comprobamos que la ruta del icono asociado a la base de datos
    ' (si es que existe), sea válida. Si no fuera así provocaría que
    ' la propiedad que se ha cambiado/creado no se refrescara.
    IconPath = Len(Dir(db.Properties("AppIcon")))
    If IconPath = 0 Then
        ' borramos la propiedad
        db.Properties.Delete "AppIcon"
    End If
    On Error GoTo 0
    
    Application.RefreshTitleBar
    StartUpProperties = -1
    
exit_StartUpProperties:
    
    Set db = Nothing
    Exit Function
    
err_StartUpProperties:
    
    If Err.Number = 3270 Then 'la propiedad no existe
        Select Case PrpName
        ' Se crea una propiedad tipo booleano
            Case "StartUpShowDBWindow", _
                 "StartupShowStatusBar", _
                 "AllowShortcutMenus", _
                 "AllowFullMenus", _
                 "AllowBuiltInToolbars", _
                 "AllowToolbarChanges", _
                 "AllowSpecialKeys", _
                 "AllowBypassKey", _
                 "AllowBreakIntoCode", _
                 "HijriCalendar", _
                 "UseAppIconForFrmRpt"
                Set prp = db.CreateProperty _
                    (PrpName, DB_BOOLEAN, PrpValue)
                db.Properties.Append prp
                Set prp = Nothing
        ' Se crea una propiedad tipo texto
            Case "AppTitle", _
                 "StartUpForm", _
                 "AppIcon", _
                 "StartUpMenuBar", _
                 "StartUpShortcutMenuBar"
                Set prp = db.CreateProperty _
                    (PrpName, DB_TEXT, PrpValue)
                db.Properties.Append prp
                Set prp = Nothing
        
            Case Else
                ' la propiedad no existe
                StartUpProperties = 3270
                Resume exit_StartUpProperties
        End Select
                    
        Resume Next
    ' error inesperado
    Else
        MsgBox "Error: " & Err.Number & vbCrLf & _
                Err.Description
        StartUpProperties = Err.Number
        Resume exit_StartUpProperties
    End If
  
End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

 

Última actualización: 2/1/2005