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

📄 frmcalcsingle.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 2 页
字号:
            For lngRow = .FixedRows To .Rows - 1
                If CLng(.TextMatrix(lngRow, mlngColOutID)) = OutID Then
                    Exit For
                End If
            Next lngRow
        End If
        If lngRow < .Rows Then
            Do While lngRow < .Rows
                If CLng(.TextMatrix(lngRow, mlngColOutID)) <> OutID Or CLng(.TextMatrix(lngRow, mlngColInID)) = InID _
                    Or CLng(.TextMatrix(lngRow, mlngColInID)) = 0 Then
                    Exit Do
                Else
                    lngRow = lngRow + 1
                End If
            Loop
            '如果没有对应的出库ID,在Grid中增加一条记录
            If lngRow >= .Rows Then
                .AddItem OutID & vbTab & 0, lngRow
            Else
                If CLng(.TextMatrix(lngRow, mlngColOutID)) <> OutID Then
                    .AddItem OutID & vbTab & 0, lngRow
                End If
            End If
            '指定出库商品的对应入库资料
            If CLng(.TextMatrix(lngRow, mlngColOutID)) = OutID And CLng(.TextMatrix(lngRow, mlngColInID)) = 0 Then
                .TextMatrix(lngRow, mlngColInID) = InID
                .TextMatrix(lngRow, 8) = strDate
                .TextMatrix(lngRow, 9) = strType
                .TextMatrix(lngRow, 10) = strNo
            End If
            .TextMatrix(lngRow, 11) = dblQuantity
            If dblQuantity <> 0 Then
                .TextMatrix(lngRow, 12) = dblAmount / dblQuantity
            Else
                .TextMatrix(lngRow, 12) = 0
            End If
            .TextMatrix(lngRow, 13) = dblAmount
            '重新格式入库数量、单价、金额的显示格式
            mclsGrid.FormatCell lngRow, 11, 13
        End If
    End With
    gclsBase.ExecSQL "UPDATE Item SET strReCalcCost='" & Format(mdtmStart, "yyyy-mm-dd") _
        & "' WHERE lngItemID=" & mlngItemID & " AND strReCalcCost>'" & Format(mdtmStart, "yyyy-mm-dd") & "'"
    Exit Sub
    
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
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        私有方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'生成列表结果集
'调用查询 QItemOutSingle 查询商品成本批次
Private Function GetList() As rdoResultset
    Dim errNo As Long
    Dim strSql As String
    On Error GoTo ErrHandle
    
    strSql = "SELECT OutActivityDetail.lngActivityDetailID,NVL(ItemCostDetail.lngInActivityDetailID,0) As ID," _
            & mclsGrid.ListSet.SelectOfSql & " " _
            & mclsGrid.ListSet.FromOfSql _
            & " WHERE " & mclsGrid.ListSet.WhereOfSql
    strSql = strSql & " AND OutActivity.strDate>='" & Format(mdtmStart, "yyyy-mm-dd") & "' " _
            & "AND OutActivity.strDate<='" & Format(mdtmEnd, "yyyy-mm-dd") & "' " _
            & "AND (OutActivityDetail.dblQuantity>0 and OutActivity.lngActivityTypeID IN (11,13,16,15,19,21,22,31) " _
            & "OR OutActivityDetail.dblQuantity<0 AND OutActivity.lngActivityTypeID IN  (1,3,5,9,8,10,30,32)) " _
            & "AND OutActivityDetail.lngItemID=" & mlngItemID & " ORDER BY OutActivityDetail.lngActivityDetailID"

    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 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
    
    With picGrid
        .Visible = False
        .Left = mintLeft
        .top = mintTop
    End With
    With msgHead
        .top = 0
        .Left = 0
    End With
    With msgBody
        .top = msgHead.top + msgHead.Height
        .Left = 0
        .SelectionMode = flexSelectionByRow
    End With
    
    'Grid对象
    Set mclsGrid = New MutiGrid
    mclsGrid.ListSet.ViewId = mViewID
    
    'Form的钩子,处理窗体最小尺寸
    Set mclsSubClassform = New SubClass32.SubClass
    mclsSubClassform.hWnd = Me.hWnd
    mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
    
    '主控对象
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
    Me.MousePointer = vbDefault
End Sub

'关闭成本批次前,检查指定批次窗口是否显示
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If mblnExistChild And UnloadMode <= 1 Then
        ShowMsg hWnd, "请先关闭指定成本批次窗口!", vbOKOnly + vbExclamation, Caption
        Cancel = 1
    End If
End Sub

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

    Set mclsGrid = Nothing
    Set mclsSubClassform = Nothing
    
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
End Sub


Private Sub Form_Activate()
    
    gclsSys.CurrFormName = hWnd
    SetHelpID HelpContextID
    '如果没有初始Grid
    If mclsGrid.ListSet.ViewId = 0 Then
        mclsGrid.ListSet.ViewId = mViewID
        mblnReCalc = True
    Else
'        If mlngItemID <> frmCalcCost.msgBody.TextMatrix(frmCalcCost.msgBody.Row, 0) Then
'            mlngItemID = frmCalcCost.msgBody.TextMatrix(frmCalcCost.msgBody.Row, 0)
'            lblItem.Caption = frmCalcCost.msgBody.TextMatrix(frmCalcCost.msgBody.Row, frmCalcCost.mlngColItemCode)
'            mblnReCalc = True
'        End If
    End If
    
    If mblnReCalc Then
        Me.MousePointer = vbHourglass
        mblnReCalc = False
        msgBody.Rows = 2
        msgBody.FixedCols = 0
        
        msgBody.FixedRows = 1
        msgBody.RowHeight(0) = 0
        
        Set datItem.Resultset = GetList()
        If Not datItem.Resultset Is Nothing Then
            Set mclsGrid.Grid = msgBody
            Set mclsGrid.HeadGrid = msgHead
            mclsGrid.ColOfs = 2
            msgBody.ColWidth(1) = 0
            mclsGrid.SetupStyle
            mclsGrid.ListSetToGrid
            mclsGrid.SetTitle datItem.Resultset
            
            datItem.Resultset.Close
        Else
            msgBody.Cols = 2
        End If
        
        picGrid.Visible = True
        Me.MousePointer = vbDefault
        msgBody_RowColChange
    End If
    mclsMainControl_ChildActive
End Sub

Private Sub Form_Resize()
    Dim lngCnt As Long
    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
        cmdList(0).Left = ScaleWidth - cmdList(0).width - 2 * mintLeft
        For lngCnt = 1 To 4
            cmdList(lngCnt).Left = cmdList(0).Left
        Next lngCnt
        
        With picGrid
            .width = ScaleWidth - 5 * mintLeft - cmdList(0).width
            .Height = ScaleHeight - mintBottomHeight - mintTop
        End With
        msgHead.width = picGrid.ScaleWidth
        msgBody.width = picGrid.ScaleWidth
        msgBody.Height = picGrid.ScaleHeight - msgBody.top
        lblItem.Left = ListFormLeft
        mclsGrid.FormResize
    End If
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

'加载出库商品的入库资料(由Grid类显示刷新时自动调用)
Private Sub mclsGrid_BeforeRefresh(lngRow As Long)
    If lngRow > msgBody.FixedRows Then
        With msgBody
            If .TextMatrix(lngRow, 0) = .TextMatrix(lngRow - 1, 0) Then
                .TextMatrix(lngRow, 2) = ""
                .TextMatrix(lngRow, 3) = ""
                .TextMatrix(lngRow, 4) = ""
                .TextMatrix(lngRow, 5) = ""
                .TextMatrix(lngRow, 6) = ""
                .TextMatrix(lngRow, 7) = ""
            End If
        End With
    End If
End Sub


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'        控件方法
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdList_Click(Index As Integer)
    Dim lngRow As Long
    Dim lngOutID As Long
    Dim lngItemID As Long
    
    Select Case Index
    Case 0  '确定
        Unload Me
    Case 1  '取消
        Unload Me
    Case 2  '关联
        If msgBody.Row < msgBody.FixedRows Then Exit Sub
    
        With msgBody
            If .Row >= .FixedRows Then
                BillPublic.ShowBill 11, .TextMatrix(.Row, mlngColOutID)
            End If
        End With
    Case 3  '选择批次
        If msgBody.Row < msgBody.FixedRows Or Not mclsGrid.RowSelected Then Exit Sub
        If Not ExclusiveIn(Caption, mclsMainControl.LogID, "不能指定批次,因为其他用户也在进行本操作!") Then Exit Sub
        If CLng(msgBody.TextMatrix(msgBody.Row, mlngColOutID)) > 0 Then
            With msgBody
                lngOutID = CLng(.TextMatrix(.Row, mlngColOutID))
                For lngRow = .Row To .FixedRows + 1 Step -1
                    If CLng(.TextMatrix(lngRow - 1, mlngColOutID)) <> lngOutID Then
                        Exit For
                    End If
                Next lngRow
                lngOutID = .TextMatrix(lngRow, mlngColOutID)
                '设置出库商品,数量
                frmCalcSingleChoice.SetParameters lngOutID, mlngItemID, _
                    lblItem.Caption, Abs(CLng(.TextMatrix(lngRow, mlngColOutQuantity)))
                '显示指定批次窗口
'                frmCalcSingleChoice.Show vbModal
            End With
        End If
    Case 4  '取消批次
        If msgBody.Row < msgBody.FixedRows Or Not mclsGrid.RowSelected Then Exit Sub
        If Not ExclusiveIn(Caption, mclsMainControl.LogID, "不能取消批次,因为其他用户也在进行本操作!") Then Exit Sub
        lngOutID = CLng(msgBody.TextMatrix(msgBody.Row, mlngColOutID))
        ClearInDetail lngOutID
    End Select
End Sub

Private Sub msgBody_Click()
    msgBody_RowColChange
End Sub

'处理命令按扭是否有效
Private Sub msgBody_RowColChange()
    Dim lngOutID As Long
    
    With msgBody
        If .RowSel >= .FixedRows And mclsGrid.RowSelected Then
            lngOutID = .TextMatrix(.RowSel, mlngColOutID)
        End If
        If lngOutID > 0 Then
            cmdList(2).Enabled = True
            cmdList(3).Enabled = True
            If .TextMatrix(.Row, mlngColInID) Then
                cmdList(4).Enabled = True
            Else
                cmdList(4).Enabled = False
            End If
        Else
            cmdList(2).Enabled = False
            cmdList(3).Enabled = False
            cmdList(4).Enabled = False
        End If
    End With
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
        .mnuFilePrint.Enabled = False
        .mnuToolRefresh.Enabled = False
        .SetToolBar
    End With
End Sub


⌨️ 快捷键说明

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