有个学员问我,怎么让采购订单明细号规则为采购订单号-行号。
因为平台内置的行号函数(GetLineNumber([Form]))在VBA代码中不能使用,所以只能换一种方式实现。
正好明细记录是用ADO\DAO方式循环将TMP表中的数据保存到正式表中,我们就可以定义一个变量Counts(初始化Counts=1)来保存循环的次数,循环的次数即为行号。然后将采购订单号-Counts 即可得到想要的编号。
在frmXXX_Edit窗体中的保存按钮单击事件里面添加上相应代码:
'添加的定义变量
Dim Counts AS String : Counts = 1 ‘定义变量并初始化
cnn.Execute "Delete FROM [采购订单明细表] Where [采购订单号]=" & SQLText(Me!采购订单号)
strSQL = "Select * FROM [采购订单明细表] Where [采购订单号]=" & SQLText(Me!采购订单号)
Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
Set rstTmp = CurrentDb.OpenRecordset("TMP_采购订单明细表")
Do Until rstTmp.EOF
rst.AddNew
'添加的代码,开始——
rst![采购订单明细号] = Me![采购订单号] & “-” & Counts
Counts = Counts + 1 ‘每次循环自加一次
'添加的代码,结束——
rst![采购订单号] = Me![采购订单号]
…
rst.Update
rstTmp.MoveNext
Loop
rst.Close
rstTmp.Close
cnn.CommitTrans
学员使用效果: