使用组合框中的选项填充文本框中的计算字段

时间:2013-01-16 03:34:33

标签: ms-access combobox access-vba ms-access-2003 calculated-field

提前感谢您的帮助。我不熟悉这些功能......

我有一个包含类型,数量和单位等字段列表的子表单。我想根据所选类型计算总金额。通过这样做,我尝试使用编码,但遇到了各种错误。

首先,“运行时错误'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

1 个答案:

答案 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