我用的是阿里云sql数据库,在datacolchanged代码如下
If e.DataCol.Name = "创建日期" Then
If e.DataRow.IsNull("创建日期") Then
e.DataRow("退货单编号") = Nothing
Else
Dim d As Date = e.DataRow("创建日期")
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y, m)
Dim fd As Date = New Date(y, m, 1)
Dim ld As Date = New Date(y, m, Days
Dim bh As String = "TC" & Format(d, "yyyyMM")
If e.DataRow("退货单编号").StartsWith(bh) = False Then
Dim max As String
Dim idx As Integer
max = e.DataTable.SQLCompute("Max(退货单编号)", "创建日期 >= '" & fd & "' And 创建日期 <= '" & ld & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号
If max > "" Then
idx = CInt(max.Substring(8, 4)) + 1
Else
idx = 1
End If
e.DataRow("退货单编号") = bh & Format(idx, "0000")
End If
End If
e.DataRow.save()
End If
新增行后,并不会自动保存,我不清楚问题出在哪里,请专家帮忙看一下问题出在哪,谢谢!
datarowadding 设置了 e.datarow("创建日期") = date.today 并且也自动生成了编号,程序上e.datarow.save()是在datarowadding和datacolchanged之后的。所以我觉得应该可以自动保存才对。
datarowadding 事件改为放到datarowadded事件
谢谢版主,问题解决了。看了帮助文件datarowadding 和 datarowadded的区别,我还是不太理解,帮助文件中,自动生成编号的例子,为什么不在 datarowadded中自动生成日期,而使用datarowadding
帮助不需要触发事件。datarowadding的时候,行还没有添加到表格,不会触发datacolchanged事件