'以这代码为准:
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim yzdh1 As WinForm.TextBox = e.Form.Controls("dh1")'dh是单号控件
Dim di As Integer = yzdh.Value 'di单号控件中的变量
Dim di1 As String = yzdh1.Value 'di单号控件中的变量
Dim d As Date = e.Sender.Value
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 Max0 As String
Dim max1 As String
Dim idx1 As Integer
If e.Sender.value IsNot Nothing Then
Dim s As String = e.Form.Controls("TextBox2").text
If s.length > 2 Then
s = s.SubString(0,2)
Dim bh As String = s & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
If e.Form.Controls("lblState").text = "1" Then '如果财务数据源表不存在控件上的凭证号和出纳账安日期生成单号辅助列,或当前窗口是新增单据.
Dim kh As Integer
Dim cmd As New SQLCommand
cmd.CommandText = "Select top 1 MIN(出纳入账顺序号) FR OM {出纳数据记账源} Where 出纳入账顺序号 NOT IN (SELECT 出纳入账顺序号 FR OM {出纳数据记账源} Where [日期] >= #" & fd & "# And [日期] <= #" & ld & "# And [前缀] = '" & s & "')"
kh = cmd.ExecuteScalar()
If kh > 0 Then
di = kh
yzdh.Value = di
di1 = bh & Format(di,"00000")
yzdh1.Value = di1
Else
Dim flt As String = "[前缀] ='" & s & "'And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
Max0 = DataTables("出纳数据记账源").SQLCompute("Max(出纳入账顺序号)",flt) '取得该月的相同工程代码的最大单据编号
If Max0 > "" Then '如果存在最大单据编号
yzdh.Value = di + 1
Else
di = 1 '否则顺序号等于1
yzdh.Value = di
End If
max1 = DataTables("出纳数据记账源").SQLCompute("Max(出纳账安日期生成单号辅助列)",flt) '取得该月的相同工程代码的最大单据编号
If max1 > "" Then '如果存在最大单据编号
idx1 = CInt(max1.Substring(10,5)) + 1 '获得最大单据编号的后五位顺序号,并加1
di1 = bh & Format(idx1,"00000")
yzdh1.Value = di1
Else
idx1 = 1 '否则顺序号等于1
di1 = bh & Format(idx1,"00000")
yzdh1.Value = di1
End If
End If
End If
End If
End If
没改sql,改了di和kh的数据类型,依然报错。