我正在MS Access中工作。所有表和視圖都鏈接到SQL Server數據庫。我想編寫一個過程來檢索和存儲關於這些對象的所有格式化信息。很多這種信息可從屬性表(我在設計視圖中打開一個表,並創下了屬性表F4)。例如:如何以編程方式從鏈接表的屬性表中檢索值?
- 過濾
- 順序按
- 過濾器在加載
- 排序在負載
- 排序在
如何編程檢索這些屬性?我只看到他們列入報告。
請注意,我需要檢索的價值觀,而不僅僅是設置。我知道SetFilter方法,這不是我所需要的。
我正在MS Access中工作。所有表和視圖都鏈接到SQL Server數據庫。我想編寫一個過程來檢索和存儲關於這些對象的所有格式化信息。很多這種信息可從屬性表(我在設計視圖中打開一個表,並創下了屬性表F4)。例如:如何以編程方式從鏈接表的屬性表中檢索值?
如何編程檢索這些屬性?我只看到他們列入報告。
請注意,我需要檢索的價值觀,而不僅僅是設置。我知道SetFilter方法,這不是我所需要的。
鏈接的表存在在你的數據庫的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
怎麼這樣呢? (我定義的「表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
這正是我需要的,謝謝您!我試圖找到一個資源來確定哪些屬性是用戶創建的,而不是默認的,我沒有看到任何明顯的東西。有沒有簡單的方法來確定這一點? – Quicksilver
在保存任何自定義項並打印屬性名稱之前,您可以遍歷鏈接的'TableDef'上的整個'Properties'集合。這些應該是默認屬性。任何其他應該是用戶創建的屬性。對不起,我希望這不是你想要的簡單......但這是我能提供的最好的。 ;-) – HansUp