📄 frmaccupgrade.frm
字号:
Private sqlstr As String
Public sqlwhere As String
Private AccID() As String
Private modified As Boolean
Dim xmlInit As Boolean
Dim selrow As Long
Dim selcol As Long
Dim error_Edit As Boolean
Dim errorNUM As Integer
Dim errorNUm1 As Integer
Dim count_i As Long
Private Sub cmdDateRef_Click()
Dim str As Date
Dim Calendar As New CalendarAPP.ICaleCom
Calendar.Caption = "升级日期"
Calendar.DateDivideChar = "-"
txtSjrq.Text = Calendar.Calendar(txtSjrq.hWnd)
' str = Calendar.Calendar(Edit1.hWnd)
' Edit1.Text = CDate(str)
Set Calendar = Nothing
End Sub
Private Sub yulanProc()
Dim qyrq As String
Dim rsacc As New UfRecordset
'取系统启用日期
sqlstr = "select option1 from fd_option "
Set rsacc = dbsZJ.OpenRecordset(sqlstr, dbOpenDynamic)
If Not (rsacc.EOF Or rsacc.BOF) Then
qyrq = DateCheck(rsacc(0))
Else
qyrq = ""
End If
rsacc.oClose
'检查升级日期的合法性
If txtSjrq.Text = "" Then
MsgBox "升级日期不能为空", vbInformation, "账号升级"
Exit Sub
ElseIf DateCheck(Trim(txtSjrq.Text)) = "" Then
MsgBox "升级日期输入错误", vbInformation, "账号升级"
Exit Sub
ElseIf qyrq <> "" Then
If Trim(txtSjrq.Text) < qyrq Then
MsgBox "升级日期不能小于系统启用日期", vbInformation, "账号升级"
Exit Sub
End If
End If
If Trim(txtSjrq.Text) > zjLogInfo.curDate Then
MsgBox "升级日期不能大于系统登录日期", vbInformation, "账号升级"
Exit Sub
End If
'取已有升级信息的最大调整日期
sqlstr = "select max(upgrade_date) from fd_accUpgrade "
If sqlwhere <> "" Then
sqlstr = sqlstr & " where fd_accupgrade.accdef_id in (select accdef_id from fd_accdef inner join fd_accunit on fd_accdef.cunitcode=fd_accunit.cunitcode "
sqlstr = sqlstr & " where " & sqlwhere & ")"
End If
Set rsacc = dbsZJ.OpenRecordset(sqlstr, dbOpenDynamic)
If Not (rsacc.EOF Or rsacc.BOF) Then
qyrq = IIf(IsNull(rsacc(0)), "", rsacc(0))
qyrq = DateCheck(qyrq)
Else
qyrq = ""
End If
rsacc.oClose
If qyrq <> "" Then
If CDate(Trim(txtSjrq.Text)) <= CDate(qyrq) Then
MsgBox "升级日期不能小于上次账号升级日期", vbInformation, "账号升级"
Exit Sub
End If
End If
'检查补充位置的合法性
If Edit1.Text = "" Then
MsgBox "补充位置不能为空", vbInformation, "账号升级"
GoTo Error0
End If
If CDbl(Edit1.Text) <= 0 Then
MsgBox "补充位置必须大于0", vbInformation, "账户号升级"
GoTo Error0
End If
'检查补充位数的合法性
If txtbcws.Text = "" Then
MsgBox "补充位数不能为空", vbInformation, "账号升级"
GoTo Error0
End If
If sqlwhere <> "" Then
sqlstr = "select max(len(Caccid)) from fd_accdef inner join fd_accunit on fd_accdef.cunitcode=fd_accunit.cunitcode Where " & sqlwhere
Else
sqlstr = "select max(len(Caccid)) from fd_accdef inner join fd_accunit on fd_accdef.cunitcode=fd_accunit.cunitcode " & sqlwhere
End If
Set rsacc = dbsZJ.OpenRecordset(sqlstr, dbOpenSnapshot)
If rsacc(0) + CInt(txtbcws.Text) > 50 Then
MsgBox "补充位数必须小于" & 50 - rsacc(0), vbInformation, "账户号升级"
GoTo Error0
End If
'检查补充字符的合法性
If Edit2.Text = "" Then
MsgBox "补充字符不能为空", vbInformation, "账号升级"
GoTo Error0
End If
If InStr(1, Trim(Edit2.Text), " ") <> 0 Then
MsgBox "补充字符中不能含有空格", vbInformation, "账户号升级"
GoTo Error0
End If
If Len(Trim(Edit2.Text)) <> CInt(txtbcws.Text) Then
MsgBox "补充字符串长度与补充位数不符", vbInformation, "账户号升级"
GoTo Error0
End If
'置修改状态位
modified = True
'账号升级
Call cons_new_code
Error0:
If rsacc.State = adStateOpen Then
rsacc.oClose
End If
Set rsacc = Nothing
End Sub
Private Sub Edit1_GotFocus()
If txtSjrq.Enabled Then
cmdDateRef.Visible = False
End If
End Sub
Private Sub Edit2_GotFocus()
If txtSjrq.Enabled Then
cmdDateRef.Visible = False
End If
End Sub
Private Sub Form_Load()
loadstatic
SetTBStyle Me
error_Edit = False
con.ConnectionString = zjLogInfo.UfDbName
con.Open
count_i = 0
'set toobool statues
With tlbTool
.Buttons("print").Enabled = True
.Buttons("preview").Enabled = True
.Buttons("output").Enabled = True
.Buttons("search").Enabled = True
.Buttons("cmdyulan").Enabled = True
.Buttons("cancel").Enabled = False
.Buttons("save").Enabled = False
End With
'set commondbutton statues
' cmdYuLan.Enabled = True
optWz1(0).Value = True
optWz2(0).Value = True
sqlwhere = ""
Call fillGrid(False)
ocxCTBtool.RefreshEnable
End Sub
'load data to grid
Private Sub fillGrid(Save As Boolean)
Dim rsacc As New UfRecordset
Dim i As Long
'load data to grid
On Error GoTo Error0
If Not Save Then
sqlstr = "SELECT dbo.FD_AccDef.accdef_id, dbo.FD_AccUnit.cUnitName, dbo.FD_AccDef.cAccBank,"
sqlstr = sqlstr & "dbo.FD_AccDef.cAccID,dbo.FD_AccDef.cAccName, dbo.FD_AccDef.dOpenDate,dbo.FD_AccDef.cexch_name"
sqlstr = sqlstr & " FROM dbo.FD_AccDef INNER JOIN"
sqlstr = sqlstr & " dbo.FD_AccUnit ON dbo.FD_AccDef.accunit_id = dbo.FD_AccUnit.accunit_id"
Else
sqlstr = "SELECT dbo.fd_accUpgrade.accdef_id ,dbo.fd_accUpgrade.old_Caccid As cAccid, dbo.fd_accUpgrade.new_Caccid,dbo.FD_AccDef.cAccName, dbo.FD_AccDef.cexch_name, dbo.FD_AccUnit.cUnitName,dbo.FD_AccDef.dOpenDate , dbo.FD_AccDef.cAccBank"
sqlstr = sqlstr & " FROM dbo.FD_AccDef INNER JOIN dbo.FD_AccUnit ON dbo.FD_AccDef.accunit_id = dbo.FD_AccUnit.accunit_id INNER JOIN dbo.fd_accUpgrade ON dbo.FD_AccDef.accdef_id = dbo.fd_accUpgrade.accdef_id "
End If
sqlstr = sqlstr & " where "
If Not (sqlwhere = "") Then
sqlstr = sqlstr & sqlwhere & " and "
End If
If Save Then
sqlstr = sqlstr & "fd_accupgrade.upgrade_date='" & txtSjrq.Text & "' "
sqlstr = sqlstr & " order by fd_accupgrade.new_caccid"
Else
sqlstr = sqlstr & " 1=1 order by len(caccid),caccid"
End If
Set rsacc = dbsZJ.OpenRecordset(sqlstr, dbOpenSnapshot)
If rsacc.RecordCount = 0 Then GoTo Error0
SuperGrid1.Rows = rsacc.RecordCount + 1
ReDim AccID(rsacc.RecordCount - 1)
i = 1
rsacc.MoveFirst
While Not (rsacc.EOF Or rsacc.BOF)
With SuperGrid1
.TextMatrix(i, 0) = IIf(IsNull(rsacc![cAccId]), "", rsacc![cAccId])
If Not Save Then
.TextMatrix(i, 1) = ""
Else
.TextMatrix(i, 1) = IIf(IsNull(rsacc![new_caccid]), "", rsacc![new_caccid])
End If
.TextMatrix(i, 2) = IIf(IsNull(rsacc![cAccName]), "", rsacc![cAccName])
.TextMatrix(i, 3) = IIf(IsNull(rsacc![cunitName]), "", rsacc![cunitName])
.TextMatrix(i, 4) = IIf(IsNull(rsacc![dOpenDate]), "", rsacc![dOpenDate])
.TextMatrix(i, 5) = IIf(IsNull(rsacc![cAccbank]), "", rsacc![cAccbank])
.TextMatrix(i, 6) = IIf(IsNull(rsacc![cexch_name]), "", rsacc![cexch_name])
End With
AccID(i - 1) = rsacc![accdef_id]
i = i + 1
rsacc.MoveNext
Wend
rsacc.oClose
With tlbTool
.Buttons("print").Enabled = True
.Buttons("preview").Enabled = True
.Buttons("output").Enabled = True
.Buttons("search").Enabled = True
.Buttons("cmdyulan").Enabled = True
.Buttons("cancel").Enabled = False
.Buttons("save").Enabled = False
End With
Exit Sub
Error0:
' If rsacc.State = adStateOpen Then
' rsacc.oClose
' End If
SuperGrid1.clear
SuperGrid1.Rows = 2
initGrid
'set toobool statues
With tlbTool
.Buttons("print").Enabled = False
.Buttons("preview").Enabled = False
.Buttons("output").Enabled = False
.Buttons("search").Enabled = True
.Buttons("cmdyulan").Enabled = False
.Buttons("cancel").Enabled = False
.Buttons("save").Enabled = False
End With
'set commondbutton statues
' cmdYuLan.Enabled = False
End Sub
'construct new account code
Private Sub cons_new_code()
Dim left As Boolean
Dim before As Boolean
Dim i As Long
If optWz1(0).Value Then
left = True
Else
left = False
End If
If optWz2(0).Value Then
before = True
Else
before = False
End If
With SuperGrid1
For i = 1 To .Rows - 1
If .TextMatrix(i, 1) <> "" Then
.TextMatrix(i, 0) = .TextMatrix(i, 1)
.TextMatrix(i, 1) = ""
End If
Next
If left Then
If before Then
For i = 1 To .Rows - 1
If Edit1.Text <= Len(.TextMatrix(i, 0)) Then
.TextMatrix(i, 1) = mID(.TextMatrix(i, 0), 1, Edit1.Text - 1) & Trim(Edit2.Text) & mID(.TextMatrix(i, 0), Edit1.Text)
Else
.TextMatrix(i, 1) = .TextMatrix(i, 0) & Trim(Edit2.Text)
End If
Next
Else
For i = 1 To .Rows - 1
If Edit1.Text < Len(.TextMatrix(i, 0)) Then
.TextMatrix(i, 1) = mID(.TextMatrix(i, 0), 1, Edit1.Text) & Trim(Edit2.Text) & mID(.TextMatrix(i, 0), Edit1.Text + 1)
Else
.TextMatrix(i, 1) = .TextMatrix(i, 0) & Trim(Edit2.Text)
End If
Next
End If
Else
If before Then
For i = 1 To .Rows - 1
If Edit1.Text < Len(.TextMatrix(i, 0)) Then
.TextMatrix(i, 1) = mID(.TextMatrix(i, 0), 1, Len(CStr(.TextMatrix(i, 0))) - CInt(Edit1.Text)) & Trim(Edit2.Text) & right(.TextMatrix(i, 0), Edit1.Text)
Else
.TextMatrix(i, 1) = Trim(Edit2.Text) & .TextMatrix(i, 0)
End If
Next
Else
For i = 1 To .Rows - 1
If Edit1.Text <= Len(.TextMatrix(i, 0)) Then
.TextMatrix(i, 1) = mID(.TextMatrix(i, 0), 1, Len(.TextMatrix(i, 0)) - Edit1.Text + 1) & Trim(Edit2.Text) & right(.TextMatrix(i, 0), Edit1.Text - 1)
Else
.TextMatrix(i, 1) = Trim(Edit2.Text) & .TextMatrix(i, 0)
End If
Next
End If
End If
End With
'cmdYuLan.Enabled = False
With tlbTool
.Buttons("cmdyulan").Enabled = False
.Buttons("print").Enabled = False
.Buttons("preview").Enabled = False
.Buttons("output").Enabled = False
.Buttons("search").Enabled = False
.Buttons("cancel").Enabled = True
.Buttons("save").Enabled = True
End With
End Sub
Private Sub CancelProc()
Dim i As Integer
'cmdYuLan.Enabled = True
With tlbTool
.Buttons("cmdyulan").Enabled = True
.Buttons("print").Enabled = True
.Buttons("preview").Enabled = True
.Buttons("output").Enabled = True
.Buttons("search").Enabled = True
.Buttons("cancel").Enabled = False
.Buttons("save").Enabled = False
End With
With SuperGrid1
For i = 1 To .Rows - 1
.TextMatrix(i, 1) = ""
Next
.ReadOnly = True
End With
End Sub
Private Function SaveData() As Boolean
Dim i As Long
Err.clear
On Error Resume Next
i = UBound(AccID)
If Err.Number <> 0 Then
MsgBox "保存失败", vbInformation, "账号升级"
SaveData = False
Exit Function
End If
Dim con As New ADODB.Connection
On Error GoTo Error0
con.ConnectionString = zjLogInfo.UfDbName
con.Open
Debug.Print "before check" & Time
If CheckData() Then
Debug.Print "after check" & Time
On Error GoTo Error1
Label6.Caption = "正在保存数据!请等待......"
Label8.Caption = "已处理0条"
Me.ProgressBar1.Max = SuperGrid1.Rows - 1
DoEvents
Dim iResult As Integer
con.BeginTrans
With SuperGrid1
For i = .Rows - 2 To 0 Step -1
sqlstr = "insert into fd_accUpgrade (accdef_id,old_Caccid,new_Caccid,upgrade_date) values('"
sqlstr = sqlstr & AccID(i) & " ','" & .TextMatrix(i + 1, 0) & "','" & .TextMatrix(i + 1, 1) & "','" & txtSjrq.Text & "')"
con.Execute sqlstr
'更新fd_accdef , fd_accset(accdef_id, cAccId)
sqlstr = "Update fd_accdef set Caccid='" & .TextMatrix(i + 1, 1) & "' where Caccid='" & .TextMatrix(i + 1, 0) & "' and accdef_id='" & AccID(i) & "'"
con.Execute sqlstr
sqlstr = "Update fd_accset set Caccid='" & .TextMatrix(i + 1, 1) & "' where Caccid='" & .TextMatrix(i + 1, 0) & "' and accdef_id='" & AccID(i) & "'"
con.Execute sqlstr
'更新fd_accsum (cAccId), fd_Vouch(cacc1_id, cacc2_id)
sqlstr = "update fd_accsum set Caccid='" & .TextMatrix(i + 1, 1) & "' where Caccid='" & .TextMatrix(i + 1, 0) & "'"
con.Execute sqlstr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -