如何在表单输入中添加计算出的X数?

时间:2015-01-08 20:04:03

标签: vba ms-access access-vba

我有一些不同数量的字母/数字的产品代码,例如53HD6J,HH88WBD3(5到10个字母/数字之间的变化)。为了使我们的条形码正确扫描,必须有13个字母/数字。我不想让用户在每个代码之后输入-XXXX,而是让Access计算13和代码长度之间的差异,并用X填充剩余的代码。这可能是通过vba还是和表达式?

我目前在一个公式中使用大约6个IIF来填充X的剩余空白,但希望有一个更简单的方法。


我有一个表格可以输入批号(产品代码)。提交该表单后,它将链接到打印的报表。在报告中是那些批号(53HD6J,HH88WBD3)。我希望拥有此功能的地点位于代码旁边的文本框中,其中Access确定代码的长度并计算要添加的剩余X.这是条形码字体,因此这个文本框是53HD6JXXXXXXX的用武之地。希望能搞清楚!


所以我有那个部分想通了。我现在的问题是我的条形码字体无论如何都会读取文本并进行翻译,因此当批号为空时我会显示条形码(我有四个批次代码输入点)。所以我以前所拥有的是= IIf([Text31] =“”,“& [Text31]&“”,“”)这似乎有效。希望我能用新公式继续这个。如果不清楚,请告诉我。 **(“”&&&“”是可以扫描条形码的。)


我的公式在IIf上面是错误的。我想到了!忘了我用'喜欢'*''。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用String()Left()执行您想要的操作。

以下是Access Immediate窗口中的示例:

product_code = "53HD6J"
? product_code & String(13, "X")
53HD6JXXXXXXXXXXXXX

? Left(product_code & String(13, "X"), 13)
53HD6JXXXXXXX

根据您问题的更新,我认为您可以将该方法用于文本框的控制源,您希望在其中显示"展开的"产品代码。

假设您的报告有一个名为 txtProduct_code 的文本框,其中显示了原始产品代码,例如 53HD6J 。还有第二个文本框,您希望使用所需数量的 X 字符显示该值( 53HD6JXXXXXXX )。

将此作为第二个文本框的Control Source属性:

= Left([txtProduct_code] & String(13, "X"), 13)

或者,您可以在报告的记录源查询中将其设为字段表达式。

SELECT
    product_code,
    Left(product_code & String(13, "X"), 13) AS expanded_product_code
FROM YourTable;