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