MS Access 查询中如何设置生成的用户名字符串的最大长度
解决方案
1. 查询层面直接限制长度
不需要用循环实现长度截断,直接把拼接后的结果传入Left函数指定总长度即可,修改后的查询代码如下:
Username: LCase(Left(Left([first],1) & [last], 7))
如果需要限制为6位,把代码里的7替换为6即可。逻辑是先拼接首字母和姓氏,再统一截取前N位字符,自动截断超出的部分,完全匹配需求。
2. 表单文本框层面限制长度
两种方案可选:
- 方案一(推荐,数据源层面统一限制):打开存储用户名的表设计视图,将
username字段的字段大小设置为7,后续无论查询填充还是手动输入,超过长度的内容都会被自动截断,不会存入多余字符。 - 方案二(仅表单层面限制):选中表单里绑定用户名的文本框,打开属性面板->选择「数据」选项卡,找到「允许的字符数」选项,设置为7即可,表单加载时自动填充的内容如果超过长度也会被自动截断。
可选优化建议
如果遇到同首字母同姓氏前几位的员工(比如Bob Smith和Bob Smithson都会生成bsmith),可以根据需要在后面追加1位数字序号避免重复,示例逻辑如下:
Username: LCase(Left(Left([first],1) & [last], 6)) & DCount("*","员工表","Left(Left([first],1) & [last],6)='" & LCase(Left(Left([first],1) & [last],6)) & "' AND id<" & [id])
该代码会给重名的用户名自动追加1、2这样的序号,避免冲突。
内容的提问来源于stack exchange,提问作者Tom TK
相关产品推荐
相关产品推荐

