由于种种条件的限制,这个自动生成编码的需求不存在简单的解决办法,需要有多种手段配合才能实现。建议用窗体添加表记录,在添加表记录那一刻用代码自动计算出这个编码。
年份可以用year函数算出;
月份可以用Month函数算出;
类型首字母对于汉字来说比较麻烦,建议预设一个类型首字母对照表,否则就要有一张包含所有汉字的拼音对照表才成, 有了对照表便可以用DLookup函数查找首字母了;
订单序数可以在已有订单数类型的最大序号基础上+1得到,可以使用DMax函数获取。
订单编号生成
表达式举例(
方括号里引用的是窗体控件名,引用的表包括"类型表"及其字段"类型"和"首字母",以及"订单表"及其字段"订单编码"、"订购日期"和"类型"):
OrderID=="LA" & DLookUp("首字母","类型表","类型='" & [类型] & "'") & Right(Year([日期]),1) & Format([日期],"mm") & Right(DMax("Val(Right([订单编码],2))","订单表","类型='" & [类型] & "' and Month(订购日期)=" & Month([日期]))+1001,2)
注意:这里年份按1位,订单序列号按两位处理,请留意它们是否范围足够宽以容纳更多的订单号,如果不足够,表达式要做相应调整。另外运行时机应该选择在保存新增记录的那一刻,以反映最新的数据表对应类型的订单序号。
追问能简单写一下代码给我看下吗吗
追答前面的回答已经有最关键的代码了。
只有简单的代码,没有整体方案的支持是没用的。
这样吧,就这个提问另外向我发个定向提问,我抽空编写一个完整的解决方案回答,这可是一件要花不小精力的事,起码要懂得采纳此回答以示诚意
追问你用的是代码生成器还是表达式生成器
追答是手写的
追问是vba吗
追答可以是vba也可以设置成属性值的表达式,或者是二者兼用
追问他显示数据类型不匹配
追答引用的控件里有没有数据?数据的类型对不对?例如放置日期的文本框有没有设置其格式为日期?其实需要考虑的问题远不止这些,这样问下去可能没完没了,喜欢的话继续问吧,我奉陪
追问不好意思,正在学习,刚才那个解决了,现在就是没有排序
我先采纳你吧,再弄一个问题问你