2009-03-30 24 views
7

¿Dónde puedo encontrar una lista de las propiedades nativas de MS Access disponibles a través de:MS Access Propiedades

CurrentDb.Properties("Property_Name_Here") 

Por ejemplo, que sé;

  • AppTitle está disponible para acceder al título de la aplicación
  • AppIcon está disponible para acceder a la ruta del icono que se utiliza para la aplicación

Para diferentes versiones Estoy seguro de que hay diferentes propiedades. ¿Hay listas por versión? Entonces, por ejemplo, MS Access 2003 tiene estas propiedades ... mientras que MS Access 2007 tiene estas propiedades ... y así sucesivamente.

+0

Para complementar estas respuestas, parece que algunos tipos de propiedades se devuelven como DAO.DataTypeEnum y otros como VBA.vbVarType, según el tipo de objeto principal. Esto es relevante para la respuesta de Ballamber, por ejemplo. Ver: http://stackoverflow.com/questions/27682177/ms-access-control-property-type-not-making-sense –

Respuesta

9

No creo que haya una lista en ninguna parte. Sin embargo, la propiedad Propiedades es una colección. Puede iterar sobre ellos y obtener todos los asociados. Tendría que hacer todas las versiones de MS Access que le interesan. Para exponer más ampliamente, casi todos los objetos internos, p. tablas, campos, consultas, etc. tienen propiedades. Las propiedades de campo son particularmente útiles ya que puede asignar cómo MS Access se vincula y muestra el campo al usuario.

3

Es difícil encontrar ese tipo de información.

he encontrado un enlace here de propiedades DAO de acceso definidos por

+0

Guau, podría haber usado esa lista hace años. –

7

Hay una colección de propiedades:

Sub ListProps() 
    For i = 0 To CurrentDb.Properties.Count - 1 
     Debug.Print CurrentDb.Properties(i).Name 
    Next 
End Sub 
+1

¿Por qué utilizar un contador en lugar de una variable de propiedad para que pueda usar un ciclo FOR/EACH, que es menos código e implica menos búsquedas de valor? –

+0

No hay una buena razón en absoluto. – Fionnuala

+0

Sí, Remou: no * declaraste explícitamente el Sub como Public y ListProps es un nombre demasiado vago. No redujiste la variable i, así que solo estás asumiendo que la Opción Explícita se ha omitido, lo cual es solo un incentivo para las malas prácticas. Sería más eficiente usar With CurrentDb.Properties ... – onedaywhen

1

Sería esto aceptable? :)

Option Compare Database 
Option Explicit 

Private Sub btnShowDbProps_Click() 
On Error GoTo Err_btnShowDbProps_Click 

    Dim prp As DAO.Property 
    Dim dbs As Database 
    Dim strProps As String 

    Set dbs = CurrentDb 

    For Each prp In dbs.Properties 
    Dim propval As String 
    propval = "<not defined>" 

    On Error Resume Next 
    propval = CStr(prp.value) 

    If propval = vbNullString Then propval = "<empty>" 

    strProps = strProps & prp.Name & "=" & propval & " (" & PropertyType(prp.Type) & ")" & vbNewLine 
    Debug.Print strProps 
    Next 

    MsgBox strProps 

Exit_btnShowDbProps_Click: 
    Exit Sub 

Err_btnShowDbProps_Click: 
    MsgBox Err.Description 
    Resume Exit_btnShowDbProps_Click 

End Sub 

Function PropertyType(intType As Integer) As String 

    Select Case intType 
     Case dbBoolean 
     PropertyType = "dbBoolean" 
     Case dbByte 
     PropertyType = "dbByte" 
     Case dbInteger 
     PropertyType = "dbInteger" 
     Case dbLong 
     PropertyType = "dbLong" 
     Case dbCurrency 
     PropertyType = "dbCurrency" 
     Case dbSingle 
     PropertyType = "dbSingle" 
     Case dbDouble 
     PropertyType = "dbDouble" 
     Case dbDate 
     PropertyType = "dbDate" 
     Case dbText 
     PropertyType = "dbText" 
     Case dbLongBinary 
     PropertyType = "dbLongBinary" 
     Case dbMemo 
     PropertyType = "dbMemo" 
     Case dbGUID 
     PropertyType = "dbGUID" 
     Case Else 
     PropertyType = "Unknown:" & intType 
    End Select 

End Function