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

📄 frmpositionlistcard.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 3 页
字号:
        Else
            lngResult = ShowMsg(Me.hwnd, "是否保存上一次编辑的货位?", vbYesNoCancel + vbQuestion, "货位卡片提示信息")
            If lngResult = vbYes Then       '保存上一次编辑的货位
                If Not SaveCard Then      '保存失败
                    lngResult = ShowMsg(Me.hwnd, "上一次编辑的货位保存失败,是否继续编辑它?", vbYesNoCancel + vbQuestion, "货位卡片提示信息")
                    If lngResult = vbYes Then
                        SendKeys "%{C}"
                        Exit Function
                    End If
                End If
            End If
        End If
    End If
    IsContinue = False
End Function

Private Sub InitCard(Optional strName As String)
    Dim recPosition As rdoResultset, Strsql As String
    
    mblnIsInit = True
    mlngPCodeID = 0
    mblnPIsDetail = False
    mblnPIsInActive = False
    If mblnIsNew Then
        txtInput(1).Text = ""
        txtInput(0).Text = Trim(strName)
        mlngLstID = 0
        lstDepartment.Text = ""
        chkPause.Value = Unchecked
    Else
        Strsql = "SELECT * FROM POSITIONVIEW WHERE lngPositionID=" & mlngPositionID
        Set recPosition = gclsBase.BaseDB.OpenResultset(Strsql, rdOpenForwardOnly)
        txtInput(0).Text = recPosition!strPositionCode
        txtInput(1).Text = recPosition!strPositionName
        chkPause.Value = recPosition!blnIsInActive
        mblnIsInActive = (recPosition!blnIsInActive = 1)
        mblnIsDetail = (recPosition!blnIsDetail = 1)
        mintOldLevel = recPosition!intLevel
        lstDepartment.Text = Format(recPosition!strDepartmentCode, "@;;") & " " _
            & Format(recPosition!strDepartmentName, "@;;")
        mlngLstID = Format(recPosition!lngDepartmentID, "@;0;")
        mstrOldFullName = recPosition!strFullName
        mstrOldCode = txtInput(0).Text
        mstrOldName = txtInput(1).Text
    End If
    mblnIsInit = False
End Sub

'进入删除货位,判断记录是否是末级和被使用,删除记录
Public Function DelCard(ByVal lngID As Long) As Boolean
    Dim recSelect As rdoResultset
    Dim strCode As String, strPosition As String, Strsql As String
    
    If lngID = mlngPositionID And frmPositionList.IsShowCard Then
        ShowMsg 0, "不能删除正在修改的货位!", vbExclamation + MB_TASKMODAL, "删除货位"
        Show
        Exit Function
    End If
    DelCard = False
    On Error GoTo ErrHandle
    gclsBase.BaseWorkSpace.BeginTrans
    Strsql = "SELECT * FROM Position WHERE lngPositionID=" & lngID
    Set recSelect = gclsBase.BaseDB.OpenResultset(Strsql, rdOpenForwardOnly)
    If recSelect.EOF Then
        DelCard = True
        recSelect.Close
        GoTo ErrHandle
    Else
        strCode = recSelect!strPositionCode
        strPosition = Trim(recSelect!strPositionCode) & " " _
            & Trim(recSelect!strPositionName)
        If recSelect!blnIsDetail = 0 Then
            ShowMsg 0, "货位“" & strPosition & "”有下级货位,不能删除!", _
                vbExclamation + MB_TASKMODAL, "删除货位"
            recSelect.Close
            GoTo ErrHandle
        End If
    End If
    recSelect.Close
    If CodeUsed(lngID) Then
        ShowMsg 0, "货位“" & strPosition & "”已经有业务发生,不能删除!", _
            vbExclamation + MB_TASKMODAL, "删除货位"
        GoTo ErrHandle
    End If
    If ShowMsg(0, "您确实要删除“" & strPosition & "”货位吗?", _
        vbQuestion + vbYesNo + MB_TASKMODAL, "删除货位") = vbNo Then
        GoTo ErrHandle
    End If
    Strsql = "DELETE FROM Position WHERE lngPositionID = " & lngID
    If Not gclsBase.ExecSQL(Strsql) Then GoTo ErrHandle
    If Not ChangeHigherCardDetail("Position", "strPositionCode", strCode) Then
        GoTo ErrHandle
    End If
    gclsBase.BaseWorkSpace.CommitTrans
'    gclsSys.SendMessage CStr(Me.hwnd), Message.msgPosition
    DelCard = True
    Exit Function
ErrHandle:
    gclsBase.BaseWorkSpace.RollbackTrans
End Function

'判断记录是否被使用(可能有多张表会使用此编码)
Private Function CodeUsed(lngID As Long) As Boolean
    CodeUsed = True
    If CheckIDUsed("Item", "lngPositionID", lngID) Then Exit Function
    If CheckIDUsed("ItemActivityDetail", "lngPositionID", lngID) Then Exit Function
    If CheckIDUsed("PositionItemDetail", "lngPositionID", lngID) Then Exit Function
    If CheckIDUsed("StockTakingDetail", "lngPositionID", lngID) Then Exit Function
    CodeUsed = False
End Function

Private Sub chkPause_Click()
'    Dim strPosition As String
'
'    strPosition = txtInput(0).Text & " " & txtInput(1).Text
'    If chkPause.Value = Checked And Not mblnIsNew Then
'        If CodeUsed(mlngPositionID) Then
'            ShowMsg hwnd, "货位“" & strPosition & "”已经有业务发生,不能停用!", _
'                vbExclamation, Caption
'            chkPause.Value = Unchecked
'        End If
'    End If
    If Not mblnIsInit Then mblnIsChanged = True
End Sub

Private Sub Form_Activate()
    mclsMainControl_ChildActive
    frmMain.mnuEditShowList = True
    gclsSys.CurrFormName = Me.hwnd
End Sub

Private Sub Form_Load()
    Me.Hide
    Me.Left = -30000
    MsgForm.PleaseWait
    SetHelpID hwnd, 30032
    frmPositionList.IsShowCard = True
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
End Sub

Private Sub Form_Paint()
    FrameBox Me.hwnd, 120, 60, 4755, 2025 '画边框
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim intMsgReturn As Integer, strMess As String
    
    If UnloadMode <> vbFormControlMenu Then Exit Sub
    If Trim(txtInput(0).Text & txtInput(1).Text) = "" Then Exit Sub
    If mblnIsChanged Then
        If mblnIsNew Then
            strMess = "您要保存新增的货位"
            If txtInput(0).Text <> "" Then
                strMess = strMess & "“" & txtInput(0).Text & "”"
            End If
            If txtInput(1).Text <> "" Then
                strMess = strMess & "“" & txtInput(1).Text & "”"
            End If
            strMess = strMess & "吗?"
        Else
            strMess = "“" & txtInput(0).Text & "”" & " " _
                & "“" & txtInput(1).Text & "”货位已被修改,是否保存?"
        End If
        intMsgReturn = ShowMsg(hwnd, strMess, vbQuestion + vbYesNoCancel, Caption)
        If intMsgReturn = vbYes Then
            Cancel = Not SaveCard
        ElseIf intMsgReturn = vbCancel Then
            Cancel = True
        End If
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    frmPositionList.IsShowCard = False
    mblnIsChanged = False
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
End Sub

Private Sub lstDepartment_AddNew()
    Dim lngID As Long
    
    lngID = frmDepartmentCard.AddCard(, vbModal)
    If lngID <> 0 Then mlngLstID = lngID
    setlistbox lstDepartment, 8, mlngLstID
    mblnIsChanged = True
'    SettingListBox lstDepartment, 11, mlngLstID
End Sub

Private Sub lstDepartment_Change()
    If ContainErrorChar(lstDepartment.Text, "`~!@#$%^&*=+'"";:,./?|\") Then BKKEY lstDepartment.hwnd
End Sub

Private Sub lstDepartment_Delete()
    If frmDepartmentCard.DelCard(mlngLstID, Me.hwnd) Then mlngLstID = 0
    setlistbox lstDepartment, 8, mlngLstID
    mblnIsChanged = True
'    SettingListBox lstDepartment, 11, mlngLstID
End Sub

Private Sub lstDepartment_Edit()
    frmDepartmentCard.EditCard mlngLstID, vbModal, lstDepartment.Text
    setlistbox lstDepartment, 8, mlngLstID
    mblnIsChanged = True
'    SettingListBox lstDepartment, 11, mlngLstID
End Sub

'当第一次进入列表框时,设置它的选项
Private Sub lstDepartment_GotFocus()
    
    If mblnIsNew Then
        cmdOKCancel(2).Default = False
    Else
        cmdOKCancel(0).Default = False
    End If
    If lstDepartment.Referrows <= 1 Then
'       SettingListBox lstDepartment, 11, mlngLstID
        setlistbox lstDepartment, 8, mlngLstID
    End If
End Sub

'根据列表框选择结果来调用卡片或存储调用卡片的参数
Private Sub lstDepartment_Choose()
    mlngLstID = lstDepartment.TextMatrix(lstDepartment.ReferRow, 1)
    mblnIsChanged = True
End Sub

Private Sub cmdokcancel_Click(Index As Integer)
    Dim strNextCode As String
    
    If Index = 0 Then
        If Not SaveCard Then Exit Sub
    ElseIf Index = 2 Then
        If SaveCard Then
            strNextCode = GetNextCode(txtInput(0).Text)
'            mlngPositionID = 0
            InitCard
            txtInput(0).Text = strNextCode
            txtInput(0).SetFocus
            txtInput(0).SelStart = 0
            txtInput(0).SelLength = Len(txtInput(0).Text)
        End If
        Exit Sub
    ElseIf Index = 3 Then
        mstrNotes = frmNotePad.EditCard(Me.Caption, txtInput(0).Text, _
            txtInput(1).Text, mstrNotes)    '调记事
        Exit Sub
    End If
    Unload Me
    
End Sub

Private Function MergeCode() As Boolean
    MergeCode = False
    If Not DisplaceActivity("Item", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    If Not DisplaceActivity("ItemActivityDetail", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    If Not DisplaceActivity("PositionBalance", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    If Not DisplaceActivity("PositionDaily", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    If Not DisplaceActivity("PositionItemDetail", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    If Not DisplaceActivity("StockTakingDetail", "lngPositionID", mlngPCodeID, mlngPositionID) Then Exit Function
    MergeCode = True
End Function

Private Function SaveCard() As Boolean
    Dim blnMerge As Boolean     'NEW--转移业务  EDIT--合并代码
    Dim intResult As Integer    '编码检查结果:1--合法 -1--上级编码不存在 -2--编码已存在 -3--编码超长
    Dim recPosition As rdoResultset, Strsql As String
    Dim intIsDetail As Integer, intIsInActive As Integer
    
    On Error GoTo ErrHandle
    
    SaveCard = False
    
    gclsBase.BaseWorkSpace.BeginTrans

⌨️ 快捷键说明

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