昨天有个网友在微信群内问窗体订单编号组合框中显示当天订单编号的问题,他的订单编号是按yyyymmddXX这种格式的(XX代表序号),如2016080601。其实这个问题很简单,将组合框行来源读取订单表的订单编号,设置好查询条件即可:
Select tbl订单资料.ID, tbl订单资料.订单编号 FROM tbl订单资料 Where (((Left([订单编号],8))=Format(Date(),"yyyymmdd"))) orDER BY tbl订单资料.订单编号;
但是网友说这个不是他想要的,他想要的是订单编号下拉菜单自动显示当天前10笔编号,不管有无订单。这样方便切换编号,不用每次都输入。我觉得这样做有问题,如果没有订单,那这些订单编号是无法打开对应资料的,或者订单编号超过10个,那么也显示前10,不是完整显示了。真要这样做,这个问题对应大神也就是一两分钟的事情,本着学习的态度,我试着写VBA代码,自动生成当天的订单编号,代码如下:
Private Sub Form_Load()
'关闭操作提示
DoCmd.SetWarnings False
'删除表内全部内容
DoCmd.RunSQL "Delete * From [tbl订单资料] "
'定义变量,n是订单编号的序号
Dim n As Integer
For n = 1 To 10
'将n作为序号写入表【tbl订单资料】的ID字段中
DoCmd.RunSQL "Insert INTO tbl订单资料 (ID) VALUES (" & n & ") "
'根据系统当前日期自动生成订单编号,如2016080101,如果要3位序号,改为Format(n, "000")即可
DoCmd.RunSQL "Update tbl订单资料 Set 订单编号=" & Format(Date, "yyyymmdd") & Format(n, "00") & " Where ID=" & n & ""
Next
End Sub
以上是我对循环和Format函数的练习,因为实际上应该没几个人会有这样“不合理”的要求。
附 件:
点击下载此附件