簡體   English   中英

MS-Access 2003-在表格上的文本框中表達

[英]MS-Access 2003 - Expression in a Text Box on a form

只是想知道何時在文本框中的表單上使用表達式從表中返回值,該表達式中是否可以有多個表來返回值?

這些表是鏈接的,我可以在查詢中返回該值,所以我認為Access也可以使用此方法來完成?

=DSum("[tblMain]![Revenue]","tblMain","[tblMain]![Quarter]=3 AND [tblMain]![Region]='NorthEast'" AND [tblOffice]![Location]='NewYork'")

這是我在文本框中輸入的表達式,無需引用第二張表即可正常工作,但是一旦有了它,我就會在文本框中得到閃爍的錯誤消息(就像在報告上一樣)。 ..

我知道此方法可能在報表中使用的次數要多於表格,但是我是新手,並且試圖提出一種儀表板解決方案,以便每個部門快速返回許多事實。 我在屬性窗口(而不是VB)的“數據”選項卡的“控制源”字段中使用此控件。 主要是因為我不知道如何使其與VB一起使用。

與往常一樣感謝您的幫助!

這些表如何關聯? 您能否描述這種關系以及任何主/外鍵?

同樣,在此函數的第一個參數中不必引用表名(因為在第二個參數中已經處理了該表名)。

例如,您的代碼可能是:

= DSum(“ Revenue”,“ tblMain”,“ Quarter = 3 AND Region ='NorthEast'” AND [tblOffice]![Location] ='NewYork'“)

只是想為您節省一些擊鍵並提高其可讀性。 :)

據我所知,在域聚合函數中不能引用多個表或查詢。 正如grazird所說,這些表如何關聯? 讓我們說它在tblMain ID上,您可以構建一個名為qryMainOffice的查詢,該SQL(SQL視圖,“查詢設計”窗口)將類似於以下內容:

SELECT [tblMain].[Revenue],[tblMain]![Quarter],[tblMain]![Region],
       [tblOffice]![Location]
FROM tblMain 
INNER JOIN tblOffice 
ON tblMain.ID = tblOffice.MainID

然后,DSum為(刪除換行符):

=NZ(DSum("[Revenue]","qryMainOffice",
 "[Quarter]=3 AND [Region]='NorthEast' AND [Location]='NewYork'"),"Not found")

您還可以在VBA中使用記錄集或查詢來返回值。

編輯評論

要在VBA中使用上述代碼,您需要添加參數或使用字符串:

''Reference: Microsoft DAO 3.x Object Library
Dim rs As DAO.Recordset
Dim db As Database
Dim strSQL as String

Set db= CurrentDB

strSQL = "SELECT Sum(t.[Revenue]) As TotalNY" _
       & "FROM tblMain t " _
       & "INNER JOIN tblOffice o " _
       & "ON t.ID = o.MainID " _
       & "WHERE t.[Quarter]=3 AND t.[Region]='NorthEast' " _
       & "AND o.[Location]='NewYork' " _

 '' I have use aliases for simplicity, t-tblMain, o-tblOffice
 '' If you wish to reference a control, use the value, like so: 
 '' & " AND [Location]='" & Me.txtCity & "'"
 '' Dates should be formated to year, month, day
 '' For joins, see http://www.devshed.com/c/a/MySQL/Understanding-SQL-Joins/

 Set rs = db.OpenRecordset strSQL

 If Not rs.EOF Then
    Me.txtAnswer = rs!TotNY
 Else
    Me.txtAnswer = "N/A"
 End If

您還可以使用不同的查詢來返回可以用列表框或子窗體顯示的幾個結果:

strSQL = "SELECT TOP 5 o.[Location]," _
       & "Sum(t.[Revenue]) AS TotRevenue" _
       & "FROM tblMain t " _
       & "INNER JOIN tblOffice o " _
       & "ON t.ID = o.MainID " _
       & "WHERE t.[Quarter]=3 AND t.[Region]='NorthEast' " _
       & "GROUP BY o.[Location]"

以上將返回東北地區所有地區第三季度的收入。 如果您想要每個組的最高值,那么您正在看一個更復雜的查詢,我現在將離開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM