📄 clskmcheck.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsKmCheck"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Private UsedFlag As UsedFlagInfo
Private WarningInfo(1 To 3, 1 To 30) As String
Public Function NormalCheck() As Boolean
'一般检查 返回检查结果chechresult ,报警WarningInfo(),使用窗体信息 nodeinputinfo
'一般检查包括:代码非空,中文名称非空,代码非重复,代码是否超限长,
'上级代码与下级代码的首位是否相同,新增代码的顺序号>=2
Dim adoRstTemp As ADODB.Recordset
Dim BoolTemp As Boolean '结果暂存量
Dim KmFirstLen As Integer '科目一级科目长度
Set adoRstTemp = New ADODB.Recordset
adoRstTemp.CursorLocation = adUseClient
BoolTemp = True
If NodeInputInfo.sKmdm = "" Then
BoolTemp = False
WarningInfo(1, 1) = "科目代码非空!"
End If
If NodeInputInfo.sKmmc = "" Then
BoolTemp = False
WarningInfo(1, 2) = "科目中文名非空!"
End If
If ThisNodeInfo.iAppendModifyFlag = 1 Then
adoRstTemp.Open "select kmdm from tzw_km" & glo.sOperateYear & " where kmdm = '" & Trim$(NodeInputInfo.sKmdm) & "' order by kmdm", _
glo.cnnMain, adOpenStatic, adLockOptimistic
If Not (adoRstTemp.EOF And adoRstTemp.BOF) Then
BoolTemp = False
WarningInfo(1, 3) = "科目重复!"
End If
adoRstTemp.Close
End If
KmFirstLen = InStr(1, NodeInputInfo.sKmdm, "-") - 1
If KmFirstLen > ThisNodeInfo.iMaxlen Then
BoolTemp = False
WarningInfo(1, 4) = "科目代码不能超限长!"
End If
If Left$(NodeInputInfo.sKmdm, 1) <> Trim$(str$(ThisNodeInfo.iNodeGrand)) Then
BoolTemp = False
WarningInfo(1, 5) = "科目代码不属于本大类!"
End If
If ThisNodeInfo.iNodeIndex < 2 Then
BoolTemp = False
WarningInfo(1, 6) = "不能在根节点操作!"
End If
If Right$(Trim$(NodeInputInfo.sKmdm), 1) = "-" Then
BoolTemp = False
WarningInfo(1, 7) = "科目代码输入错误!"
End If
If NodeInputInfo.iSldw = -1 And NodeInputInfo.sSldw = "" Then
BoolTemp = False
WarningInfo(1, 8) = "数量核算单位不能为空!"
End If
If NodeInputInfo.iWbdw = -1 And NodeInputInfo.sWbdw = "" Then
BoolTemp = False
WarningInfo(1, 9) = "外币币种不能为空!"
End If
If NodeInputInfo.iIsXjllkm = -1 And NodeInputInfo.sXjlllb = "" Then
BoolTemp = False
WarningInfo(1, 10) = "现金流量类别不能为空!"
End If
If NodeInputInfo.sKmlx = "" Then
BoolTemp = False
WarningInfo(1, 16) = "科目类型不能为空!"
End If
If NodeInputInfo.sZygs = "" Then
BoolTemp = False
WarningInfo(1, 17) = "账页格式不能为空!"
End If
NormalCheck = BoolTemp
Set adoRstTemp = Nothing
End Function
Private Function IsXgbzCheck() As Boolean
'记账/审核标志检查
Dim adoRstTemp As ADODB.Recordset
Set adoRstTemp = New ADODB.Recordset
adoRstTemp.CursorLocation = adUseClient
adoRstTemp.Open "select xgbz from tzw_pzsj" & glo.sOperateYear & " where kmdm like '" & ThisNodeInfo.sKmdm & "%'" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If Not (adoRstTemp.EOF And adoRstTemp.BOF) Then
' If adoRstTemp.Fields("xgbz") = 2 Or adoRstTemp.Fields("xgbz") = 1 Then
If adoRstTemp.Fields("xgbz") = 2 Then
If adoRstTemp.Fields("xgbz").value = 2 Then
ThisNodeInfo.iXgbzFlag = 1
End If
IsXgbzCheck = False
Else
IsXgbzCheck = True
End If
Else
IsXgbzCheck = True
End If
adoRstTemp.Close
Set adoRstTemp = Nothing
End Function
Private Function IsQcyeCheck() As Boolean
'初期余额检查
Dim sTemp, sTemp2, sTemp3 As String
Dim adoRstTemp As ADODB.Recordset
Set adoRstTemp = New ADODB.Recordset
adoRstTemp.CursorLocation = adUseClient
IsQcyeCheck = True
If Not (ThisNodeInfo.sYefx = NodeInputInfo.sYefx And ThisNodeInfo.iAppendModifyFlag = 0) Then
adoRstTemp.Open "select * from tzw_balance" & glo.sOperateYear & " where kmdm = '" & ThisNodeInfo.sKmdm & "'" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If Not (adoRstTemp.EOF And adoRstTemp.BOF) Then
sTemp = Format(glo.sBeginMonth, "00")
sTemp2 = Trim$("ljj" & Trim$(sTemp))
sTemp3 = Trim$("ljd" & Trim$(sTemp))
If adoRstTemp.Fields(sTemp2).value <> 0 Or adoRstTemp.Fields(sTemp3).value <> 0 Then
IsQcyeCheck = False
ThisNodeInfo.iQcyelb = 1
End If
sTemp2 = Trim$("ljjsl" & Trim$(sTemp))
sTemp3 = Trim$("ljdsl" & Trim$(sTemp))
If adoRstTemp.Fields(sTemp2).value <> 0 Or adoRstTemp.Fields(sTemp3).value <> 0 Then
IsQcyeCheck = False
ThisNodeInfo.iQcyelb = 2
End If
sTemp2 = Trim$("ljjwb" & Trim$(sTemp))
sTemp3 = Trim$("ljdwb" & Trim$(sTemp))
If adoRstTemp.Fields(sTemp2).value <> 0 Or adoRstTemp.Fields(sTemp3).value <> 0 Then
IsQcyeCheck = False
ThisNodeInfo.iQcyelb = 3
End If
End If
adoRstTemp.Close
Set adoRstTemp = Nothing
End If
End Function
Private Function IsFzhsCheck() As String
'辅助核算检查
With NodeInputInfo
' If .iIsBmhs = -1 And UsedFlag.bBmUsed Then IsFzhsCheck = "此科目已经使用了部门核算!"
' If .iIsXmhs = -1 And UsedFlag.bXmUsed Then IsFzhsCheck = "此科目已经使用了项目核算!"
' If .iIsKhwlhs = -1 And UsedFlag.bKhUsed Then IsFzhsCheck = "此科目已经使用了客户往来!"
' If .iIsGrwlhs = -1 And UsedFlag.bGrUsed Then IsFzhsCheck = "此科目已经使用了个人往来!"
' If .iIsGyswlhs = -1 And UsedFlag.bGysUsed Then IsFzhsCheck = "此科目已经使用了供应商往来!"
End With
End Function
Private Sub loadUsedFlag(ByVal kmdm As String)
'读入相关对象是否使用信息,包括:凭证,调汇模板,凭证模板,银行对账单,非法对应科目,凭证类别;若使用置True,没使用置False
Dim IniTemp As Integer
Dim adoRstTemp As ADODB.Recordset
Set adoRstTemp = New ADODB.Recordset
adoRstTemp.CursorLocation = adUseClient
With UsedFlag
On Error GoTo 0
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tzw_pzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "' and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tzw_pzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "'" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bPzUsed = True
adoRstTemp.Close
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tfz_xmbmpzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "' and (rtrim(Xmdm)<>'' or xmdm is null) and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tfz_xmbmpzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "' and (rtrim(Xmdm)<>'' or xmdm is null) " _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bXmUsed = True
adoRstTemp.Close
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tfz_xmbmpzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "' and (rtrim(bmdm)<>'' or bmdm is null) and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tfz_xmbmpzsj" & glo.sOperateYear & " where kmdm ='" & kmdm & "' and (rtrim(bmdm)<>'' or bmdm is null) " _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bBmUsed = True
adoRstTemp.Close
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CPERSONCODE)<>'' or CPERSONCODE is null) and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CPERSONCODE)<>'' or CPERSONCODE is null) " _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bGrUsed = True
adoRstTemp.Close
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CCUSCODE)<>'' or CCUSCODE is null) and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CCUSCODE)<>'' or CCUSCODE is null) " _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bKhUsed = True
adoRstTemp.Close
If g_FLAT = "ORACLE" Then
adoRstTemp.Open "select * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CVENCODE)<>'' or CVENCODE is null) and rownum<2" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
Else
adoRstTemp.Open "select top 1 * from tYsyf_pzsj" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' and (rtrim(CVENCODE)<>'' or CVENCODE is null) " _
, glo.cnnMain, adOpenStatic, adLockOptimistic
End If
If adoRstTemp.RecordCount > 0 Then .bGysUsed = True
adoRstTemp.Close
adoRstTemp.Open "select * from tzw_check" & glo.sOperateYear & " where kmdm ='" & kmdm & "' order by kmdm" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount > 0 Then .bZpUsed = True
adoRstTemp.Close
adoRstTemp.Open "select * from tzw_zzpzset" & glo.sOperateYear & " where ckmdm ='" & kmdm & "' order by id" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount > 0 Then .bZzpzmbUsed = True
adoRstTemp.Close
adoRstTemp.Open "select * from tzw_zzhdset" & glo.sOperateYear & " where kmdm ='" & kmdm & "' order by id" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount > 0 Then .bThmbUsed = True
adoRstTemp.Close
adoRstTemp.Open "select * from tzw_templetdetail" & glo.sOperateYear & " where kmdm ='" & kmdm & "' order by kmdm" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount > 0 Then .bPzmbUsed = True
adoRstTemp.Close
' adoRstTemp.Open "select * from tzw_yhdzd" & glo.sOperateYear & " where kmdm ='" & Kmdm & "' order by id" _
' , glo.cnnMain, adOpenStatic, adLockOptimistic
' If adoRstTemp.RecordCount > 0 Then .bYhdzdUsed = True
' adoRstTemp.Close
adoRstTemp.Open "select * from tzw_km" & glo.sOperateYear & " order by kmdm" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount = 0 Then
.bFfdykm = False
Else
Do Until adoRstTemp.EOF
If Not IsNull(adoRstTemp.Fields("clawless")) Then
IniTemp = InStr(1, adoRstTemp.Fields("clawless"), kmdm)
End If
If IniTemp > 0 Then .bFfdykm = True
adoRstTemp.MoveNext
Loop
End If
adoRstTemp.Close
adoRstTemp.Open "select * from tzw_type" & glo.sOperateYear & " order by signid" _
, glo.cnnMain, adOpenStatic, adLockOptimistic
If adoRstTemp.RecordCount = 0 Then
.bPzlb = False
Else
Do Until adoRstTemp.EOF
If Not IsNull(adoRstTemp.Fields("jfbykm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("jfbykm").value), kmdm) > 0 Then .bPzlb = True
End If
If Not IsNull(adoRstTemp.Fields("jfbwkm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("jfbwkm").value), kmdm) > 0 Then .bPzlb = True
End If
If Not IsNull(adoRstTemp.Fields("dfbykm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("dfbykm").value), kmdm) > 0 Then .bPzlb = True
End If
If Not IsNull(adoRstTemp.Fields("dfbwkm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("dfbwkm").value), kmdm) > 0 Then .bPzlb = True
End If
If Not IsNull(adoRstTemp.Fields("pzbykm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("pzbykm").value), kmdm) > 0 Then .bPzlb = True
End If
If Not IsNull(adoRstTemp.Fields("pzbwkm").value) Then
If InStr(1, Trim$(adoRstTemp.Fields("pzbwkm").value), kmdm) > 0 Then .bPzlb = True
End If
adoRstTemp.MoveNext
Loop
End If
adoRstTemp.Close
Set adoRstTemp = Nothing
End With
End Sub
Public Function CheckUse() As String
Dim i As Long
Dim j As Integer
Dim k As Integer
i = ThisNodeInfo.bUsed
If i < 0 Then i = i + 65536
j = 1
On Error Resume Next
While i > 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -