2015-12-14 26 views
2

我正在MS Access中工作。所有表和視圖都鏈接到SQL Server數據庫。我想編寫一個過程來檢索和存儲關於這些對象的所有格式化信息。很多這種信息可從屬性表(我在設計視圖中打開一個表,並創下了屬性表F4)。例如:如何以編程方式從鏈接表的屬性表中檢索值?

  • 過濾
  • 順序按
  • 過濾器在加載
  • 排序在負載
  • 排序在

如何編程檢索這些屬性?我只看到他們列入報告。

請注意,我需要檢索的價值觀,而不僅僅是設置。我知道SetFilter方法,這不是我所需要的。

回答

4

鏈接的表存在在你的數據庫的TableDefs收集DAO.TableDef。所以你可以檢查這5個屬性的TableDef.Properties集合。

但是要注意,這兩個過濾排序依據是用戶創建的,而不是默認屬性,這意味着它們不包含Properties集合中,除非你指定它們的值。試圖檢索一個不存在的觸發錯誤3270,「找不到屬性」 。您可以陷阱錯誤,迴應它如你所願,繼續對你感興趣的其他屬性。或者你可以先確定屬性是否存在,只有嘗試在它確實存在於檢索其值。

此代碼示例使用第一種方法(TRAP)中的錯誤:

Const cstrTable As String = "YourLinkedTableNameHere" 
    Dim db As DAO.Database 
    Dim tdf As DAO.TableDef 
    Dim strMsg As String 
    Dim varProp As Variant 
    Dim varProperties As Variant 

On Error GoTo ErrorHandler 

    varProperties = Array("Filter", "FilterOnLoad", "OrderBy", _ 
     "OrderByOn", "OrderByOnLoad") 

    Set db = CurrentDb 
    Set tdf = db.TableDefs(cstrTable) 
    For Each varProp In varProperties 
     Debug.Print varProp, tdf.Properties(varProp).Value 
    Next 

ExitHere: 
    Exit Sub 

ErrorHandler: 
    Select Case Err.Number 
    Case 3270 ' Property not found. 
     strMsg = "Property '" & varProp & "' not found." 
     'MsgBox strMsg 
     Debug.Print strMsg 
     Resume Next 
    Case Else 
     strMsg = "Error " & Err.Number & " (" & Err.Description & ")" 
     MsgBox strMsg 
     Resume ExitHere 
    End Select 
+0

這正是我需要的,謝謝您!我試圖找到一個資源來確定哪些屬性是用戶創建的,而不是默認的,我沒有看到任何明顯的東西。有沒有簡單的方法來確定這一點? – Quicksilver

+0

在保存任何自定義項並打印屬性名稱之前,您可以遍歷鏈接的'TableDef'上的整個'Properties'集合。這些應該是默認屬性。任何其他應該是用戶創建的屬性。對不起,我希望這不是你想要的簡單......但這是我能提供的最好的。 ;-) – HansUp

0

怎麼這樣呢? (我定義的「表2」有兩個字段,「屬性名」和「的PropertyValue」 ...「表1」是任何現有的表的佔位符)

Dim i As Integer 
Dim j As Integer 
Dim RS As DAO.Recordset 

On Error Resume Next 

Set RS = CurrentDb.OpenRecordset("select * from table2") 

j = CurrentDb.TableDefs("table1").Properties.Count 


For i = 0 To j - 1 


RS.AddNew 
RS!PropertyName = CurrentDb.TableDefs("table1").Properties(i).Name 
RS!PropertyValue = Nz(CurrentDb.TableDefs("table1").Properties(i).Value, "-") 
RS.Update 

Next i 
相關問題