老师,各位大神:
我刚接触FOXTABLE,尝试做个小项目,但在自动编号上出现了问题,麻烦指定一下:
想实现的功能是:输入或合并入数据(只要有“客户名称”就行)就会自动生成7位编号:年份加上三位顺序号
这里引用的代码:(在DataColChanged)
If e.DataCol.Name = "客户名称"
Then
If e.DataRow.IsNull("客户名称")
Then
e.DataRow("业务编号")
= Nothing
Else
Dim d As Date = Date.Today
Dim y As Integer = d.Year
Dim bh As String = Format(d,"yyyy")
'生成编号的前6位,4位年,2位月.
If e.DataRow("业务编号").StartsWith(bh) = False '如果编号的前6位不符
Dim
max As String
Dim
idx As Integer
max
= e.DataTable.Compute("Max(业务编号)")
'取得该月的最大编号
If max > ""
Then '如果存在最大编号
idx
= CInt(max.Substring(4,3)) + 1 '获得最大编号的后三位顺序号,并加1
Else
idx
= 1 '否则顺序号等于1
End
If
e.DataRow("业务编号")
= bh & Format(idx,"000")
End If
End If
End If
问题:在手动一条一条记录输入时,完成正常。问题出在合并上,我在窗体上设置了合并按扭,合并的execl表只有一条记录的话,没问题,关键是表上有多条记录时,自动生成的编号是一样的。
更加令人疑惑的是,如果通过手动在杂项—高速合并上操作就没问题!
窗体按扭的代码是:
Dim mg As New Merger
mg.SourcePath = "d:\合悦旅游\业务需求表.xlsx"
mg.Format = "excel"
'指定格式
mg.SourceTableName = "业务需求表$" '指定要合并的表
mg.DataTableName = "业务需求表" '指定接收数据的表
mg.Merge() '开始合并
DataTables("业务需求表").DeleteFor("客户名称 Is
Null ")
这个问题困扰了我好几天了!
麻烦帮我看看。