2009-03-30 41 views
7

Tôi có thể tìm thấy một danh sách có nguồn gốc bất động sản MS Access có sẵn thông qua đâu:MS Access Thuộc tính

CurrentDb.Properties("Property_Name_Here") 

Ví dụ, tôi biết;

  • AppTitle có sẵn để truy cập tên của ứng dụng
  • AppIcon có sẵn để truy cập đường dẫn của icon sử dụng cho các ứng dụng

Đối với các phiên bản khác nhau tôi chắc chắn có những đặc tính khác nhau. Có danh sách theo phiên bản không? Vì vậy, ví dụ, MS Access 2003 có các thuộc tính này ... trong khi MS Access 2007 có các thuộc tính này ... và vân vân.

+0

Để bổ sung các câu trả lời này, có vẻ như một số loại thuộc tính được trả về dưới dạng DAO.DataTypeEnum và các loại khác dưới dạng VBA.vbVarType, tùy thuộc vào loại đối tượng gốc. Điều này có liên quan đến câu trả lời của Ballamber, ví dụ. Xem: http://stackoverflow.com/questions/27682177/ms-access-control-property-type-not-making-sense –

Trả lời

9

Tôi không tin có danh sách ở bất kỳ đâu. Tho, thuộc tính Properties là một bộ sưu tập. Bạn có thể lặp qua chúng và nhận được tất cả những cái liên quan. Bạn sẽ phải làm điều này tất cả các phiên bản của MS Access mà bạn quan tâm. Để tiếp tục giải thích, hầu như tất cả các đối tượng bên trong, ví dụ: các bảng, trường, truy vấn, v.v. có các thuộc tính. Các thuộc tính trường đặc biệt hữu ích khi bạn có thể gán cách MS Access liên kết và hiển thị trường cho người dùng.

3

Thật khó để tìm thấy loại thông tin đó.

Tôi đã tìm thấy một liên kết here đối với tài sản DAO Access-định nghĩa

+0

Wow, tôi có thể đã sử dụng danh sách đó năm trước. –

7

Có một bộ sưu tập các thuộc tính:

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

Tại sao sử dụng bộ đếm thay vì biến thuộc tính để bạn có thể sử dụng vòng lặp FOR/EACH, ít mã hơn và có ít lần tra cứu giá trị hơn? –

+0

Không có lý do chính đáng nào cả. – Fionnuala

+0

Vâng, Remou: bạn không * rõ ràng * khai báo Sub là Public và ListProps quá mơ hồ một cái tên. Bạn không Dim biến i, vì vậy bạn chỉ giả định rằng Option Explicit được bỏ qua, đó là chỉ khuyến khích thực hành xấu. Sẽ hiệu quả hơn khi sử dụng Với CurrentDb.Properties ... – onedaywhen

1

này sẽ được 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 
Các vấn đề liên quan