使用组合框中的选择填充文本框中的计算字段
Posted
技术标签:
【中文标题】使用组合框中的选择填充文本框中的计算字段【英文标题】:Populating a calculated field in textbox with selection in combobox 【发布时间】:2013-01-16 03:34:32 【问题描述】:提前感谢您的帮助。我对函数不熟悉...
我有一个包含类型、数量和单位等字段列表的子表单。我想根据所选类型计算总金额。通过这样做,我尝试使用编码,但遇到了各种错误。
首先,“运行时错误'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
【问题讨论】:
【参考方案1】:来自DMin, DMax Functions,语法为:
DMax(expr, domain[, criteria])
第二个参数,domain,应该是“一个字符串表达式,标识构成域的记录集。它可以是表名或查询的查询名不需要参数。"
但是您的代码为 domain 参数提供了 DMax()
数值:
DMax(Me.txtAmt1, 50000)
DMax(Me.txtAmt1, (2 * [Forms]![frmInformation]![GrossAmt]))
我不明白你想要完成什么。但是,如果您使用 DMax()
,则必须将表或查询的名称作为 domain 参数提供给它。而Me.txtAmt1
应该是域中的字段名称或基于字段的表达式。
Access 找不到表单“frmInformation” 的错误消息可能是因为表单未打开(因此不在 Forms 集合中)、名称拼写错误或实际上是包含在另一个表单中的子表单。
您没有解释问题中的代码更新会发生什么。告诉我们当您在“立即”窗口中键入此行并按 Enter 时会发生什么:
? [Forms]![frmInformation]![GrossAmt]
您可以使用 Ctrl+g 打开即时窗口。当您在“即时”窗口中键入上述行时,应在“表单视图”中打开表单 frmInformation
。
您可以像 Access 看到的那样从“立即”窗口检查所有打开的表单的名称,如下所示:
for each f in forms : ? f.Name : next
【讨论】:
出现运行时错误...“运行时错误'2450':” Mircosoft Access 找不到宏表达式或Visual Basic 代码中引用的表单“frmInformation”。我已经仔细检查了表单名称......它是正确的......知道有什么问题吗? 我上面使用的表单是子表单... frmInformation 是主表单... 如果 frmInformation 是 主 表单并在表单视图中打开,则应使用 [Forms]![frmInformation] 找到它 如何在主窗体中保持子窗体打开?我正在尝试从主窗体中获取 [GrossAmt] 以在子窗体中进行计算(如上所述)。以上是关于使用组合框中的选择填充文本框中的计算字段的主要内容,如果未能解决你的问题,请参考以下文章