⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 businessflow.bas

📁 会计管理信息系统windows界面vb编程 会计管理信息系统windows界面vb编程
💻 BAS
字号:
Attribute VB_Name = "BusinessFlow"
'********************帐簿输出业务逻辑**************************************
'逻辑编写:刘春宏

'成本        |资产        |负债        |所有者权益    |  损益
'________________________________________________________________
'借加贷减    |借加贷减    |借减贷加    |借减贷加      |借减贷加
'******************************************************************
'举例:   购进原材料
'原材料 现金
'借:500 贷:500
'举例:       付清帐款
'    银行存款 应付账款
'    贷:500 借:500
'*********************************************************************

'************************程序*****************************************
'程序设计: 万星
'程序编写: 万星


'设置参数:
'strRequestPara  读取传递过来的科目参数
'intSubjectID  读取传递过来的科目代码附值给它
'strSubjectName 读取传递过来的科目名称附值给它
'判断函数 IsIDorName() 判断传递过来的参数是科目代码还是科目名称
'定义变量
Public strFindCredence As String '查询在pzlz表中的凭证
Public strFindCredenceNum As String '查询有多少符合条件的凭证
Public intCredenceID As Integer '凭证号
Public strSubjectName As String '科目名称
Public intDebitMoney As Integer '借方金额
Public intLenderMoney As Integer '贷方金额
Public intBalanceMoney As Integer '余额
Public numCredence As Integer '凭证数量
Public DnyArrayCredenceID() As Integer '定义一个动态数组,存储凭证号
Public DnyArraySubjectName() As String '定义一个动态数组,存储科目名称
Public DnyArrayDebitMoney()  As Integer '定义一个动态数组,存储借方金额
Public DnyArrayLenderMoney()  As Integer '定义一个动态数组,存储贷方金额
Public DnyArrayBalanceMoney() As Integer '定义一个动态数组,存储余额

Public Sub IsIDorName(strRequestPara As String)
  If Val(strRequestPara) = 0 Then
   
    Call FindCredenceByName(strRequestPara)
  Else
    
    Call FindCredenceByID(Val(strRequestPara))
  End If
  
End Sub
'按照科目代码找到所有凭证 FindCredenceByID()
Private Sub FindCredenceByID(intSubjectID As Double)
   Dim intEachBalanceMoney As Integer
   Dim iRow As Integer
   Dim ADOrs As New Recordset
   Dim rs As New Recordset
   
   Set rs.ActiveConnection = ADOcn
   strFindCredenceNum = "select count(凭证号) as num_凭证号 from pzls where 科目代码='" + Trim(Str(intSubjectID)) + "'and 记账标志=0 "
   rs.Open strFindCredenceNum
   
   
   numCredence = rs.Fields("num_凭证号") - 1 '读取查出的凭证的数量,减1,作为动态数组上界
If numCredence = -1 Then
      MsgBox "没有符合条件的凭证"
Else
     ReDim DnyArrayCredenceID(numCredence) As Integer   '重新定义动态数组维数,存储凭证号
     ReDim DnyArraySubjectName(numCredence) As String   '重新定义动态数组维数,存储科目名称
     ReDim DnyArrayDebitMoney(numCredence) As Integer    '重新定义动态数组维数,存储借方金额
     ReDim DnyArrayLenderMoney(numCredence) As Integer   '重新定义动态数组维数,存储贷方金额
     ReDim DnyArrayBalanceMoney(numCredence) As Integer  '重新定义动态数组维数,存储余额
    
   
    rs.Close
    
   Set ADOrs.ActiveConnection = ADOcn
    strFindCredence = "select 凭证号,科目名称,借方金额,贷方金额 from pzls where 科目代码='" + Trim(Str(intSubjectID)) + "'and 记账标志=0 order by 日期"
    ADOrs.Open strFindCredence
   If Not ADOrs.EOF Then
     Do While Not ADOrs.EOF
         intCredenceID = ADOrs.Fields("凭证号")
         strSubjectName = ADOrs.Fields("科目名称")
         intDebitMoney = ADOrs.Fields("借方金额")
         intLenderMoney = ADOrs.Fields("贷方金额")
       If HowToAccount(CStr(strSubjectName)) = True Then '按不同方法计算余额
         Call AcountCostClass(intDebitMoney, intLenderMoney)
       Else
         Call AcountDebtClass(intDebitMoney, intLenderMoney)
       End If
     intEachBalanceMoney = intBalanceMoney '返回的余额值
     
           DnyArrayCredenceID(iRow) = intCredenceID
           DnyArraySubjectName(iRow) = strSubjectName
           DnyArrayDebitMoney(iRow) = intDebitMoney
           DnyArrayLenderMoney(iRow) = intLenderMoney
           DnyArrayBalanceMoney(iRow) = intEachBalanceMoney
        iRow = iRow + 1
       ADOrs.MoveNext
     Loop
 Else
   MsgBox "没有符合条件的凭证"
 End If
    ADOrs.Close
 End If
   
   
End Sub
'按照科目名称找到所有凭证 FindCredenceByName()
Private Sub FindCredenceByName(intSubjectName As String)
   Dim intEachBalanceMoney As Integer
   Dim iRow As Integer
   Dim ADOrs As New Recordset
   Dim rs As New Recordset
   
   Set rs.ActiveConnection = ADOcn
   strFindCredenceNum = "select count(凭证号) as num_凭证号 from pzls where 科目名称='" + intSubjectName + "'and 记账标志=0 "
   rs.Open strFindCredenceNum
   
   
   numCredence = rs.Fields("num_凭证号") - 1 '读取查出的凭证的数量,减1,作为动态数组上界
If numCredence = -1 Then
      MsgBox "没有符合条件的凭证"
Else
   ReDim DnyArrayCredenceID(numCredence) As Integer   '重新定义动态数组维数,存储凭证号
   ReDim DnyArraySubjectName(numCredence) As String  '重新定义动态数组维数,存储科目名称
   ReDim DnyArrayDebitMoney(numCredence) As Integer   '重新定义动态数组维数,存储借方金额
   ReDim DnyArrayLenderMoney(numCredence) As Integer   '重新定义动态数组维数,存储贷方金额
   ReDim DnyArrayBalanceMoney(numCredence) As Integer  '重新定义动态数组维数,存储余额
   
   Set ADOrs.ActiveConnection = ADOcn
   strFindCredence = "select 凭证号,科目名称,借方金额,贷方金额 from pzls where 科目名称='" + intSubjectName + "'and 记账标志=0 order by 日期"
   ADOrs.Open strFindCredence
   
  If Not ADOrs.EOF Then
     Do While Not ADOrs.EOF
         intCredenceID = ADOrs.Fields("凭证号")
         strSubjectName = ADOrs.Fields("科目名称")
         intDebitMoney = ADOrs.Fields("借方金额")
         intLenderMoney = ADOrs.Fields("贷方金额")
       If HowToAccount(strSubjectName) = True Then '按不同方法计算余额
         Call AcountCostClass(intDebitMoney, intLenderMoney)
       Else
         Call AcountDebtClass(intDebitMoney, intLenderMoney)
       End If
     intEachBalanceMoney = intBalanceMoney '返回的余额值
     
           DnyArrayCredenceID(iRow) = intCredenceID
           DnyArraySubjectName(iRow) = strSubjectName
           DnyArrayDebitMoney(iRow) = intDebitMoney
           DnyArrayLenderMoney(iRow) = intLenderMoney
           DnyArrayBalanceMoney(iRow) = intEachBalanceMoney
        iRow = iRow + 1
       ADOrs.MoveNext
     Loop
   Else
    MsgBox "没有符合条件的凭证"
   End If
   ADOrs.Close
End If
   
   
End Sub
'判断是成本、资产类科目还是负债、所有者权益、损益类科目的函数HowToAccount(TypeOfSubject)
   Private Function HowToAccount(SubjectName As String) As Boolean
     Dim ADOrs As New Recordset
     Set ADOrs.ActiveConnection = ADOcn
     strFindSebjectType = "select 科目类别 from kmzd where 科目名称='" + SubjectName + "'"
     ADOrs.Open strFindSebjectType
     
     If ADOrs.Fields("科目类别") = 资产 Or ADOrs.Fields("科目类别") = 成本 Then
        HowToAccount = True
     Else
        HowToAccount = False
     End If
   End Function
'计算成本、资产类科目的函数 AcountCostClass()
   Private Sub AcountCostClass(DebitMoney As Integer, LenderMoney As Integer)
     intBalanceMoney = DnyArrayBalanceMoney(iRow) + DebitMoney - LenderMoney
   
   End Sub
'计算负债、所有者权益、损益类科目的函数 AcountDebtClass()
   Private Sub AcountDebtClass(DebitMoney As Integer, LenderMoney As Integer)
     intBalanceMoney = DnyArrayBalanceMoney(iRow) - DebitMoney + LenderMoney
   
   End Sub
'安全性检查
'检查数字是否太长
 Public Function checkLength(Inpara As String) As Boolean
    If Val(Inpara) > 9999999999# Then
      checkLength = False
    End If
 End Function
'防sql注入
 Public Function checkSqlFlag(Inpara As String)
    If InStr(Inpara, "'") <> 0 Then
      checkSqlFlag = Replace(Inpara, "'", "")
    Else
      checkSqlFlag = Inpara
    End If
 End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -