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

📄 frmcalcscript.frm

📁 金算盘软件代码
💻 FRM
字号:
VERSION 5.00
Object = "{F6125AB1-8AB1-11CE-A77F-08002B2F4E98}#2.0#0"; "MSRDC20.OCX"
Begin VB.Form frmCalcScript 
   Caption         =   "计算底稿"
   ClientHeight    =   2085
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5160
   KeyPreview      =   -1  'True
   LinkTopic       =   "Form2"
   MDIChild        =   -1  'True
   ScaleHeight     =   2085
   ScaleWidth      =   5160
   Begin VB.ComboBox cboPeriod 
      Height          =   300
      Left            =   1845
      Style           =   2  'Dropdown List
      TabIndex        =   4
      Top             =   45
      Width           =   1305
   End
   Begin MSRDC.MSRDC datItem 
      Height          =   375
      Left            =   2520
      Top             =   960
      Visible         =   0   'False
      Width           =   1200
      _ExtentX        =   2117
      _ExtentY        =   661
      _Version        =   393216
      Options         =   0
      CursorDriver    =   0
      BOFAction       =   0
      EOFAction       =   0
      RecordsetType   =   1
      LockType        =   3
      QueryType       =   0
      Prompt          =   3
      Appearance      =   1
      QueryTimeout    =   30
      RowsetSize      =   100
      LoginTimeout    =   15
      KeysetSize      =   0
      MaxRows         =   0
      ErrorThreshold  =   -1
      BatchSize       =   15
      BackColor       =   -2147483643
      ForeColor       =   -2147483640
      Enabled         =   -1  'True
      ReadOnly        =   0   'False
      Appearance      =   -1  'True
      DataSourceName  =   ""
      RecordSource    =   ""
      UserName        =   ""
      Password        =   ""
      Connect         =   ""
      LogMessages     =   ""
      Caption         =   "MSRDC1"
      BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
         Name            =   "宋体"
         Size            =   9
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
   End
   Begin VB.TextBox txtMethod 
      Alignment       =   2  'Center
      BackColor       =   &H80000004&
      Height          =   285
      Left            =   3195
      Locked          =   -1  'True
      TabIndex        =   3
      Text            =   "计算方法:移动平均"
      Top             =   45
      Width           =   1725
   End
   Begin VB.CommandButton cmdPrint 
      Height          =   350
      Left            =   90
      Style           =   1  'Graphical
      TabIndex        =   2
      Tag             =   "1012"
      Top             =   1680
      UseMaskColor    =   -1  'True
      Width           =   1215
   End
   Begin VB.PictureBox picGrid 
      Height          =   975
      Left            =   90
      ScaleHeight     =   915
      ScaleWidth      =   1785
      TabIndex        =   1
      Top             =   510
      Width           =   1845
   End
   Begin VB.Label lblPeriod 
      AutoSize        =   -1  'True
      Caption         =   "会计期间"
      Height          =   180
      Left            =   1065
      TabIndex        =   5
      Top             =   105
      Width           =   720
   End
   Begin VB.Label lblItem 
      AutoSize        =   -1  'True
      Caption         =   "商品"
      Height          =   180
      Left            =   75
      TabIndex        =   0
      Top             =   105
      Width           =   360
   End
End
Attribute VB_Name = "frmCalcScript"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 成本计算底稿
' 作者:唐维勇
' 日期:1998.7.17
'
' 对于移动平均、先进先出、后进先出、批次法可查看成本计算底稿
' 移动平均:
'     底稿根据商品期初和本期商品明细生成。
'     生成查询:QItemMoveScript
' 先进先出、后进先出、批次法
'     底稿根据商品成本批次生成
'     生成查询:QItemFIFOScript
'     生成查询:QItemLIFOScript
'     生成查询:QItemSingleScript
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit

Private WithEvents mclsMainControl As MainControl                  '主控对象
Attribute mclsMainControl.VB_VarHelpID = -1
Private WithEvents mclsGrid As TableGrid                            'Grid对象
Attribute mclsGrid.VB_VarHelpID = -1
Private WithEvents mclsSubClassform As SubClass32.SubClass
Attribute mclsSubClassform.VB_VarHelpID = -1

Private Const mViewID = 89                                         '视图号
Private Const HelpID = 13005

Private Const mlngFormMinWidth = 500                               '窗体最小尺寸
Private Const mlngFormMinHeight = 300
Private Const mlngLeft = 50
Private Const mlngTop = 420
Private Const mlngBottomHeight = 75

Private mstrMethodCode As String                                    '计算方法代码
Private mlngItemID As Long                                          '指定商品
Private mintYear As Integer
Private mbytPeriod As Integer

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        外部方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'设置查询商品、成本方法、开始日期、结束日期
Public Sub SetParameters(ByVal lngItemID As Long, ByVal strItemName As String, _
    ByVal intYear As Integer, ByVal bytPeriod As Integer, ByVal strMethodCode As String, ByVal strDate As String)
    Me.Hide
    mintYear = intYear
    mbytPeriod = bytPeriod
    mlngItemID = lngItemID
    lblItem.Caption = strItemName
    txtMethod.Text = MethodName(strMethodCode)
    InitPeriod
    RefreshGrid
    Me.Show
    Refresh
End Sub



'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        私有方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'生成计算底稿结果集
Private Function GetList() As rdoResultset
    Dim recResultset As rdoResultset
    Dim strSql As String
    Dim errNo As Long
    Dim dtmStart As Date
    
    On Error GoTo errHandle
    
    strSql = "SELECT 0 As ID," & mclsGrid.ListSet.SelectOfSql _
        & " " & mclsGrid.ListSet.FromOfSql _
        & " WHERE " & mclsGrid.ListSet.WhereOfSql _
        & " AND CostScript.lngItemID=" & mlngItemID _
        & " AND CostScript.intYear=" & gclsBase.AccountYear _
        & " AND CostScript.bytPeriod=" & mbytPeriod & " ORDER BY lngOrderID"
    If txtMethod.Text = "移动平均" Then
        gclsBase.DateOfPeriod mintYear, mbytPeriod, dtmStart
        strSql = Replace(strSql, "[BEGINDATE]", Format(dtmStart, "yyyy-mm-dd"))
    End If
    Set GetList = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    Exit Function
    
errHandle:
    errNo = Errors.ErrorsDeal(True, Me)
    Select Case errNo
    Case edtResume: Resume
    Case edtResumeNext: Resume Next
    Case edtCanNotKnown
        ShowMsg hWnd, "程序出错:" & Err.Description, vbOKOnly + vbCritical, Caption
    End Select
    Set GetList = Nothing
End Function

Private Sub InitPeriod()
    Dim strSql As String
    Dim recPeriod  As rdoResultset
    
    cboPeriod.Clear
    strSql = "SELECT intYear,bytPeriod FROM AccountPeriod " _
        & "WHERE strStartDate>='" & Format(gclsBase.BeginDate, "yyyy-mm-dd") & "' " _
        & "ORDER BY 1,2"
    Set recPeriod = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    Do While Not recPeriod.EOF
        cboPeriod.AddItem recPeriod!intYear & "年" & Format(recPeriod!bytPeriod, "00") & "期"
        If recPeriod!intYear = mintYear And recPeriod!bytPeriod = mbytPeriod Then
            cboPeriod.ListIndex = cboPeriod.ListCount - 1
        End If
        recPeriod.MoveNext
    Loop
    recPeriod.Close
    Set recPeriod = Nothing
End Sub

Private Sub cboPeriod_Click()
    If C2lng(Left(cboPeriod.Text, 4)) <> mintYear Or C2lng(Mid(cboPeriod.Text, 6, 2)) <> mbytPeriod Then
        mintYear = C2lng(Left(cboPeriod.Text, 4))
        mbytPeriod = C2lng(Mid(cboPeriod.Text, 6, 2))
        RefreshGrid
    End If
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        控件 事件、方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub CmdPrint_Click()
    mclsMainControl_FilePrint
End Sub

Private Sub Form_Activate()
    SetHelpID HelpContextID
    gclsSys.CurrFormName = hWnd
    mclsMainControl_ChildActive
End Sub

Private Sub Form_Deactivate()
    frmMain.SetEditUnEnabled
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then
        Unload Me
    End If
End Sub


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        Form 事件、方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Form_Load()
    Me.MousePointer = vbHourglass
    
    Me.HelpContextID = HelpID
    '设置Grid
    With picGrid
        .Visible = True
        .Left = mlngLeft
        .top = mlngTop
    End With
    
    Set mclsSubClassform = New SubClass32.SubClass
    mclsSubClassform.hWnd = Me.hWnd
    mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
    
    '主控对象
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
    
    'Grid对象
    Set mclsGrid = New TableGrid
    mclsGrid.ListSet.ViewId = mViewID
    
    Me.MousePointer = vbDefault
End Sub

Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next

    '保存Grid设置
    Set mclsSubClassform = Nothing
    Set mclsGrid = Nothing
    Set mclsSubClassform = Nothing
    
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
    
End Sub



Private Sub Form_Resize()
    
    On Error Resume Next
    
    If WindowState <> vbMinimized Then
        If WindowState <> vbMaximized And (Left >= Screen.width Or Left + width <= 0) Then
            Left = (Screen.width - width) / 2
        End If
        txtMethod.Left = ScaleWidth - txtMethod.width - ListFormRight
        cboPeriod.Left = txtMethod.Left - cboPeriod.width - 60
        lblPeriod.Left = cboPeriod.Left - lblPeriod.width - 60
        With picGrid
            .Left = ListFormLeft
            .width = ScaleWidth - 2 * mlngLeft
            .Height = ScaleHeight - 2 * mlngBottomHeight - mlngTop - cmdPrint.Height
        End With
        cmdPrint.Left = ListFormLeft
        cmdPrint.top = ScaleHeight - cmdPrint.Height - ListFormBottom
    End If
End Sub

Private Sub mclsMainControl_FilePrint()
    Dim myPrintclass As PrintClass
    mclsGrid.ClearSortColArrow
    Set myPrintclass = New PrintClass
    myPrintclass.PrintNewList gclsBase.BaseDB, mclsGrid.Resultset, mclsGrid.Grid.TableHandle, 72, Me.Caption & Chr(1) & gclsBase.BaseName & Chr(1) & gclsBase.OperatorName
    Set myPrintclass = Nothing
    mclsGrid.AddSortColArrow
End Sub

Private Sub mclsMainControl_FilePrintSetup()
    Dim clsPrintclass As PrintClass
    Set clsPrintclass = New PrintClass
    clsPrintclass.PrintNewSetUp gclsBase.BaseDB, mclsGrid.Grid.TableHandle, , , , 72, Me.Caption & Chr(1) & gclsBase.BaseName & Chr(1) & gclsBase.OperatorName
    Set clsPrintclass = Nothing
End Sub

'处理窗口不能超过最小尺寸
Private Sub mclsSubClassForm_WndProc(Msg As Long, wParam As Long, lParam As Long, Result As Long)
    Dim MinMax As MINMAXINFO

    If Msg = WM_GETMINMAXINFO Then
        CopyMemory MinMax, ByVal lParam, Len(MinMax)
        
        MinMax.ptMinTrackSize.x = mlngFormMinWidth
        MinMax.ptMinTrackSize.y = mlngFormMinHeight
        
        CopyMemory ByVal lParam, MinMax, Len(MinMax)
        Result = 0
    End If
End Sub


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        主控事件
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub mclsMainControl_ChildActive()
    UpdateMenuStatu
End Sub
Private Sub UpdateMenuStatu()
    With frmMain
        .mnuEditCopy.Enabled = False
        .mnuEditEdit.Enabled = False
        .mnuEditNew.Enabled = False
        .mnuEditDel.Enabled = False
        .mnuEditInActive.Enabled = False
        .mnuEditShowAll.Checked = False
        .mnuEditShowAll.Enabled = False
        .mnuEditUse.Enabled = False
        .mnuEditColumn.Enabled = False
        .mnuEditFilter.Enabled = False
        .mnuEditSearch.Enabled = False
        .mnuEditNotepad.Enabled = False
        .mnuEditShowList.Enabled = False
        .mnuEditUse.Enabled = False
        .mnuFilePrintSetup.Enabled = True
        .mnuFilePrint.Enabled = True
        .mnuToolRefresh.Enabled = False
        .SetToolBar
    End With
End Sub

'************************************************************************************
'*
'*  TableGrid 借口
'*
'************************************************************************************
Private Sub mclsGrid_RefreshRecord(blnSucceed As Boolean)
    Set mclsGrid.Resultset = GetList(mstrMethodCode)
    blnSucceed = True
End Sub

Private Sub RefreshGrid()
    If Trim(txtMethod.Text) = "移动平均" Then
        mclsGrid.SetFormatPara 10, 4, "-", 7, -1
        mclsGrid.SetFormatPara 12, 6, "-", 9, -1
        mclsGrid.SetFormatPara 11, 12, "/", 10, , gclsBase.PriceDec
    End If
    mclsGrid.ColOfs = 1
    Set mclsGrid.Resultset = GetList()
    mclsGrid.hWnd = picGrid.hWnd
    mclsGrid.RefreshGrid
End Sub

Private Sub mclsGrid_AfterRefreshGrid()
    If Trim(txtMethod.Text) <> "移动平均" Then
        mclsGrid.Grid.ColWidth(10) = 0
        mclsGrid.Grid.ColWidth(11) = 0
        mclsGrid.Grid.ColWidth(12) = 0
    Else
        If mclsGrid.Grid.ColWidth(10) = 0 Then
            mclsGrid.Grid.ColWidth(10) = mclsGrid.Grid.ColWidth(7)
        End If
        If mclsGrid.Grid.ColWidth(11) = 0 Then
            mclsGrid.Grid.ColWidth(11) = mclsGrid.Grid.ColWidth(8)
        End If
        If mclsGrid.Grid.ColWidth(12) = 0 Then
            mclsGrid.Grid.ColWidth(12) = mclsGrid.Grid.ColWidth(9)
        End If
    End If
End Sub

⌨️ 快捷键说明

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