📄 frmdepartmentlistcard.frm
字号:
If mblnIsChanged Then
If mblnIsNew Then
strMess = "您要保存新增的部门"
If txtDepartment(0).Text <> "" Then
strMess = strMess & "“" & txtDepartment(0).Text & "”"
End If
If txtDepartment(1).Text <> "" Then
strMess = strMess & "“" & txtDepartment(1).Text & "”"
End If
strMess = strMess & "吗?"
Else
strMess = "“" & txtDepartment(0).Text & "”" & " " _
& "“" & txtDepartment(1).Text & "”部门已被修改,是否保存?"
End If
intMsgReturn = ShowMsg(hwnd, strMess, vbQuestion + vbYesNoCancel, Caption)
If intMsgReturn = vbYes Then
Cancel = Not SaveCard
ElseIf intMsgReturn = vbCancel Then
Cancel = True
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
frmEmployeeList.IsShowCard(0) = False
mblnIsChanged = False
gclsSys.MainControls.Remove Me
Set mclsMainControl = Nothing
End Sub
Private Function InitCard(Optional strName As String = "") As Boolean
Dim recDepartment As rdoResultset, Strsql As String
InitCard = True
mblnIsInit = True
mlngPCodeID = 0
mblnPIsDetail = False
mblnPIsInActive = False
If Not mblnIsNew Then
Strsql = "SELECT * FROM Department WHERE lngDepartmentID=" _
& mlngDepartmentID
Set recDepartment = gclsBase.BaseDB.OpenResultset(Strsql, _
rdOpenForwardOnly)
With recDepartment
txtDepartment(0).Text = !strDepartmentCode
mstrLastCode = !strDepartmentCode
txtDepartment(1).Text = !strDepartmentName
mstrLastName = !strDepartmentName
mstrNotes = Format(!strNotes, "@;;")
mintOldLevel = !intLevel
mblnIsInActive = (!blnIsInActive = 1)
mblnIsDetail = (!blnIsDetail = 1)
mstrOldFullName = !strFullName
chkStop.Value = !blnIsInActive
End With
recDepartment.Close
Else
txtDepartment(1).Text = ""
txtDepartment(0).Text = Trim(strName)
mstrNotes = ""
chkStop.Value = 0
End If
mblnIsInit = False
End Function
Private Function SaveCard() As Boolean
Dim blnMerge As Boolean 'NEW--转移业务 EDIT--合并代码
Dim intResult As Integer '编码检查结果:1--合法 -1--上级编码不存在 -2--编码已存在 -3--编码超长
Dim recDepartment As rdoResultset, Strsql As String
Dim intIsDetail As Integer, intIsInActive As Integer
On Error GoTo ErrHandle
SaveCard = False
gclsBase.BaseWorkSpace.BeginTrans
If Trim$(txtDepartment(0).Text) = "" Then
ShowMsg hwnd, "部门编码不能为空!", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
End If
If InStr(1, txtDepartment(0).Text, mstrLastCode & "-") <> 0 And Not mblnIsNew Then
ShowMsg hwnd, "部门不能修改为自己的下级部门!", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
End If
If InStr(1, mstrLastCode, txtDepartment(0).Text & "-") <> 0 And Not mblnIsNew Then
ShowMsg hwnd, "部门不能修改为自己的上级部门!", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
End If
If Trim$(txtDepartment(1).Text) = "" Then
ShowMsg hwnd, "部门名称不能为空!", vbExclamation, Caption
txtDepartment(1).SetFocus
GoTo ErrHandle
End If
intResult = CodeCheck("Department", "strDepartmentCode", "lngDepartmentID", _
mblnIsNew, txtDepartment(0).Text, txtDepartment(1).Text, mstrLastCode, _
mstrOldFullName, mstrFullName, mlngPCodeID, mblnPIsDetail, mblnPIsInActive, mblnIsDetail)
If intResult = -1 Then
If mblnIsNew Then
ShowMsg hwnd, "“" & Trim$(txtDepartment(0).Text) & "“的上级部门" _
& "不存在,请先增加上级部门”" & CodePrefix(txtDepartment(0).Text) _
& "“", vbExclamation, Caption
Else
ShowMsg hwnd, "“" & Trim$(txtDepartment(0).Text) & "“的上级部门" _
& "不存在,请重新修改部门”" _
& Trim$(txtDepartment(0).Text) & "“", vbExclamation, Caption
End If
txtDepartment(0).SetFocus
GoTo ErrHandle
ElseIf intResult = -2 Then
If mblnIsNew Then
ShowMsg hwnd, "部门编码“" & Trim$(txtDepartment(0).Text) _
& "”已经存在,请重新录入部门编码", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
Else
If Not mblnPIsDetail Or (mblnIsInActive <> mblnPIsInActive) Or Not mblnIsDetail Then
ShowMsg hwnd, "部门“" & mstrLastCode & "”与部门“" _
& Trim$(txtDepartment(0).Text) & "”不能合并,请重新修改部门编码“" _
& Trim$(txtDepartment(0).Text) & "“", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
Else
If ShowMsg(hwnd, "是否将部门“" & mstrLastCode & "”与“" _
& Trim$(txtDepartment(0).Text) & "”进行合并?", vbQuestion + vbYesNo, _
Caption) = vbNo Then
txtDepartment(0).SetFocus
GoTo ErrHandle
Else
blnMerge = True
End If
End If
End If
ElseIf intResult = -3 Then
ShowMsg hwnd, "部门编码太长,请重新修改编码!", vbExclamation, Caption
txtDepartment(0).SetFocus
GoTo ErrHandle
Else
If mblnIsNew And mblnPIsDetail Then
If frmDepartmentCard.CodeIsUsed(mlngPCodeID) Then
If ShowMsg(hwnd, "部门“" & CodePrefix(txtDepartment(0).Text) & "”是一个已经发生业务的末级部门," _
& "是否在该部门下新增明细部门“" & Trim$(txtDepartment(0).Text) & "”," _
& "并将发生的所有业务转到新增的明细部门?", vbQuestion + vbYesNo, _
Caption) = vbNo Then
txtDepartment(0).SetFocus
GoTo ErrHandle
Else
blnMerge = True
End If
End If
End If
End If
If CheckSameName("Department", "strDepartmentCode", txtDepartment(0).Text, _
"strDepartmentName", txtDepartment(1).Text, "lngDepartmentID", _
IIf(mblnIsNew, 0, mlngDepartmentID)) Then
ShowMsg hwnd, "已有同级部门使用了" & "“" & txtDepartment(1).Text & "“" & _
",请重新录入部门名称!", _
vbExclamation, Caption
txtDepartment(1).SetFocus
recDepartment.Close
GoTo ErrHandle
End If
mstrCode = txtDepartment(0).Text
mstrName = txtDepartment(1).Text
mblnIsInActive = (chkStop.Value = vbChecked)
mblnIsDetail = True
mstrStartDate = Format(gclsBase.BaseDate, "YYYY-MM-DD")
mintLevel = stringCount(Trim(txtDepartment(0).Text), "-") + 1
If mblnIsNew Then
If mblnPIsDetail Then
If blnMerge Then '上级编码是已使用的末级编码,合并业务
If Not TransActivity(mlngPCodeID) Then GoTo ErrHandle
Else
Strsql = "UPDATE Department SET blnIsDetail=0 WHERE " _
& "lngDepartmentID=" & mlngPCodeID
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
End If
End If
If Not mblnIsInActive And mblnPIsInActive And mlngPCodeID <> 0 Then
If ShowMsg(hwnd, "上级部门已经被停用,是否启用上级部门?", _
vbQuestion + vbYesNo, Caption) = vbNo Then
mblnIsInActive = True
Strsql = "UPDATE Department SET blnIsInActive=True WHERE " _
& "lngDepartmentID=" & mlngPCodeID
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
Else
mblnIsInActive = False
End If
End If
mlngDepartmentID = GetNewID("Department")
intIsDetail = IIf(mblnIsDetail, 1, 0)
intIsInActive = IIf(mblnIsInActive, 1, 0)
Strsql = "INSERT INTO department(lngDepartmentID,strdepartmentCode," _
& "strdepartmentName,strFullName,blnIsInActive,intLevel,blnIsDetail," _
& "strStartDate) VALUES (" & mlngDepartmentID & ", '" & mstrCode & "','" _
& mstrName & "','" & mstrFullName & "'," & intIsInActive & "," _
& mintLevel & "," & intIsDetail & ",'" & mstrStartDate & "')" '插入数据库
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
' Strsql = "SELECT * FROM department WHERE strdepartmentCode='" & txtDepartment(0).Text & "'"
' Set recDepartment = gclsBase.BaseDB.OpenResultset(Strsql, rdOpenForwardOnly)
' mlngDepartmentID = recDepartment!lngDepartmentID
' recDepartment.Close
Else
'进行编码合并
If blnMerge Then
If Not frmDepartmentCard.MergeCode(mlngPCodeID, mlngDepartmentID) Then GoTo ErrHandle
Strsql = "DELETE FROM department WHERE lngdepartmentID=" & mlngDepartmentID
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
Else
intIsInActive = IIf(mblnIsInActive, 1, 0)
Strsql = "UPDATE department SET strdepartmentCode='" & mstrCode _
& "',strdepartmentName='" & mstrName & "',strFullName='" & mstrFullName _
& "',blnIsInActive=" & intIsInActive & ",intLevel =" & mintLevel _
& " WHERE lngdepartmentID=" & mlngDepartmentID
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
If Not ChangeLowerCardCodeAndFullName("Department", "strDepartmentCode", _
"strFullName", "lngDepartmentID", mstrLastCode, mstrOldFullName, mstrCode, _
mstrFullName, mintOldLevel, mintLevel) Then GoTo ErrHandle
If mblnIsInActive Then '本级停用时改变下级的停用属性
If Not ChangeLowerActive("department", "strdepartmentCode", mstrCode) _
Then GoTo ErrHandle
End If
If mblnPIsDetail Then
Strsql = "UPDATE Department SET blnIsDetail=0 WHERE lngDepartmentID=" _
& mlngPCodeID
If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
End If
End If
If Not ChangeHigherCardDetail("department", "strdepartmentCode", mstrLastCode) Then GoTo ErrHandle
End If
If Not mblnIsInActive And mblnPIsInActive Then '本级是活动时改变上级的停用属性
If Not ChangeHigherActive("department", "strdepartmentCode", mstrCode) _
Then GoTo ErrHandle
End If
gclsBase.BaseWorkSpace.CommitTrans
SaveCard = True
mblnIsChanged = False
gclsSys.SendMessage Me.hwnd, Message.msgDepartment
Exit Function
ErrHandle:
gclsBase.BaseWorkSpace.RollbackTrans
End Function
Private Sub txtDepartment_Change(Index As Integer)
Dim strErr As String
If Index = 0 Then
strErr = "'""|?/`~\.>, <;;:!@#$%^&*=+"
Else
strErr = "'""|?/`~\.>,-<;;:!@#$%^&*=+"
End If
If ContainErrorChar(txtDepartment(Index).Text, strErr) Then
BKKEY txtDepartment(Index).hwnd
End If
If Not mblnIsInit Then mblnIsChanged = True
End Sub
Private Function TransActivity(ByVal lngPID As Long) As Boolean
Dim intLevel As Integer
Dim recDepartment As rdoResultset
Dim Strsql As String, strFullName As String, strNotes As String
Strsql = "SELECT * FROM Department WHERE lngDepartmentID=" & lngPID
Set recDepartment = gclsBase.BaseDB.OpenResultset(Strsql, rdOpenForwardOnly)
With recDepartment
mblnIsDetail = False
' mblnIsInActive = !blnIsInActive
mintLevel = !intLevel
mstrStartDate = !strStartDate
mstrCode = !strDepartmentCode
mstrName = !strDepartmentName
strFullName = !strFullName
strNotes = Format(!strNotes, "@;;")
End With
recDepartment.Close
intLevel = stringCount(Trim(txtDepartment(0).Text), "-") + 1
Strsql = "UPDATE Department SET strDepartmentCode='" & txtDepartment(0).Text _
& "',strDepartmentName='" & txtDepartment(1).Text & "',strFullName='" & mstrFullName _
& "',blnIsInActive=" & chkStop.Value & ",intLevel =" & intLevel _
& ",strNotes='" & IIf(mstrNotes = "", " ", mstrNotes) & "',strStartDate='" _
& Format(gclsBase.BaseDate, "YYYY-MM-DD") & "' WHERE lngDepartmentID=" & lngPID
TransActivity = gclsBase.ExecSQL(Strsql)
If TransActivity Then
mstrFullName = strFullName
mstrNotes = strNotes
End If
End Function
Private Function IsContinue() As Boolean
Dim lngResult As Long
IsContinue = True
If mblnIsChanged Then
Me.ZOrder 0
lngResult = ShowMsg(Me.hwnd, "上一次编辑的部门还未保存,是否继续编辑它?", vbYesNoCancel + vbQuestion, "部门卡片提示信息")
If lngResult = vbYes Then '继续编辑上一次的部门
SendKeys "%{C}"
Exit Function
Else
lngResult = ShowMsg(Me.hwnd, "是否保存上一次编辑的部门?", vbYesNoCancel + vbQuestion, "部门卡片提示信息")
If lngResult = vbYes Then '保存上一次编辑的部门
If Not SaveCard Then '保存失败
lngResult = ShowMsg(Me.hwnd, "上一次编辑的部门保存失败,是否继续编辑它?", vbYesNoCancel + vbQuestion, "部门卡片提示信息")
If lngResult = vbYes Then
SendKeys "%{C}"
Exit Function
End If
End If
End If
End If
End If
IsContinue = False
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -