📄 frmaccountinitdetail.frm
字号:
Width = 700
End
Begin VB.Label lblAccountInitDetail
Caption = "科目(&A)"
Height = 255
Index = 0
Left = 120
TabIndex = 0
Top = 150
Width = 700
End
End
Attribute VB_Name = "frmAccountInitDetail"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private WithEvents mclsSubClassform As SubClass32.SubClass '窗体"钩子"对象
Attribute mclsSubClassform.VB_VarHelpID = -1
Private WithEvents mclsSubClass As SubClass32.SubClass '列表固定栏"钩子"对象
Attribute mclsSubClass.VB_VarHelpID = -1
Private mclsListSet As ListSet '列表设置对象
Private mintYear As Integer, mbytPeriod As Byte '会计年度,会计期间
Private mlngAccountID As Long, mlngCurrencyID As Long '科目ID,币种ID
Private mblnClose As Boolean '结帐标志
Private mstrDate As String '会计年度第一天
Private mstrQuantityDec As String '数量小数位数格式化串
Private mstrDec As String '本位币小数位数格式化串
Private mstrCurrDec As String
Private mintCol As Integer, mlngRow As Long '录入框所在行,列
Private mblnIsInput As Boolean '正在录入标志
Private mblnHscroll As Boolean, mblnVscroll As Boolean '横向及垂直滚动条出现标志
Private mblnIsload(5) As Boolean '参照列表装载标志
Private mblnIsQuatity As Boolean '数量核算标志
Private mblnIsMultCurrency As Boolean '多币种核算标志
Private mblnIsAllCurrency As Boolean '所有币种核算标志
Private mblnIsARAP As Boolean
Private mblnIsChange As Boolean '修改标志
Private mintStart As Integer
Private mblnIsArrow As Boolean
Private mlngOldAccountID As Long
Private mlngOldCurrencyID As Long
Private Const ViewId As Long = 102 '视图ID
Private mblnAccountNoExit As Boolean
Private mblnLoad As Boolean
'显示科目期初明细
Public Sub ShowDetail(intYear As Integer, bytPeriod As Byte, strDirect As String, strDate As String, _
strQuantityDec As String, strDec As String, lngAccountID As Long, lngCurrencyID As Long, blnClose As Boolean)
Dim lngID As Long
Dim intCount As Integer
mblnLoad = False
Me.HelpContextID = 30104
SetHelpID 30104
mblnIsInput = False
For intCount = 0 To 5
mblnIsload(intCount) = False
Next
Set Me.Icon = GetFormResPicture(139, vbResIcon)
Set cmdAccountInitDetail(3).Picture = GetFormResPicture(1001, vbResBitmap)
Set cmdAccountInitDetail(4).Picture = GetFormResPicture(1002, vbResBitmap)
Set cmdAccountInitDetail(5).Picture = GetFormResPicture(1012, vbResBitmap)
Set mclsListSet = New ListSet
mclsListSet.ViewId = ViewId
#If conVersionType = 4 Then
lblAccountInitDetail(1).Visible = False
lstAccountInitDetail(1).Visible = False
#End If
SetFlexGrid
SetListText 10
mintYear = intYear
mbytPeriod = bytPeriod
mstrDate = strDate
mstrQuantityDec = strQuantityDec
mstrDec = strDec
mlngCurrencyID = lngCurrencyID
mlngAccountID = 0
lstAccountInitDetail(0).SeekId lngAccountID
mlngAccountID = lngAccountID
'初始化窗体"钩子"对象
Set mclsSubClassform = New SubClass32.SubClass
mclsSubClassform.hwnd = Me.hwnd
mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
'初始化列表固定栏"钩子"对象
Set mclsSubClass = New SubClass32.SubClass
mclsSubClass.hwnd = msgAccountInitDetail(0).hwnd
mclsSubClass.Messages(WM_LBUTTONDOWN) = True
mclsSubClass.Messages(WM_LBUTTONUP) = True
mclsSubClass.Messages(WM_PAINT) = True
mblnLoad = True
lblAccountInitDetail(3).Caption = strDirect
mblnClose = blnClose
If blnClose Then
cmdAccountInitDetail(0).Enabled = False
cmdAccountInitDetail(1).Enabled = False
cmdAccountInitDetail(2).Enabled = False
Else
cmdAccountInitDetail(0).Enabled = True
cmdAccountInitDetail(1).Enabled = True
cmdAccountInitDetail(2).Enabled = True
End If
Me.Show vbModal
End Sub
'得到科目期初明细列表记录集
Private Function GetList() As rdoResultset
Dim strSQL As String, strSelect As String, strFrom As String
Dim strWhere As String
If mblnIsInput Then
lstAccountInitDetail(2).Visible = False
txtAccountInitDetail.Visible = False
mblnIsInput = False
End If
If gclsBase.FirstDate = gclsBase.BeginDate Then
strSelect = "Select (Customer.strCustomerCode || ' ' || Max(Customer.strCustomerName)) AS 单位, (Department.strDepartmentCode || ' ' || Max(Department.strDepartmentName)) AS 部门, (Employee.strEmployeeCode || ' ' || Max(Employee.strEmployeeName)) AS 员工, ' ' AS 工程, (Class1.strClassCode || ' ' || Max(Class1.strClassName)) AS 统计, (Class2.strClassCode || ' ' || Max(Class2.strClassName)) AS 项目," & _
"Decode(Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit),0,'',To_Char(Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币年初," & _
"Decode(Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit),0,'',To_Char(Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币年初," & _
"Decode(Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit),0,'',To_Char(Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量年初," & _
"0 As 原币借方," & _
"0 As 本币借方,0 As 数量借方,0 As 原币贷方,0 As 本币贷方,0 As 数量贷方," & _
"'' AS 原币期初, '' AS 本币期初, '' AS 数量期初, Max(AccountDaily.lngCustomerID), Max(AccountDaily.lngDepartmentID), Max(AccountDaily.lngEmployeeID), 0, Max(AccountDaily.lngClassID1), Max(AccountDaily.lngClassID2), Max(AccountDaily.lngCustomerID) AS ID1, Max(AccountDaily.lngDepartmentID) AS ID2, Max(AccountDaily.lngEmployeeID) AS ID3, 0 AS ID4, Max(AccountDaily.lngClassID1) AS ID5, Max(AccountDaily.lngClassID2) AS ID6," & _
"Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit)," & _
"Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit)," & _
"Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit)"
Else
strSelect = "Select (Customer.strCustomerCode || ' ' || Max(Customer.strCustomerName)) AS 单位, (Department.strDepartmentCode || ' ' || Max(Department.strDepartmentName)) AS 部门, (Employee.strEmployeeCode || ' ' || Max(Employee.strEmployeeName)) AS 员工, ' ' AS 工程, (Class1.strClassCode || ' ' || Max(Class1.strClassName)) AS 统计, (Class2.strClassCode || ' ' || Max(Class2.strClassName)) AS 项目," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit,0)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币年初," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit,0)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币年初," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit,0)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量年初," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedDebit)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币借方," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedDebit)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币借方," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedDebit)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量借方," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedCredit)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币货方," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedCredit)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币货方," & _
"Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedCredit)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量货方," & _
"'' AS 原币期初, '' AS 本币期初, '' AS 数量期初, Max(AccountDaily.lngCustomerID), Max(AccountDaily.lngDepartmentID), Max(AccountDaily.lngEmployeeID), 0, Max(AccountDaily.lngClassID1), Max(AccountDaily.lngClassID2), Max(AccountDaily.lngCustomerID) AS ID1, Max(AccountDaily.lngDepartmentID) AS ID2, Max(AccountDaily.lngEmployeeID) AS ID3, 0 AS ID4, Max(AccountDaily.lngClassID1) AS ID5, Max(AccountDaily.lngClassID2) AS ID6," & _
"Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit)," & _
"Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit)," & _
"Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit)"
End If
strFrom = " From AccountDaily,Account,Currencys,Customer,Department,Employee,Class1,Class2"
strWhere = " Where (((((((AccountDaily.lngAccountID=Account.lngAccountID(+))" & _
" And AccountDaily.lngCurrencyID=Currencys.lngCurrencyID(+))" & _
" And AccountDaily.lngCustomerID=Customer.lngCustomerID(+)) " & _
" And AccountDaily.lngDepartmentID=Department.lngDepartmentID(+)) " & _
" And AccountDaily.lngEmployeeID=Employee.lngEmployeeID(+)) " & _
" And AccountDaily.lngClassID1=Class1.lngClassID(+)) " & _
" And AccountDaily.lngClassID2=Class2.lngClassID(+))"
strWhere = strWhere & " And AccountDaily.strDate<'" & gclsBase.BeginDate & "' And AccountDaily.lngAccountID=" & mlngAccountID & " And AccountDaily.lngCurrencyID=" & mlngCurrencyID & _
" And Not (AccountDaily.dblPostedDebit=0 And AccountDaily.dblPostedCredit=0 And AccountDaily.dblCurrencyPostedDebit=0 And AccountDaily.dblCurrencyPostedCredit=0)" & _
" Group BY Customer.strCustomerCode, Department.strDepartmentCode, Employee.strEmployeeCode, Class1.strClassCode, Class2.strClassCode" & _
" ORDER BY Customer.strCustomerCode, Department.strDepartmentCode, Employee.strEmployeeCode, Class1.strClassCode, Class2.strClassCode"
strSQL = strSelect & strFrom & strWhere
Set GetList = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenStatic)
End Function
'重计算期初余额
Private Sub ReCalculateInit(ByVal Row As Long, ByVal col As Integer)
Dim dblInit(3) As Double
Dim intCount As Integer
Dim intCol As Integer
With msgAccountInitDetail(1)
Select Case col
Case 6, 9, 12
intCol = 6
Case 7, 10, 13
intCol = 7
Case 8, 11, 14
intCol = 8
End Select
For intCount = 0 To 2
If .TextMatrix(Row, intCol + 3 * intCount) = "" Then
dblInit(intCount) = 0
Else
dblInit(intCount) = CDbl(.TextMatrix(Row, intCol + 3 * intCount))
End If
Next
'余额方向为借方
If lblAccountInitDetail(3).Caption = "借" Then
dblInit(3) = dblInit(0) + dblInit(1) - dblInit(2)
Else
dblInit(3) = dblInit(0) - dblInit(1) + dblInit(2)
End If
If dblInit(3) = 0 Then
.TextMatrix(Row, intCol + 9) = ""
Else
Select Case intCol
Case 6
.TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrCurrDec)
Case 7
.TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrDec)
Case 8
.TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrQuantityDec)
End Select
End If
End With
End Sub
'处理回车键
Private Sub ReturnProc()
Dim intCount As Integer
If InputFinish() Then
With msgAccountInitDetail(1)
For intCount = mintCol + 1 To 14
If .ColWidth(intCount) > 0 Then Exit For
Next
If intCount <= 14 Then
.col = intCount
.Row = mlngRow
InputStart .Row, .col
mblnIsArrow = True
Else
If mlngRow < .Rows - 1 Then
.Row = mlngRow + 1
For intCount = 0 To 14
If .ColWidth(intCount) > 0 Then
.col = intCount
Exit For
End If
Next
If .Row - 8 > 0 Then
.TopRow = .Row - 8
End If
InputStart .Row, .col
mblnIsArrow = True
Else
mclsMainControl_ListEditMenu 0
End If
End If
End With
End If
End Sub
'保存期初余额
Private Function SaveInit(Optional blnFlag As Boolean = False) As Boolean
Dim intCount As Integer, intCnt As Integer
Dim lngResult As Long
With msgAccountInitDetail(1)
If blnFlag Then
If Not InputFinish() Then
SaveInit = False
Exit Function
End If
End If
For intCount = 2 To .Rows - 1
If .RowData(intCount) And &H1C Then Exit For
Next
If intCount <= .Rows - 1 Then
If Not blnFlag Then
lngResult = ShowMsg(Me.hwnd, "是否保存所做修改?", vbQuestion + vbYesNo, Me.Caption)
If lngResult = vbNo Then
mblnIsChange = False
.Rows = 2
SaveInit = True
Exit Function
End If
End If
If InputFinish() Then
If .Rows - 1 >= 2 Then
gclsBase.BaseWorkSpace.BeginTrans
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -