Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

审核流程和取消审核流程

nihao666  发表于:2021-05-19 15:14:19  
复制

做了取消审核作业:代码如下图,完成取消审核作业,窗体怎样可以编辑?

  目前只能关闭该单据,重新打开才可编辑

根据销售或者采购订单做出入库时,如销售出库单做了审核作业, 再打开该单据,审核了无法编辑主子窗体数据?



 

Top
nihao666 发表于:2021-05-19 15:17:08


西出阳关无故人 发表于:2021-05-20 07:07:21
主要看你的窗体的只读和非只读的机制,可以试一下在[取消审核]按钮的时间过程的最后,加入窗体数据刷新的代码.

nihao666 发表于:2021-05-20 14:56:27

点击下载此附件

Private Sub btnUndoAudit_Click()  '取消审核按钮事件,走事务流程
     On Error GoTo ErrorHandler
     Dim strSQL       As String
     Dim strMsg       As String
     Dim strBillNo    As String
     Dim strUserName  As String
     Dim cnn          As Object 'ADODB.Connection
     Dim blnTransBegin As Boolean   
     Set cnn = CurrentProject.Connection
    cnn.BeginTrans: blnTransBegin = True     
     If DCount("*", "TMP_CR_XS_TF") <= 0 Then   
           MsgBoxEx Me![BIL_NAME] & ",没有相关的内容,请重新取消审核!", vbExclamation + vbOKOnly
           Exit Sub
     End If     
     strBillNo = Me![BIL_NAME] & "单 No." & Me![bil_no]
      If Not Me![state] = "已审核" Then
           MsgBoxEx "此单据未审核,不能取消审核作业!", vbExclamation + vbOKOnly
           Exit Sub
     End If
    strMsg = "取消审核之后,此单据可编辑,同时更新库存、删除客户应收款,确定要取消" & strBillNo & " 的审核吗?"
    If MsgBox(strMsg, vbExclamation + vbOKCancel, "取消审核确认") = vbCancel Then
         Exit Sub
    End If 
    strUserName = Forms!sysFrmmain!Nickname
    strSQL = " UPDATE CR_XS_MF SET state='待审核',chk_dd=Null,chk_man=Null  WHERE [BIL_no]='" & Me![bil_no] & "'"             
     If DAORunSQL(strSQL) Then
        Me![state] = "待审核"   
     End If                  
       DoCmd.SetWarnings False                 
          '删除客户应收款信息        
            DoCmd.RunSQL " DELETE FROM YS_MF WHERE BIL_NO='" & Me![bil_no] & "'"            
            Dim strCalculateSQL As String            
          '用更新查询对商品信息表中的相关商品的库存数量进行减增           
            strCalculateSQL = "UPDATE TMP_CR_XS_TF INNER JOIN PRDT ON TMP_CR_XS_TF.PRD_NO =PRDT.PRD_NO " _
                              & "SET PRDT.QTY_WH = NZ(PRDT.QTY_WH,0)-TMP_CR_XS_TF.QTY*TMP_CR_XS_TF.KC_TYPE;"
            DoCmd.RunSQL strCalculateSQL
           '更新销售单明细表的完成数量 
            strCalculateSQL = "UPDATE XS_TF, CR_XS_TF SET XS_TF.QTY_FI = NZ(XS_TF.QTY_FI,0)+CR_XS_TF.QTY*CR_XS_TF.KC_TYPE" _
                              & " where (XS_TF.XS_NO=CR_XS_TF.OS_NO) AND (XS_TF.PRD_NO=CR_XS_TF.PRD_NO) AND CR_XS_TF.bil_no=" & SQLTEXT(Me![bil_no])
             DoCmd.RunSQL strCalculateSQL             
        DoCmd.SetWarnings True  
    cnn.CommitTrans: blnTransBegin = False
    Me.sfrDetail.Requery
    Form_frmCR_XS_MF.sfrList.Requery
    Form_frmCR_XS_MF.RefreshDataList    
    MsgBoxEx "取消审核成功!", vbInformation
    WriteOperationLog Me![BIL_NAME], "取消审核"
ExitHere:
 Exit Sub
ErrorHandler:
    If blnTransBegin Then
        cnn.RollbackTrans
        blnTransBegin = False
    End If
    MsgBoxEx Err.Description, vbCritical
    RDPErrorHandler Me.Name & ": Sub btnUndoAudit_Click()"
    Resume ExitHere
End Sub



nihao666 发表于:2021-05-20 15:01:41
Private Sub btnAudit_Click() '审核事件,走事务流程
     On Error GoTo ErrorHandler
     Dim strSQL       As String
     Dim strMsg       As String
     Dim strBillNo    As String
     Dim strUserName  As String
     Dim cnn          As Object 'ADODB.Connection
     Dim blnTransBegin As Boolean
    Set cnn = CurrentProject.Connection
    cnn.BeginTrans: blnTransBegin = True
   If DCount("*", "TMP_CR_XS_TF") <= 0 Then
           MsgBoxEx Me![BIL_NAME] & ",没有相关的内容,请重新审核!", vbExclamation + vbOKOnly
           Exit Sub
     End If
     If Me.sfrDetail![qty_wh] < Me.sfrDetail![qty] and ME![BIL_ID]="XC"  Then
           MsgBoxEx Me.sfrDetail![prd_name] & "的库存数量不足,请重新填写数量!", vbExclamation + vbOKOnly
         Me.sfrDetail![qty].SetFocus
         Me.sfrDetail![qty] = ""
           Exit Sub
     End If
     
    strBillNo = Me![BIL_NAME] & "单 No." & Me![bil_no]
    strMsg = "审核之后,此单据不可再编辑,并同时更新库存、客户应收款,确定要完成 " & strBillNo & " 的审核吗?"
    If MsgBox(strMsg, vbExclamation + vbOKCancel, "审核确认") = vbCancel Then
         Exit Sub
    End If   
    strUserName = Forms!sysFrmmain!Nickname
    strSQL = " UPDATE CR_XS_MF SET state='已审核',chk_dd=now()" _
            & ", chk_man= " & SQLTEXT(strUserName) _
            & " WHERE [BIL_no]=" & SQLTEXT(Me![bil_no])             
     If DAORunSQL(strSQL) Then
        Me!state = "已审核"
        Me!chk_man = strUserName
        Me!chk_dd = Now()
        Me.sfrDetail.SetFocus
        Me.btnAudit.Enabled = False
        Me.AllowEdits = False
        Me.sfrDetail.Form.AllowEdits = False
        Me.sfrDetail.Form.AllowAdditions = False
        Me.sfrDetail!btnDelete.Enabled = False
        Form_frmCR_XS_MF.RefreshDataList
        Me.btnSave.Enabled = False
        Me.sfrDetail!btnDeleteAll.Enabled = False
     End If                 
        DoCmd.SetWarnings False            
            '审核时对客户信息表中的最近销售日期进行更新
            'DoCmd.RunSQL " UPDATE CUST2  SET LAST_DD_XS = #" & Me![BIL_dd] & " # WHERE CUS_NO='" & Me![cus_no] & "'"            
            '更新客户应收款,以追加insert into方式
            Dim je As Currency
            je = Me.sfrDetail.Form!金额合计
            DoCmd.RunSQL " INSERT INTO YS_MF  VALUES ('" & Me![cus_no] & " ','" & Me![bil_no] & "','" & Me![os_no] & "'," & je & ",#" & Me![chk_dd] & "#, -1*" & Me![kc_type].Value & ",false,'" & Me![BIL_ID] & "')"
           
            '用更新查询对商品信息表中的相关商品的库存数量进行增减
            Dim strCalculateSQL As String
            strCalculateSQL = "UPDATE TMP_CR_XS_TF INNER JOIN PRDT ON TMP_CR_XS_TF.PRD_NO =PRDT.PRD_NO " _
                               & "SET PRDT.QTY_WH = NZ(PRDT.QTY_WH,0)+TMP_CR_XS_TF.QTY*TMP_CR_XS_TF.KC_TYPE;"
            DoCmd.RunSQL strCalculateSQL           
            '更新商品最新售价
             strCalculateSQL = "UPDATE TMP_CR_XS_TF INNER JOIN PRDT ON TMP_CR_XS_TF.PRD_NO = PRDT.PRD_NO " _
                              & "SET PRDT.UP1 = TMP_CR_XS_TF.UP;"
             DoCmd.RunSQL strCalculateSQL           
             '更新销售单明细表的完成数量
              strCalculateSQL = "UPDATE XS_TF, CR_XS_TF SET XS_TF.QTY_FI = NZ(XS_TF.QTY_FI,0)-CR_XS_TF.QTY*CR_XS_TF.KC_TYPE" _
                                    & " where (XS_TF.XS_NO=CR_XS_TF.OS_NO) AND (XS_TF.PRD_NO=CR_XS_TF.PRD_NO) AND CR_XS_TF.bil_no=" & SQLTEXT(Me![bil_no])
             DoCmd.RunSQL strCalculateSQL           
        DoCmd.SetWarnings True
   cnn.CommitTrans: blnTransBegin = False
    Me.sfrDetail.Requery
    Form_frmCR_XS_MF.sfrList.Requery
    Form_frmCR_XS_MF.RefreshDataList  
    MsgBoxEx "审核成功!", vbInformation
    WriteOperationLog Me![BIL_NAME], "审核"
ExitHere:
 Exit Sub
ErrorHandler:
    If blnTransBegin Then
        cnn.RollbackTrans
        blnTransBegin = False
    End If
    MsgBoxEx Err.Description, vbCritical
    RDPErrorHandler Me.Name & ": Sub btnAudit_Click()"
    Resume ExitHere
End Sub


xlb 发表于:2021-05-20 20:11:57
请把窗体程序文件附件上传

总记录:5篇  页次:1/1 9 1 :