Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access 2003-表单上文本框中的表达式_Ms Access_Forms_Vba_Expression - Fatal编程技术网

Ms access MS Access 2003-表单上文本框中的表达式

Ms access MS Access 2003-表单上文本框中的表达式,ms-access,forms,vba,expression,Ms Access,Forms,Vba,Expression,只是想知道当在文本框中的表单上使用表达式时,要从表中返回值,表达式中是否可以有多个表来返回值 这些表是链接的,我可以在查询中返回值,所以我想Access也可以用这个方法来完成 =DSum(“[tblMain]![Revenue]”、“tblMain”、“[tblMain]![Quarter]=3和[tblMain]![Region]=“东北”和[tblOffice]![Location]=“纽约”) 这是我在文本框中输入的表达式,没有对第二个表的引用,它工作得很好,但一旦有了它,我就会在文本框中

只是想知道当在文本框中的表单上使用表达式时,要从表中返回值,表达式中是否可以有多个表来返回值

这些表是链接的,我可以在查询中返回值,所以我想Access也可以用这个方法来完成

=DSum(“[tblMain]![Revenue]”、“tblMain”、“[tblMain]![Quarter]=3和[tblMain]![Region]=“东北”和[tblOffice]![Location]=“纽约”)

这是我在文本框中输入的表达式,没有对第二个表的引用,它工作得很好,但一旦有了它,我就会在文本框中看到闪烁的错误消息(就像在报告中一样)

我知道这种方法可能更多地用于报表,而不是表单,但我是新手,正在尝试提出一种仪表板解决方案,该解决方案可以在每个部门快速返回大量事实。我在“属性”窗口的“数据”选项卡的“控制源”字段中使用这种方法,而不是VB。主要是因为我不知道如何让它与VB一起工作


一如既往地感谢您的帮助!

这些表是如何关联的?您能否描述它们之间的关系以及主键/外键

此外,在该函数的第一个参数中不需要引用表名(因为在第二个参数中已经考虑了表名)

例如,您的代码可以是:

=DSum(“收入”、“tblMain”、“季度=3,地区=”东北“,[tblOffice]![Location]=”纽约“)


只是想为您节省一些击键次数并提高其可读性。:)

据我所知,在域聚合函数中不能引用多个表或查询。正如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将是(删除换行符):

还可以使用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]"

上述情况将为东北地区所有地点带来第三季度的收入。如果您想要每个组的最大值,您将看到一个更复杂的查询,我现在就不谈了。

tblMain和tblOffice有什么关系?tblMain和tblOffice之间有没有共同的钥匙?谢谢!我想在前n个查询中选择要显示的实际记录,那该怎么办?所以我有这些前10位的数字,我想在表格上放一个文本框来显示这些结果。对于每个记录,我都有一个文本框,如何选择每个文本框所需的实际记录?(即textbox1=查询返回的记录集的第一条记录,textbox2=第二条记录…等等)为什么您前面的问题不起作用?对不起,我只是不太清楚你在说什么…我肯定你是对的,这可能有点超出我的新手头脑!!这是VBA中的sqlStr吗?这就是当你帮助一个新手时会发生的事情!!:/:)一点VBA会很有帮助。如果您构建一个SQL字符串,您可以使用它做很多事情,例如将其用于控件或记录源。您对WHERE语句也有更多的控制权。谢谢!我在vba中还需要什么才能使用它。我知道了如何在vb中编写sql,但似乎不知道如何返回值。例如,若我使用查询生成器构建了一个查询,然后运行它,它将显示一个带有返回值的数据集。我似乎无法用vba实现这一点。因此,在上面,vba中的内容将其指定给某个文本框的表达式。vb与表达式之间的连接。谢谢你的帮助!哦,谢谢,这确实很有帮助,因为我写了很多这样的东西。我终于解决了。谢谢
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]"