因为我们使用的Oracle数据库的开发人员一直都在努力使我的生活变得困难:),他们决定为某些表使用数字作为PK,为其他表使用VARCHAR作为PK。
对于我正在构建的Access前端,我有一个带有文本框的表单,我想显示表上使用的最后一个ID + 1(所以如果最后一个ID是100,那么101将显示在框)。当然,我需要将表作为VARCHAR ID执行此操作,即使所有ID都是序列号。将字段转换为数字,虽然可以修复我的目的,但不会发生。
所以,我的问题:在我的其他文本框中,ID是数字,我可以使用DMAX查找最后使用的数字;但是,这不适用于字符串ID。我已经读过使用Val()函数将字符串转换为文本,但我无法弄清楚如何使用它们。我尝试了以下方法:
DMax(Val("[EAUSER_INFORMATION_ITEM]![INFORMATION_ITEM_ID]"),[EAUSER_INFORMATION_ITEM],"")
但这会带来#Name吗?错误。
有人会指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
你应该在引号内部使用Val
,而不是在它们之外,否则你会遇到这个问题。此外,域聚合内的所有参数都需要是字符串:
DMax("Val([INFORMATION_ITEM_ID])","[EAUSER_INFORMATION_ITEM]")
如果你没有使用它,你可以省略最后一个参数,WHERE
条件,如果只有一个表,你就不需要指定表名。
您可能无法对此做任何事情,但使用升序数字字符串作为主键是一个主要的不良做法。大多数数据库引擎将按升序排序,导致大量碎片(因为" 100"<" 2" 为True)