1

我在这里先向您的帮助表示感谢。对功能不熟悉...

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

首先,“运行时错误'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 找不到宏表达式或Visual Basic 代码中提到的“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
4

1 回答 1

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
于 2013-01-16T08:03:54.507 回答