2015-06-10 45 views
3

我有一個窗體與幾個不同的文本框。每個文本框都填充了不同查詢的結果。我對VBA/Access並不是很熟悉(我正在教自己),我不確定我在做什麼是最有效的。我希望有人可能會建議可能不太麻煩的方式填充表單上的文本框與不同的查詢,或者甚至可能建議更好的變量命名約定。有沒有一種更有效的方法來顯示多個查詢結果在不同的文本框中的表格

*編輯 - 我認爲有一種方法可以直接在文本框中放置公式,而不是通過VBA進行,但我收到了#name錯誤。

Private Sub Form_Load() 
Dim db As DAO.Database 
Dim qdf As QueryDef 
Dim rst As Recordset 

Dim qdf2 As QueryDef 
Dim rst2 As Recordset 

Set db = CurrentDb() 

Set qdf = db.QueryDefs("QryGetTotalTransactions") 
Set rst = qdf.OpenRecordset 

Set qdf2 = db.QueryDefs("QryGetTotalTransactionsInManagement") 
Set rst2 = qdf2.OpenRecordset 

[Form_Portfolio Status].TotalTransaction_txt.Value = rst![Total] 
[Form_Portfolio Status].TotalInManagement_txt.Value = rst2![Total] 

End Sub 

回答

3

在這兩個示例的每一箇中,您都從保存的查詢中檢索單個值。因此DLookup可以用較少的代碼獲得值。

DLookup("[Total]", "QryGetTotalTransactions") 
DLookup("[Total]", "QryGetTotalTransactionsInManagement") 

您可以分配DLookup返回值的文本框的.Value財產......就像你用記錄值做。或者,您可以使用DLookup表達式作爲文本框控制源

關於效率,DLookup性能不可能比記錄集方法更快。但是你不需要所有的代碼來管理DAO對象。所以也許可以節省開發者的時間,這應該算是一些東西。 :-)

+1

只要稍微擴展 - 如果你有一些你想要過濾查詢的值(比如表單上的文本字段),那麼你的'DLookup'看起來就像這樣:DLookup(「 Total]「,」QryGetTotalTransactionsInManagement「,」[someParameterName] =「&Me.someFieldName.Value)if integer。如果字符串您需要添加單引號('someString'),如果日期標籤(#日期#)。 – emihir0

+0

我正在嘗試@hansup建議但收到「需要的對象」錯誤。也許我正在做倒退。 Dlookup(「[Total]」,「QryGetTotalTransactionsPotential」)= [Form_Portfolio狀態] .TotalInPotential_txt.Value – UnbrokenChain

+0

Nevermind @HansUp在查看您發佈的Dlookup鏈接後得到它。 最終溶液: '昏暗VARx前提作爲Variant' 'VARx前提=使用DLookup( 「[總]」, 「QryGetTotalTransactionsPotential」)' '[Form_Portfolio狀態] .TotalInPotential_txt.Value = Varx' – UnbrokenChain

相關問題