ms-access - 具有相当简单的IIF的文本框上的间歇性#error
问题描述
我有一个带有选项卡控件的客户表单,其中包含客户拥有的特定项目的详细信息:地租、电力和车库。他们可能拥有所有 3 个,只是地租和电,或者只是一个车库。如果他们没有项目,则该选项卡将被隐藏。
该问题仅出现在 Garage 选项卡上:我在金额文本框中间歇性地收到 #ERROR。如果我关闭客户并重新打开它们,有时它会自行清除(不执行任何操作)。有时它不会。有时需要我重新打开几次才能显示值。
相关框是:txtActualAmountDue,来源如下:
=iif([tenant],[txtNet],[txtGarageCharge])
Tenant 是一个表单数据源布尔值(指示是否应显示 Ground Rent/Electricity 选项卡)。
txtNet = [txtGarageCharge]-[txtVAT]
txtVAT = [txtGarageCharge]*([txtVatPercentage]/(1+[txtVatPercentage]))
接下来的两个是锁定的文本框,让生活更轻松
- txtGarageCharge = DLookup("[GarageCharge]","Variables", 返回当前日期的当前行变量的条件)
- txtVatPercentage = DLookup("[GarageVat]","Variables", 返回当前日期的当前变量行的条件)
我能想到的唯一要提的是,如果客户不是租户,那么 txtNet 和 txtVAT 是隐藏的。我有时会得到#Type!在 txtNet 和 txtVat 中也是如此 - 显然我也得到了 #Error - 但并非总是如此:有时它们的价值还可以,但我仍然得到 #Error。我已经注释掉了隐藏这些文本框的加载/当前方法行,以查看是否是这样,但这没有任何区别。
就像我说的那样——它不是每次都会发生:只是偶尔。这可能与表格上事物的价值/填充顺序有关吗?一旦它被填充一次(每个客户的值都是相同的),就可以了吗?如果是这样,我如何强制它以正确的顺序对文本框进行赋值?
解决方案
这可能是一个时间问题,所以尽量避免中间计算:
txtNet = DLookup("[GarageCharge]/(1+[GarageVat])","Variables", criteria)
txtVat = DLookup("[GarageCharge]/(1+[GarageVat])*[GarageVat]","Variables", criteria)
或者,最终:
=IIf([tenant],DLookup("[GarageCharge]/(1+[GarageVat])","Variables", criteria),DLookup("[GarageCharge]","Variables", criteria))
推荐阅读
- spring - 使用 Spring MVC webapp,你可以在移动设备上拍照并上传到服务器吗?
- html - 在 Angular 中编辑输入文本
- javascript - 如何用javascript移动一个div
- angular - Angular - 错误 NG8001:“app-landing-topnavbar”不是已知元素
- javascript - React js在中间用省略号截断文本
- python - 在 spaCy 中没有完全识别连词?
- android - 将 Android 应用程序连接到在线数据库的最佳(最安全)方式
- sharepoint - Confluence 作为 CMS
- javascript - 网络组件社区聚合物网络组件
- php - Apache PHP localhost 更改响应太慢