使用SQL外部数据源,想实现物料编码的自动生成,编码没有特殊要求,是无意编码,只要按照顺序生成即可,不能使用表达式列,因为表达式列生成的编码不能保存在数据库中,在表的BeforeSaveDataRow中写了如下的代码:
If e.DataRow("物料编码") = "" Then
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C '设置数据源名称
cmd.CommandText = "select * from {selfmade} Where [partsnum] is not null" '将partsnum不为空的列统计出进行编码
dt = cmd.ExecuteReader()
Dim max As String
Dim idx As Integer
max = dt.Compute("Max(物料编码)") '取得最大编号
If max > "" Then '如果存在最大编号
idx = CInt(max.Substring(6)) + 1 '获得最大编号,并加1
Else
idx = 1 '否则顺序号等于1
End If
e.DataRow("物料编码") = Format(idx,"000000")
End If
运行后“物料编码”没有变化,还是空值,而且报错:“调用的目标发生了异常。”请问代码哪里有问题呢?另外,有什么简单一点的方法能实现表达式列的编号直接复制到数据列就好了。