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

📄 base.cls

📁 金算盘软件代码
💻 CLS
📖 第 1 页 / 共 5 页
字号:
       If UCase(strDriver) = UCase("Oracle ODBC Driver") Then
              mstrCon = "uid=" & mUID & ";pwd=" & sPWD & ";DBQ=" & strConnect & ";Driver={" & strDriver & "};"
              Set mvarBaseDB = mvarBaseWorkSpace.OpenConnection(dsName:="", _
                     Prompt:=rdDriverNoPrompt, _
                     Connect:=mstrCon)
       Else
              mstrCon = "uid=" & mUID & ";pwd=" & sPWD & "@" & strConnect & ";" & "Driver={" & strDriver & "};"
              Set mvarBaseDB = mvarBaseWorkSpace.OpenConnection(dsName:="", _
                     Prompt:=rdDriverNoPrompt, _
                     Connect:=mstrCon)
       End If
        On Error GoTo ErrHandle
    Else
       BaseFile = ""
       OpenDatabase = False
       Exit Function
    End If
    
    strSql = "ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'"
    mvarBaseDB.Execute strSql
    strSql = "Select * From Business"
    Set rstVersion = BaseDB.OpenResultset(strSql, rdOpenStatic)
    #If conDebug = 0 Then
        With rstVersion
           If Not .EOF Then
              If UCase(!strVer) <> UCase(mstrVersion) Then
                 ShowMsg frmMain.hwnd, "升级版不能打开老帐套!", vbQuestion + vbOKOnly, App.title
                 Set mvarBaseDB = Nothing
                 frmMain.mnuWindowDiagram.Checked = False
                 Exit Function
              End If
           End If
        End With
        
        If InStr(1, UCase(StrFileName), "SYSBASE") > 0 Then
           OpenDatabase = True
           Exit Function
        End If
    #End If
    
    '打开上机日志
    Set grecLog = BaseDB.OpenResultset("SELECT * FROM Log", rdOpenDynamic, rdConcurValues)

    BaseFile = StrFileName
    BaseType = conBaseType
    GetBaseInfo
    frmMain.Caption = App.title + ":" + BaseFile
    If IsLogin Then
        If Not frmLogin.LogIn Then
            CloseDatabase
            OpenDatabase = False
            Exit Function
        End If
        SetMenuRight
        frmMain.UpdateMenuStatus
        frmMain.UpdateStatus
    End If
    
    #If conVersionType = 4 Then
       If CDate(mvarBaseDate) > CDate("1998-12-30") Then
           ShowMsg frmMain.hwnd, "实达专用版试用期不能超过1998年12月30日", vbOKOnly, App.title
           CloseDatabase
           Exit Function
       End If
    #End If
    
    OpenDatabase = True
    
    If IsEditMnu Then
        UpdateMRU StrFileName
    End If
    
    Exit Function

ErrHandle:
    edtErrReturn = Errors.ErrorsDeal(, , ErrNum)
    
    If edtErrReturn = edtResume Then
         Resume
    End If
    
    BaseFile = ""
    OpenDatabase = False
    Exit Function
Err1:
    If Err.Number = 40002 Then
        If lngTime = 0 Then
            lngTime = 1
            Resume ReOpen
        Else
            blnShowWindow = True
            If ShowMsg(frmMain.hwnd, "因为帐套“" & StrFileName & "”已被破坏或者Oracle的连接字或ODBC驱动程序的选择错误等原因导致导致连接Oracle数据库失败,是否要改变Oracle的连接字或ODBC驱动程序重试?", vbYesNo, App.title) = IDYES Then
                Resume ReOpen
            End If
        End If
    End If
    
    Err.Clear
    BaseFile = ""
    OpenDatabase = False
End Function

Public Sub GetBaseInfo()
  Dim rstCur As rdoResultset
  Dim rstBaseInfo As rdoResultset
  Dim strQuanFat As String, strNatureFat As String, strPriceFat As String, strSql As String
  Dim strKey As String, strTemp As String
  
      On Error Resume Next
      Set rstCur = mvarBaseDB.OpenResultset("Select * From Currencys Order By lngCurrencyID", rdOpenStatic)
      With rstCur
         If Not .EOF Then
             mvarNaturalCurId = !lngCurrencyID
             mvarNaturalCurCode = !strCurrencyCode
             mvarNaturalCurName = !strCurrencyName
             mvarNaturalCurDec = !bytCurrencydec
             mvarNaturalRateDec = !bytRateDec
             strNatureFat = GetFormat(mvarNaturalCurDec, True)
         End If
         Set mcolCurrencyDec = New Collection
         Set mcolRateDec = New Collection
         Do While Not .EOF
            mcolCurrencyDec.Add .rdoColumns("bytCurrencyDec").Value, Trim(.rdoColumns("strCurrencyName").Value)
            mcolRateDec.Add .rdoColumns("bytRateDec").Value, .rdoColumns("strCurrencyName").Value
            .MoveNext
         Loop
      End With
      
      Set rstCur = Nothing
      
      Set rstBaseInfo = mvarBaseDB.OpenResultset("Select Business.*,Trade.strTradeName From Business,Trade Where Business.lngTradeID=Trade.lngTradeID", rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
             mblnNoOrder = !blnVoucher
             mstrTrade = !strTradeName
             mblnIsControl = !blnIsControl
             mvarQuantityDec = !bytQuantityDec
             mvarPriceDec = !bytPriceDec
             mvarManager = !strManager
             mstrAccountSys = !strAccountSystem
             
             strQuanFat = GetFormat(mvarQuantityDec, True)
             strPriceFat = GetFormat(mvarPriceDec, True)
             On Error GoTo 0
             mvarCustomerAddress = !strBillToAddress
             mvarCustomerName = IIf(IsNull(!StrUserName), "", !StrUserName)
             If Not IsNull(!strStartDate) Then
                mvarBeginDate = CDate(!strStartDate)
             Else
                mvarBeginDate = Date
             End If
         End If
      End With
      Set rstBaseInfo = Nothing
      
'      strSql = "Update NumFormat Set strNatrueFormat='" & strNatureFat & "',strQuantityFormat='" & strQuanFat & _
'               "',strPriceFormat='" & strPriceFat & "'"
'      ExecSQL strSql
'
'      strSql = "Select * From NumFormat"
'      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurValues)
'      With rstBaseInfo
'        Do While Not .EOF
'           .Edit
'              strTemp = !strFormat
'              strTemp = strReplace(strTemp, "#0", "99999999999999")
'              !strFormat = strTemp
'           .Update
'           .MoveNext
'        Loop
'      End With
'      Set rstBaseInfo = Nothing
      
      Set rstBaseInfo = mvarBaseDB.OpenResultset("Select intYear From AccountYear", rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            .MoveFirst
            mintBeginYear = !intYear
         End If
      End With
      Set rstBaseInfo = Nothing
      
      strSql = " Select strStartDate,strEndDate,lngCloseID,intYear,bytPeriod From AccountPeriod Order By intYear,bytPeriod"
      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            mstrFirstDate = Format(!strStartDate, "yyyy-MM-dd")
            .MoveLast
            mvarEndDate = !strEndDate
            Set mcolPeriodClose = New Collection
            Set mcolPeriodBegin = New Collection
            Set mcolPeriodEnd = New Collection
            Set mcolYear = New Collection
            Set mcolPeriod = New Collection
            mbytBeginPeriod = 0
            mintMaxClosedYear = 0
            mbytMaxClosedPeriod = 0
            .MoveFirst
            Do While Not .EOF
                If !strStartDate <= Format(mvarBeginDate, "yyyy-mm-dd") And !strEndDate >= Format(mvarBeginDate, "yyyy-mm-dd") Then
                   mbytBeginPeriod = !bytPeriod
                End If
                strKey = !intYear & Format(!bytPeriod, "00")
                If .rdoColumns("lngCloseID").Value <> 0 Then
                   mintMaxClosedYear = !intYear
                   mbytMaxClosedPeriod = !bytPeriod
                End If
                mcolPeriodClose.Add .rdoColumns("lngCloseID").Value, strKey
                mcolPeriodBegin.Add .rdoColumns("strStartDate").Value, strKey
                mcolPeriodEnd.Add .rdoColumns("strEndDate").Value, strKey
                mcolYear.Add .rdoColumns("intYear").Value, strKey
                mcolPeriod.Add .rdoColumns("bytPeriod").Value, strKey
                .MoveNext
            Loop
         End If
      End With
      Set rstBaseInfo = Nothing

      strSql = " Select * From Setting Where strKey='单据号不可修改'"
      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            If UCase(!strSetting) = UCase("True") Then
               mblnAutoNo = True
            Else
               mblnAutoNo = False
            End If
         Else
            mblnAutoNo = False
         End If
      End With
      Set rstBaseInfo = Nothing
      
      strSql = " Select * From Setting Where strKey='原始非控制科目模式'"
      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            If UCase(!strSetting) = UCase("True") Then
               mblnBaseNoControl = True
            Else
               mblnBaseNoControl = False
            End If
         Else
            mblnBaseNoControl = True
         End If
      End With
      Set rstBaseInfo = Nothing
      
      strSql = " Select * From Setting Where strKey='单据号不可修改'"
      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            If UCase(!strSetting) = UCase("True") Then
               mblnAutoNo = True
            Else
               mblnAutoNo = False
            End If
         Else
            mblnAutoNo = False
         End If
      End With
      Set rstBaseInfo = Nothing
      
      strSql = " Select * From Setting Where strKey='修改机制凭证'"
      Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
      With rstBaseInfo
         If Not .EOF Then
            mbytEditMVoucher = IIf(IsNull(!strSetting), 1, !strSetting)
         Else
            mbytEditMVoucher = 1
         End If
      End With
      
      '得到社保参数
      #If conHos Then
            strSql = "Select * From Setting Where lngModuleID=16 And (strSection='缴费比例' Or strSection='统筹基金起付标准')"
            Set rstBaseInfo = mvarBaseDB.OpenResultset(strSql, rdOpenStatic)
            With rstBaseInfo
               Do While Not .EOF
                  Select Case !strKey
                  Case "单位为退休人员缴纳比例"
                      mintToRetireRate = !strSetting
                  Case "单位为在职人员缴纳比例"
                      mintToWorkRate = !strSetting
                  Case "在职人员个人缴纳比例"
                      mintPersonRate = !strSetting
                  Case "划入退休人员个人帐户比例"
                      mintRetireRate = !strSetting
                  Case "年平均"
                      mdblFundAverage = !strSetting
                  Case "最高限额"
                      mdblFundLimit = !strSetting
                  End Select
                  .MoveNext
               Loop
            End With
      #End If
      Set rstBaseInfo = Nothing
End Sub

Public Function GetFormat(ByVal intDec As Integer, Optional IsForSql As Boolean = False) As String
  Dim intCount As Integer
  
   If intDec <= 0 Then
      GetFormat = ""
      Exit Function
   Else
      If IsForSql Then
         '位数需增加
         GetFormat = "999999999990."
      Else
         GetFormat = "#0."
      End If
   End If
   For intCount = 1 To intDec
        GetFormat = GetFormat & "0"
   Next intCount
End Function

Public Function GetSqlFormat(ByVal intDec As Integer) As String
  Dim intCount As Integer
  
   If intDec <= 0 Then
      GetSqlFormat = ""
      Exit Function
   Else
      GetSqlFormat = "99999999999990."
   End If
   For intCount = 1 To intDec
        GetSqlFormat = GetSqlFormat & "0"
   Next intCount
End Function

'取指定日期对应的会计期间(可同时返回其起止日期)
Public Function PeriodOfDate(ByVal dDate As Date, Optional dBegin As Date, Optional dEnd As Date) As Integer
   Dim rstPeriod As rdoResultset
   Dim intYear As Integer
   Dim blnOverBegin As Boolean
   
   intYear = FYearOfDate(dDate)
   Set rstPeriod = BaseDB.OpenResultset("Select * from AccountPeriod Where intYear=" & intYear & " Order By bytPeriod", rdOpenStatic)
   blnOverBegin = False
   With rstPeriod

⌨️ 快捷键说明

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