2009-03-30 6 views
7

Où puis-je trouver une liste de propriétés native MS Access disponibles via:MS Access Propriétés

CurrentDb.Properties("Property_Name_Here") 

Par exemple, je sais ;

  • AppTitle est disponible pour accéder au titre de l'application
  • AppIcon est disponible pour accéder au chemin de l'icône utilisée pour l'application

Pour différentes versions, je suis sûr qu'il ya des propriétés différentes. Y a-t-il des listes par version? Par exemple, MS Access 2003 a ces propriétés ... tandis que MS Access 2007 a ces propriétés ... et ainsi de suite.

+0

Pour compléter ces réponses, il semble que certains types de propriété sont retournés comme DAO.DataTypeEnum et d'autres comme VBA.vbVarType, en fonction du type d'objet parent. C'est pertinent pour la réponse de Ballamber, par exemple. Voir: http://stackoverflow.com/questions/27682177/ms-access-control-property-type-not-making-sense –

Répondre

9

Je ne crois pas qu'il existe de liste. Tho, la propriété Properties est une collection. Vous pouvez itérer sur eux et obtenir tous ceux associés. Vous devrez faire toutes les versions de MS Access qui vous intéressent. Pour approfondir, presque tous les objets internes, par ex. les tables, champs, requêtes, etc. ont des propriétés. Les propriétés des champs sont particulièrement utiles car vous pouvez définir comment MS Access lie et affiche le champ à l'utilisateur.

3

Il est difficile de trouver ce genre d'information.

J'ai trouvé un lien here pour les propriétés de DAO définies par Access

+0

Wow, j'aurais pu utiliser cette liste il y a des années. –

7

Il y a une collection de propriétés:

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

Pourquoi utiliser un compteur à la place d'une variable de propriété afin de pouvoir utiliser une boucle FOR/EACH, moins de code et impliquant moins de recherches de valeurs? –

+0

Aucune bonne raison du tout. – Fionnuala

+0

Ouais, Remou: vous n'avez pas * explicitement * déclaré le Sub comme public et ListProps est un nom trop vague. Vous n'avez pas diminué la variable i, donc vous supposez simplement que l'option Explicite est omise, ce qui encourage simplement les mauvaises pratiques. Il serait plus efficace d'utiliser With CurrentDb.Properties ... – onedaywhen

1

Serait-ce ok? :)

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