提前感谢您的帮助。我不熟悉这些功能......
我有一个包含类型,数量和单位等字段列表的子表单。我想根据所选类型计算总金额。通过这样做,我尝试使用编码,但遇到了各种错误。
首先,“运行时错误'3078':”Microsoft Jet数据库引擎无法找到输入表/查询'50000'。
我的代码是:
If Me.cmbTOL1 = "Type B" Then
Me.txtC1 = (DMax(Me.txtAmt1, 50000) * 0.055) / Me.txtNoofUnits1
End If
其次,“运行时错误'2450':”Mircosoft Access无法找到宏表达式或可视基本代码中引用的表单“frmInformation”。
我的代码是:
If Me.cmbTOL1 = "Type M" Then
Me.txtC1 = (DMax(Me.txtAmt1, (2 * [Forms]![frmInformation]![GrossAmt])) * 0.015) / Me.txtNoofUnits1
End If
编辑:
我正试图从frmInformation获取值[GrossAmt]。除了[Forms]之外还有另一种方式![frmInformation]![GrossAmt]来检索值?
我没有真正获得DMax()函数......但我已将代码更改为此...
If Me.cmbTOL1 = "Type B" Then
If Me.txtAmt1 > 50000 Then
Me.txtC1 = (Me.txtAmt1 * 0.055) / Me.txtNoofUnits1
Else
Me.txtC1 = (50000 * 0.055) / Me.txtNoofUnits1
End If
End If
答案 0 :(得分:1)
从DMin, DMax Functions开始,语法为:
DMax(expr, domain[, criteria])
第二个参数 domain 应该是“一个字符串表达式,用于标识构成域的记录集。它可以是查询的表名或查询名这不需要参数。“
但是您的代码为域参数提供了DMax()
个数值:
DMax(Me.txtAmt1, 50000)
DMax(Me.txtAmt1, (2 * [Forms]![frmInformation]![GrossAmt]))
我不明白你想要完成什么。但是,如果使用DMax()
,则必须将表或查询的名称指定为域参数。 Me.txtAmt1
应该是域中字段的名称或基于字段的表达式。
抱怨 Access无法找到表单“frmInformation”的错误消息可能是因为表单未打开(因此不存在于Forms集合中),名称拼写错误,或者它实际上是另一种形式中包含的子表单。
您没有解释问题中代码更新会发生什么。告诉我们当您在立即窗口中键入此行并按 Enter 时会发生什么:
? [Forms]![frmInformation]![GrossAmt]
您可以使用 Ctrl + g 打开立即窗口。在“立即”窗口中键入以上行时,应在“表单视图”中打开表单frmInformation
。
您可以在立即窗口中检查所有打开表单的名称(如Access所见),如下所示:
for each f in forms : ? f.Name : next