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

📄 frmprojectcost.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 3 页
字号:
Private Sub gspEdit_LostFocus()
'在gspEdit控件失去焦点时响应的事件
    If Val(gspEdit.Text) > 9999 Then
        gspEdit.Text = 9999
    End If
    gspEdit.Text = Val(gspEdit.Text)
End Sub

Private Sub mclsGrid1_BeforeEdit(blnCancel As Boolean)
    If msgGrid.Row = 0 Then
        Set mclsGrid1.EditText = Nothing
    Else
        Set mclsGrid1.EditText = txtEdit
    End If
End Sub

Private Sub mclsGrid1_BeforeSave(blnCancel As Boolean)
'离开TEXT输入框存盘前响应的动作
    Call SumGrid(Val(txtEdit.Text))
End Sub

Private Sub mclsGrid1_DataValid(blnCancel As Boolean)
'离开TEXT输入框时响应的事件
    Dim j As Integer
    Dim blnIsEdit As Boolean
    
    blnIsEdit = False
    With msgGrid
        If .TextMatrix(0, .col) = "本次开单" Then
            If Val(txtEdit.Text) > Val(.TextMatrix(.Row, 2)) Then
                blnCancel = True
                ShowMsg Me.hwnd, "本次开单金额不能大于未开单金额", vbInformation, Me.Caption
                txtEdit.Text = .TextMatrix(.Row, 2)
            End If
            mlngCol = .col
            blnIsEdit = True
            txtEdit.Text = Format(txtEdit.Text, "###,###,###.00")
        End If
'        If Val(.TextMatrix(.Row, .col)) > 0 Or (Val(.TextMatrix(.Row, .col)) = 0 And Val(txtEdit.Text) > 0) And blnIsEdit Then
'            .TextMatrix(.Row, 6) = ""
'        End If
        If CDbl(txtEdit.Text) <> 0 Then
           .TextMatrix(.Row, 6) = "√"
        Else
           .TextMatrix(.Row, 6) = ""
        End If
    End With
End Sub

'鼠标单击Grid响应的事件
Private Sub msgGrid_Click()
Dim i As Integer, p As Integer
Dim m As Integer, n As Integer, XX As Double, temp As Double
'On Error GoTo Err

    ytextRow = msgGrid.Row
    ytextCol = msgGrid.col
    If ytextRow > 0 And ytextRow < msgGrid.Rows Then
         i = intfixl + 1
         p = i
        '本循环找出本次调拨所在的列
        While (msgGrid.TextMatrix(0, i) <> "本次开单")
               i = i + 1
        Wend
        While (msgGrid.TextMatrix(0, p) <> "关闭")
               p = p + 1
        Wend
        If (msgGrid.TextMatrix(0, 6) = "选择") And (msgGrid.MouseCol = 6) Then
           If (msgGrid.TextMatrix(ytextRow, 6) = "") And (msgGrid.TextMatrix(ytextRow, p) <> "√") Then          '打√情况
               msgGrid.TextMatrix(ytextRow, 6) = "√"
               XX = getnumber(ytextRow, 2) - getnumber(ytextRow, i)
               msgGrid.TextMatrix(ytextRow, i) = msgGrid.TextMatrix(ytextRow, 2)
                              '总结算金额及数量的更新
               hlb(i).Caption = CStr(CDbl(IIf(Len(hlb(i).Caption) = 0, "0", hlb(i).Caption)) + XX)
           Else
               If (msgGrid.TextMatrix(ytextRow, p) <> "√") Then
                    msgGrid.TextMatrix(ytextRow, 6) = ""       '取消打√(结算)情况
                    hlb(i).Caption = CStr(CDbl(hlb(i).Caption) - getnumber(ytextRow, i))
                    msgGrid.TextMatrix(ytextRow, i) = ""
               End If
           End If
       Else
        With msgGrid
            If .TextMatrix(0, .col) = "关闭" And (msgGrid.MouseCol = p) Then
                If .TextMatrix(ytextRow, .col) = "" Then
                   .TextMatrix(ytextRow, 6) = ""
                    XX = 0 - getnumber(ytextRow, i)
                    msgGrid.TextMatrix(ytextRow, i) = ""
                    hlb(i).Caption = CStr(CDbl(IIf(Len(hlb(i).Caption) = 0, "0", hlb(i).Caption)) + XX)
        '               'hLb(i).Caption = Format((CDbl(hLb(i).Caption) + xx), "###,###,##0.00")
                    .TextMatrix(ytextRow, .col) = "√"
                Else
                    .TextMatrix(ytextRow, .col) = ""
                End If
            End If
        End With
       End If
    End If
End Sub

Private Sub msgGrid_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'鼠标在Grid上移动响应的事件
    Dim intLong As Integer
    With msgGrid
        intLong = Balance.CheckColsedCol(msgGrid, .LeftCol, mintCloseCol)
        If (X < .ColWidth(6) And Y < .Rows * .RowHeight(0) And Y > .RowHeight(0)) Or (X < intLong And Y < .Rows * .RowHeight(0) And X > intLong - .ColWidth(mintCloseCol) And Y > .RowHeight(0)) Then
            .MousePointer = vbCustom
        Else
            .MousePointer = vbDefault
        End If
    End With
End Sub
'确定
Private Sub FinishGrid(isOk As Boolean)
'按‘确定’按钮响应的存盘动作
'isOk=True, 表示存盘后退出窗体;
'isOk=False,表示存盘后不退出窗体;
    Dim dblValue As Double
    Dim strSql As String
    Dim i As Integer
    Dim j As Integer
    Dim blnIsOK As Boolean
    Dim recRecordset As Recordset
    Dim recOneToOther As Recordset
    Dim qrf As QueryDef
    Dim lngID As Long
    With msgGrid
        'Grid为空则退出
        If .Rows = 1 Then
            Exit Sub
        End If
        '查找本次开单列
        j = 6
'        MousePointer = vbHourglass
        Do While j < .Cols
            If Trim(.TextMatrix(0, j)) = "本次开单" Then
                Exit Do
            End If
            j = j + 1
        Loop
'        Strsql = "SELECT PurchaseToBill.* FROM (ItemActivity INNER JOIN ItemActivityDetail ON " _
'            & "ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID) INNER JOIN PurchaseToBill" _
'            & " ON ItemActivityDetail.lngActivityDetailID = PurchaseToBill.lngSaleActivityDetailID " _
'            & "Where ItemActivity.lngActivityID = " & mlngID
'        On Error GoTo Errors1
'        Set qrf = gclsBase.BaseDB.CreateQueryDef("qrf_Calc_Ditail", Strsql)
'        On Error GoTo 0
'        Strsql = "UPDATE qrf_Calc_Ditail,ItemActivityDetail SET ItemActivityDetail.dblCurrBillAmount" _
'            & "=ItemActivityDetail.dblCurrBillAmount-qrf_Calc_Ditail.dblCurrAmount WHERE " _
'            & "ItemActivityDetail.lngActivityDetailID=qrf_Calc_Ditail.lngPurchaseActivityDetailID"
'        gclsBase.BaseDB.Execute Strsql
'        qrf.Close
'        Set qrf = Nothing
'        gclsBase.BaseDB.QueryDefs.Delete "qrf_Calc_Ditail"
'        Strsql = "DELETE PurchaseToBill.* FROM PurchaseToBill INNER JOIN (ItemActivity INNER JOIN " _
'            & "ItemActivityDetail ON ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID) " _
'            & "ON PurchaseToBill.lngSaleActivityDetailID = ItemActivityDetail.lngActivityDetailID" _
'            & " WHERE ItemActivity.lngActivityID=" & mlngID
'        gclsBase.BaseDB.Execute Strsql
        strSql = "SELECT ItemActivityDetail.dblCurrBillAmount," _
            & "ItemActivityDetail.lngActivityDetailID,ItemActivityDetail.dblSettlementQuantity" _
            & " FROM (ItemActivityDetail INNER JOIN ItemActivity ON ItemActivity.lngActivityID" _
            & "=ItemActivityDetail.lngActivityID) INNER JOIN ActivityType ON " _
            & "ActivityType.lngActivityTypeID=ItemActivity.lngActivityTypeID"
        Set recRecordset = gclsBase.BaseDB.OpenRecordset(strSql, dbOpenDynaset)
        If recRecordset.EOF Then
            MousePointer = vbDefault
            Unload Me
            Exit Sub
        Else
            recRecordset.MoveLast
            recRecordset.MoveFirst
        End If
        i = 1
        '开始事务
        gclsBase.BaseWorkSpace.BeginTrans
        '写Grid
        Call Balance.WriteSaleOrPurchaseGrid(msgGrid, ToFormName.grdCol, True, j, gspEdit.Text, 5, ToFormName)
        '调用存盘函数
        If ToFormName.grdCol.Rows > 1 Then
          If Not ToFormName.SaveBill() Then
            MousePointer = vbDefault
            ShowMsg Me.hwnd, "销售单录入有误,请修改", vbInformation, Me.Caption
            Unload Me
            Exit Sub
          End If
        End If
'        If isOk = True Then
        strSql = "SELECT PurchaseToBill.* FROM (ItemActivity INNER JOIN ItemActivityDetail ON " _
            & "ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID) INNER JOIN PurchaseToBill" _
            & " ON ItemActivityDetail.lngActivityDetailID = PurchaseToBill.lngSaleActivityDetailID " _
            & "Where ItemActivity.lngActivityID = " & mlngID
        On Error GoTo Errors1
        Set qrf = gclsBase.BaseDB.CreateQueryDef("qrf_Calc_Ditail", strSql)
        On Error GoTo 0
        strSql = "UPDATE qrf_Calc_Ditail,ItemActivityDetail SET ItemActivityDetail.dblCurrBillAmount" _
            & "=ItemActivityDetail.dblCurrBillAmount-qrf_Calc_Ditail.dblCurrAmount WHERE " _
            & "ItemActivityDetail.lngActivityDetailID=qrf_Calc_Ditail.lngPurchaseActivityDetailID"
'        gclsBase.BaseDB.Execute Strsql
        blnIsOK = gclsBase.ExecSQL(strSql)
        qrf.Close
        Set qrf = Nothing
        gclsBase.BaseDB.QueryDefs.Delete "qrf_Calc_Ditail"
        strSql = "DELETE PurchaseToBill.* FROM PurchaseToBill INNER JOIN (ItemActivity INNER JOIN " _
            & "ItemActivityDetail ON ItemActivity.lngActivityID = ItemActivityDetail.lngActivityID) " _
            & "ON PurchaseToBill.lngSaleActivityDetailID = ItemActivityDetail.lngActivityDetailID" _
            & " WHERE ItemActivity.lngActivityID=" & mlngID
 '       gclsBase.BaseDB.Execute Strsql
          blnIsOK = gclsBase.ExecSQL(strSql)
        Do While i < .Rows
            '写对照表
            strSql = ""
            dblValue = 0
            lngID = Balance.GetSalePurchaseItemID(ToFormName.grdCol, Val(.TextMatrix(i, 0)))
            If .TextMatrix(i, 6) = "√" Then
                dblValue = C2Dbl(.TextMatrix(i, j))
                If Val(Trim(.TextMatrix(i, j))) <> 0 Then
                    strSql = "INSERT INTO PurchaseToBill (lngPurchaseActivityDetailID" _
                        & ",lngSaleActivityDetailID,dblCurrAmount) Values(" _
                        & .TextMatrix(i, 0) & "," & lngID & "," & dblValue & ")"
'                    dblValue = C2Dbl(.TextMatrix(i, j))
                    blnIsOK = gclsBase.ExecSQL(strSql)
                End If
'            Else
'                Strsql = "INSERT INTO PurchaseToBill (lngPurchaseActivityDetailID" _
'                    & ",lngSaleActivityDetailID,dblCurrAmount) Values(" _
'                    & .TextMatrix(i, 0) & "," & lngID & "," & Val(Trim(.TextMatrix(i, 2))) & ")"
'                dblValue = Val(Trim(.TextMatrix(i, 2)))
'            End If
'            If Len(Strsql) > 0 Then
'                gclsBase.BaseDB.Execute Strsql
'            End If
            '写商品业务明细表表
'            If dblValue > 0 Then
                recRecordset.FindFirst "lngActivityDetailID=" & .TextMatrix(i, 0)
                recRecordset.Edit
                recRecordset!dblCurrBillAmount = recRecordset!dblCurrBillAmount _
                    + dblValue
                recRecordset.Update
            End If
            i = i + 1
        Loop
 '       End If
        gclsBase.BaseWorkSpace.CommitTrans
    End With
    MousePointer = vbDefault
    If isOk = True Then
       Unload Me
    End If
    Exit Sub
Errors1:
    MousePointer = vbDefault
    gclsBase.BaseDB.QueryDefs.Delete "qrf_Calc_Ditail"
    Set qrf = gclsBase.BaseDB.CreateQueryDef("qrf_Calc_Ditail", strSql)
    Resume Next
End Sub
'计算合计
Private Sub SumGrid(dblText As Double)
    Dim i As Integer
    Dim dblValue As Double
    i = 1
    dblValue = 0
    If mlngCol > 0 Then
        With msgGrid
            Do While i < .Rows
                dblValue = dblValue + Val(Format(.TextMatrix(i, mlngCol), "#.00"))
                i = i + 1
            Loop
            hlb(mlngCol) = dblValue + dblText - Val(.TextMatrix(.Row, mlngCol))
        End With
        mlngCol = 0
    End If
End Sub


⌨️ 快捷键说明

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