来自「VB开发的ERP系统」· 代码 · 共 1,519 行 · 第 1/5 页
TXT
1,519 行
If Tlb_Action.Buttons("dy").Enabled Then Call bbyl(False)
End Select
End If
Select Case KeyCode
Case vbKeyF3 '修改
If Tlb_Action.Buttons("xg").Enabled Then
Call Sub_EditBill
End If
Case vbKeyF6 '保存凭证
If Tlb_Action.Buttons("bc").Enabled Then
Call Sub_SaveBill
End If
End Select
End Sub
Private Sub Sub_OperStatus(Str_Status As String) '工具条依据不同状态所进行的变化
With Tlb_Action
Select Case Str_Status
Case "10" '浏览(系统进入、放弃新增单据、填制凭证时删除单据,凭证审核)
'工具条
.Buttons("dy").Enabled = True '打印
.Buttons("yl").Enabled = True '预览
.Buttons("xg").Enabled = False '修改
.Buttons("Fill").Enabled = False '填充
.Buttons("zh").Enabled = False '增行
.Buttons("sh").Enabled = False '删行
.Buttons("cx").Enabled = True '查询
.Buttons("bc").Enabled = False '保存
.Buttons("fq").Enabled = False '放弃
'录入文本框
For Jsqte = Max_Text_Index To 0 Step -1
LrText(Jsqte).Enabled = False
Next Jsqte
CmbOut_In.Enabled = False
Case "11" '浏览(放弃修改单据,查询单据)
'工具条
.Buttons("dy").Enabled = True '打印
.Buttons("yl").Enabled = True '预览
.Buttons("xg").Enabled = True '修改
.Buttons("Fill").Enabled = False '填充
.Buttons("bc").Enabled = False '保存
.Buttons("fq").Enabled = False '放弃
'录入文本框
For Jsqte = 0 To Max_Text_Index
LrText(Jsqte).Enabled = False
Next Jsqte
CmbOut_In.Enabled = False
Case "30" '修改
'工具条
.Buttons("dy").Enabled = False '打印
.Buttons("yl").Enabled = False '预览
.Buttons("xg").Enabled = False '修改
.Buttons("Fill").Enabled = True '填充
.Buttons("bc").Enabled = True '保存
.Buttons("fq").Enabled = True '放弃
'录入文本框
For Jsqte = 0 To Max_Text_Index
LrText(Jsqte).Enabled = True
Next Jsqte
CmbOut_In.Enabled = True
LrText(0).SetFocus
End Select
End With
End Sub
Private Sub Sub_EditBill() '修改一张单据
'判断当前凭证是否允许修改
If Not Fun_AllowEdit Then
Exit Sub
End If
'设置操作状态为修改
Lab_OperStatus.Caption = "3"
'设置工具条状态
Call Sub_OperStatus("30")
End Sub
Private Function Fun_AllowEdit() As Boolean
Fun_AllowEdit = True
End Function
Private Sub Sub_AbandonBill() '放弃对当前单据的操作
'先关闭录入载体
Select Case Trim(Lab_OperStatus.Caption)
Case "3" '修改状态
'重新显示当前单据
Call Sub_ShowBill
'设置操作状态为浏览
Lab_OperStatus = "1"
Call Sub_OperStatus("11")
End Select
End Sub
Private Sub Xldqh() '显露当前行
Dim Toprowte As Long
With WglrGrid
Toprowte = 0
Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
Toprowte = .TopRow
.TopRow = .TopRow + 1
Loop
Toprowte = 0
Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
Toprowte = .TopRow
.TopRow = .TopRow - 1
Loop
End With
End Sub
Private Sub GsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button) '表格格式设置(通用)
Select Case Button.Key
Case "bcgs" '保存表格格式
Call Bcwggs(WglrGrid, GridCode, GridStr)
Case "hfmrgs" '恢复默认格式
Call Hfmrgs(WglrGrid, GridCode, GridStr)
End Select
End Sub
Private Sub bbyl(bbylte As Boolean) '打印预览(通用)
Dim Bbzbt$, Bbxbt() As String, bbxbtzzxs() As Integer, Bbxbtgs As Integer
Dim Bbbwh() As String, Bbbwhzzxs() As Integer, Bbbwhgs As Integer
Bbxbtgs = 1 '报 表 小 标 题 行 数
Bbbwhgs = 1 '报 表 表 尾 行 数
ReDim Bbxbt(1 To Bbxbtgs)
ReDim bbxbtzzxs(1 To Bbxbtgs)
If Bbbwhgs <> 0 Then
ReDim Bbbwh(1 To Bbbwhgs)
ReDim Bbbwhzzxs(1 To Bbbwhgs)
End If
Bbzbt = ReportTitle
bbxbtzzxs(1) = 0 '报表行组织形式(0-居左 1-居中 2-居右)
Bbxbt(1) = "转帐名称:" + Lbl_AutoAccName '报表行组织形式(0-居左 1-居中 2-居右)
Call Scyxsjb(WglrGrid) '生成报表数据
Call Scdybb(Dyymctbl, Bbzbt, Bbxbt(), bbxbtzzxs(), Bbxbtgs, Bbbwh(), Bbbwhzzxs(), Bbbwhgs, bbylte)
If Not bbylte Then
Unload DY_Tybbyldy
End If
End Sub
Private Function Sub_SaveBill() As Boolean '保 存 单 据
Dim Rowjsq As Long '网格行计数器
Dim Coljsq As Long '网格列计数器
Dim Int_RowCount As Integer '有效数据行计数器
Dim Lrywlz As Long '录入有误列值
Dim Bj As Boolean '辅助项有效标志
'下面将对所有有效数据行进行有效性判断
If LrText(0) = "" Then '转帐科目必须输入
Tsxx = "请输入损益类科目!"
Call Xtxxts(Tsxx, 0, 4)
LrText(0).SetFocus
Exit Function
End If
If LrText(1) = "" Then '利润科目必须输入
Tsxx = "请输入本年利润科目!"
Call Xtxxts(Tsxx, 0, 4)
LrText(1).SetFocus
Exit Function
End If
If LrText(2) = "" Then '摘要必须输入
Tsxx = "请输入摘要!"
Call Xtxxts(Tsxx, 0, 4)
LrText(2).SetFocus
Exit Function
End If
Int_RowCount = 0
With WglrGrid
For Rowjsq = .FixedRows To .Rows - 1
'带*号者为有效数据行
If .TextMatrix(Rowjsq, 0) <> "*" Then
Exit For
Else
Int_RowCount = Int_RowCount + 1
End If
'2.[自定义判断(补丁)
'首先进行为空判断(固定不变)
For Jsqte = Qslz To .Cols - 1
If (GridInt(Jsqte, 5) = 1 And Len(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0) Or (GridInt(Jsqte, 5) = 2 And Val(Trim(.TextMatrix(Yxxpdh, Jsqte))) = 0) Then
Tsxx = GridStr(Jsqte, 2)
Lrywlz = Jsqte
GoTo Lrcwcl
Exit For
End If
Next Jsqte
Next Rowjsq
If Int_RowCount = 0 Then
Tsxx = "有效行数为零,不能存盘!"
Call Xtxxts(Tsxx, 0, 1)
Exit Function
End If
End With '网格
'如果以上有效性检查均顺利通过,则执行存盘动作
On Error GoTo Swcwcl
Cw_DataEnvi.DataConnect.BeginTrans
'修改单据
'1.删除原单据所有内容
Cw_DataEnvi.DataConnect.Execute ("Delete Cwzz_AutoTranItem Where TranCode='" & Trim(Lbl_AutoAccCode.Caption) & "' and TranClass='" & TranClassCode & "'")
If Rec_AutoAccItem.State = 1 Then Rec_AutoAccItem.Close
Rec_AutoAccItem.Open "Select * From Cwzz_AutoTranItem Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockPessimistic
'写网格中的转出科目定义数据
For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
Exit For
End If
With Rec_AutoAccItem
.AddNew
.Fields("TranClass") = TranClassCode
.Fields("TranCode") = Trim(Lbl_AutoAccCode.Caption) '转帐编号
.Fields("Digest") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))) '摘要
.Fields("Ccode") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls))) '损益科目
.Fields("TranOri") = WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls)) '转帐方向
.Fields("TranProp") = "转出" '转帐性质
.Fields("GetCcode") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls))) '本年利润科目
.Fields("DistriProp") = 100 '若网格内该项没有填写,默认100%
.Fields("FormulaCode") = "01" '来源数据项目,期末余额
End With
Next Rowjsq
'写转入科目定义数据
With Rec_AutoAccItem
.AddNew
.Fields("TranClass") = TranClassCode
.Fields("TranCode") = Trim(Lbl_AutoAccCode.Caption) '转帐编号
.Fields("Digest") = Trim(LrText(2).Text) '摘要
.Fields("Ccode") = Trim(LrText(1).Text) '损益科目
If WglrGrid.TextMatrix(WglrGrid.FixedRows, Sydz("004", GridStr(), Szzls)) = "借" Then
.Fields("TranOri") = "贷" '转帐方向
Else
.Fields("TranOri") = "借" '转帐方向
End If
.Fields("TranProp") = "转入" '转帐性质
.Fields("GetCcode") = "" '
.Fields("DistriProp") = 100 '若网格内该项没有填写,默认100%
.Fields("FormulaCode") = "05" '来源数据为对方汇总数
.Update
End With
Cw_DataEnvi.DataConnect.CommitTrans
Sub_SaveBill = True
Tsxx = "保存完毕! "
Call Xtxxts(Tsxx, 0, 4)
'标识单据发生改动
Bln_BillChange = True
'设置操作状态为浏览
Lab_OperStatus = "1"
Call Sub_OperStatus("11")
Exit Function
Swcwcl:
Cw_DataEnvi.DataConnect.RollbackTrans
Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
Call Xtxxts(Tsxx, 0, 1)
Exit Function
Lrcwcl: '录入错误处理
With WglrGrid
Call Xtxxts("(第 " + Trim(Str(Int_RowCount)) + " 条记录)-" + Tsxx, 0, 1)
changelock = True
.Select Rowjsq, Lrywlz
WglrGrid.SetFocus
changelock = False
Exit Function
End With
End Function
Private Function TextYxxpd(Index As Integer) As Boolean '文本框有效性判断
Dim Sqlstr As String
Dim Findrec As ADODB.Recordset
If TextValiJudgeLock(Index) Then '文本框内容未曾改变不进行有效性判断
TextYxxpd = True
Exit Function
End If
If Trim(LrText(Index)) = "" Then
LrText(Index).Tag = ""
Call WbklrCl_After(Index)
TextValiJudgeLock(Index) = True
TextYxxpd = True
Exit Function
End If
Select Case Textint(Index, 4)
Case 1 '编码型
Sqlstr = Trim(Textstr(Index, 5))
Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
If Findrec.EOF Then
Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
LrText(Index).SetFocus
Exit Function
Else
Select Case Textint(Index, 3)
Case 0
If Len(Trim(Textstr(Index, 2))) <> 0 Then
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?