2009-03-30 14 views
7

Dove posso trovare un elenco nativo di MS Access proprietà disponibili attraverso:MS Access Properties

CurrentDb.Properties("Property_Name_Here") 

Per esempio, lo so;

  • AppTitle è disponibile per accedere al titolo dell'applicazione
  • AppIcon è a disposizione per accedere al percorso dell'icona utilizzato per l'applicazione

Per le versioni differenti Sono sicuro che ci sono diverse proprietà. Ci sono liste per versione? Ad esempio, MS Access 2003 ha queste proprietà ... mentre MS Access 2007 ha queste proprietà ... e così via.

+0

Per completare queste risposte, sembra che alcuni tipi di proprietà vengano restituiti come DAO.DataTypeEnum e altri come VBA.vbVarType, a seconda del tipo di oggetto padre. Questo è rilevante per la risposta di Ballamber, per esempio. Vedi: http://stackoverflow.com/questions/27682177/ms-access-control-property-type-not-making-sense –

risposta

9

Non credo ci sia una lista da nessuna parte. Tuttavia, la proprietà Properties è una raccolta. Puoi scorrere su di loro e ottenere tutti quelli associati. Dovresti fare tutto questo in tutte le versioni di MS Access che ti interessano. Per approfondire, quasi tutti gli oggetti interni, ad es. tabelle, campi, query, ecc. hanno proprietà. Le proprietà del campo sono particolarmente utili in quanto è possibile assegnare il modo in cui MS Access collega e visualizza il campo all'utente.

3

È difficile trovare questo tipo di informazioni.

ho trovato un link here per le proprietà DAO di accesso definite

+0

Wow, avrei potuto usare quell'elenco anni fa. –

7

V'è una raccolta proprietà:

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

Perché utilizzare un contatore anziché una variabile di proprietà in modo da poter utilizzare un ciclo FOR/EACH, che è meno codice e comporta meno ricerche di valore? –

+0

Nessuna buona ragione. – Fionnuala

+0

Sì, Remo: non hai * esplicitamente * dichiarato il Sub come Pubblico e ListProps è un nome troppo vago. Non hai diminuito la variabile i, quindi stai solo supponendo che Option Explicit sia omessa, il che è solo incoraggiante cattiva pratica. Sarebbe più efficiente usare Con CurrentDb.Properties ... – onedaywhen

1

Questo sarebbe 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