设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1005|回复: 9
打印 上一主题 下一主题

[窗体] 如何在发货单上通过订单明细序号加载和修改订单子表记录上的订单状态和完成日期

[复制链接]
跳转到指定楼层
1#
发表于 2023-9-27 23:49:28 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
发货单中的订单明细是订单子表中明细序号字段,是子表主键,有唯一性。
如何在发货添加或修改记录时通过订单明细(即明细序号)来加载订单子表记录中的订单状态和完成日期。
从而可以在发货单上直接修改订单子表上的订单状态和完成日期。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2023-9-30 12:38:55 | 显示全部楼层
各位大师帮帮忙!!怎么才能在加载发货单的同时,加载相对应的订单子表上的记录,

Private Sub Form_Load()
On Error GoTo ErrorHandler
Dim rst           As Object
Dim rstTmp        As Object
Dim strSQL        As String
Dim currentID     As String
CurrentDb.Execute "DELETE FROM TMP_发货_Detail"
If IsNull(Me.OpenArgs) Then
        Me.DataEntry = True
    End If
    If Me.DataEntry Then
        Exit Sub
    End If      
urrentID = Form_Frm_发货!Frm_发货_List_Child.Form.发货序号
strSQL = "select * from Tbl_发货 where 发货序号 ='" & currentID & "'"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
   rst.MoveFirst
      Me.发货序号 = currentID
      Me.明细主号 = "F" & Mid([currentID], 4, 6)
      ………………
      Me.备注 = rst!备注
rst.Close
strSQL = "select * from Tbl_发货_Detail where 发货序号 ='" & Me.发货序号 & "'"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set rstTmp = CurrentDb.OpenRecordset("TMP_发货_Detail")
Do Until rst.EOF
        rstTmp.AddNew
        rstTmp![发货序号] = rst![发货序号]
        rstTmp![发货单号] = rst![发货单号]
        rstTmp![订单明细] = rst![订单明细]
        ………………
        rstTmp![金额] = rst![金额]
        rstTmp![结算日期] = rst![结算日期]
        rstTmp.Update
        rst.MoveNext
    Loop
    rst.Close
    rstTmp.Close
    Me.Frm_发货_Edit_Detail_Child.Requery
ExitHere:
    Set rst = Nothing
    Set rstTmp = Nothing
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHere
End Sub
Private Sub Cmd保存_Click()

If Me.DataEntry Then
  Call TJ
    Me.Frm_发货_Edit_Detail_Child.Requery
Else  
  Call XG
        DoCmd.Close acForm, Me.Name, acSaveNo   
        DoCmd.Restore
   
    End If
End Sub

Public Sub TJ()
Dim rst As Object
Dim rstTmp As Object
Dim strSQL As String
Dim currentID As String
Dim currentID1 As String

currentID = AutoNumStr("Tbl_发货", "发货序号", 6, "No:", "")   '用编号模块输入发货序号。

strSQL = "select * from Tbl_发货 "
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

rst.AddNew
rst!发货序号 = currentID
…………
rst![备注] = Me![备注]

rst.Update
rst.Close

strSQL = "select * from Tbl_发货_Detail WHERE [发货序号]='" & Me![发货序号] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set rstTmp = CurrentDb.OpenRecordset("TMP_发货_Detail")
Do Until rstTmp.EOF
        rst.AddNew
        rst![发货序号] = currentID
        rst![订单明细] = rstTmp![订单明细]
        …………
        rst![数量] = rstTmp![数量]
        rst![单价] = rstTmp![单价]
        rst![金额] = Round(rstTmp![数量] * rstTmp![单价], 2)
        rst.Update
        rstTmp.MoveNext
    Loop
    rst.Close
    rstTmp.Close

'将输入框清空
    Dim ctrl As Control
    For Each ctrl In Me.Form.Controls
        If (TypeOf ctrl Is TextBox And InStr(1, ctrl.Name, "合计") = 0) Or TypeOf ctrl Is ComboBox Then
                 ctrl = Null
       End If
    Next ctrl
CurrentDb.Execute "DELETE FROM TMP_发货_Detail"
Form_Frm_发货.Frm_发货_List_Child.Form.Requery

MsgBox "新增的记录保存成功!", vbInformation, "提示"
ExitHere:
    Set rst = Nothing
    Set rstTmp = Nothing
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHere

End Sub
Public Sub XG()
Dim rst As Object
Dim rstTmp As Object
Dim strSQL As String
Dim currentID As String

strSQL = "select * from Tbl_发货 where 发货序号 ='" & Me.发货序号 & "'"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
rst.MoveFirst
rst.Edit
    rst![审核] = Me.[审核]
    …………
    rst![备注] = Me![备注]
   
    rst.Update
    rst.Close
CurrentDb.Execute "Delete from Tbl_发货_Detail WHERE [发货序号]='" & Me![发货序号] & "'"
strSQL = "select * from Tbl_发货_Detail WHERE [发货序号]='" & Me![发货序号] & "'"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set rstTmp = CurrentDb.OpenRecordset("TMP_发货_Detail")
Do Until rstTmp.EOF
        rst.AddNew
        rst![发货序号] = Me![发货序号]
        rst![订单明细] = rstTmp![订单明细]
        ………………
        rst![数量] = rstTmp![数量]
        rst![单价] = rstTmp![单价]
        rst![金额] = Round(rstTmp![数量] * rstTmp![单价], 2)
        rst.Update
        rstTmp.MoveNext     
    Loop
    rst.Close
    rstTmp.Close
   
MsgBox "修改后的记录保存成功!", vbInformation, "提示"
ExitHere:
    Set rst = Nothing
    Set rstTmp = Nothing
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHere
End Sub
3#
 楼主| 发表于 2023-10-7 11:28:49 | 显示全部楼层
谢谢roych的回复,下面是单记录用于更改应收状态与完收日期,像发货这种多记录临时表,不知道怎么弄,就是有问题。能否帮忙做个实例,谢谢。
Private Sub JZ()   '加载
Dim rst As Object
Dim strSQL As String
Dim currentID As String
  currentID = Form_Frm_借贷收入_Edit.Form.对应号
  strSQL = "select * from Tbl_利息应收 where 应收单号 ='" & currentID & "'"
  Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
  rst.MoveFirst
     Me.应收状态 = rst!应收状态
     Me.实收日期 = rst!实收日期
  rst.Close
End Sub

Private Sub BC()   '保存
Dim rst As Object
Dim strSQL As String
Dim currentID As String
  currentID = Form_Frm_借贷收入_Edit.Form.对应号
  strSQL = "select * from Tbl_利息应收 where 应收单号 ='" & currentID & "'"
  Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
  rst.MoveFirst
  rst.Edit
  rst!应收状态 = Me.应收状态
  rst!实收日期 = Me.实收日期
  rst.Update
  rst.Close
End Sub
4#
 楼主| 发表于 2023-10-8 10:56:19 | 显示全部楼层
本帖最后由 yzc2011 于 2023-10-8 11:24 编辑

谢谢roych的回复。订单状态和完成日期在订单编辑窗体上本身就能更改。只是想偷赖,想在发货后直接在发货编辑窗体上来更改《Tbl_订单_Detail》表上的【订单状态与完成日期】。是想把原来的【生产】状态改为【完成】状态,同时添加完成日期。

不是要把【订单状态和完成日期】写入到《Tbl_发货_Detail》表中。

发货编辑窗体除了要加载与保存《Tbl_发货》表和《Tbl_发货_Detail》表外,还需要根据所加载的《Tbl_发货_Detail》表中的订单明细(明细序号)控件内容来加载《Tbl_订单_Detail》表中的【订单状态与完成日期】,是要保存在原来的《Tbl_订单_Detail》表中。

概括就是想在发货编辑窗体上修改与保存《Tbl_订单_Detail》表上的订单状态与完成日期。









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
 楼主| 发表于 2023-10-9 21:29:26 | 显示全部楼层
本帖最后由 yzc2011 于 2023-10-9 21:41 编辑

谢谢roych的回复,其实订单有好几个状态,分别是:待审、待产、生产、完成、取消。你上面的方法是能更改订单状态,但是在实际操作中还是有漏洞。会造成订单状态混乱。因为看不到当前订单状态。如是发生退货,需要更改订单表中的订单状态为待产或取消,或是其它状态。而在发货表上已有发货记录上不能显示此状态。另在保存时,如是订单状态不设默认值为【生产】,那么就是【空值】。设了【生产】,如是在订单状态不是【生产】时,这样会乱套了。因为要考虑到发货单修改问题。在修改时要知道当前订单状态。

有没有办法,可以在发货编辑窗体上能看到当前订单记录的订单状态。就跟下面的单记录【运营收入】编辑窗体能加载与保存【运营应收】的“应收状态”一样。
如附件【进销存-231009】中,用代码在【运营收入】窗体中加载和保存【运营应收】表中的“应收状态”。这是单记录的情况下的方式。


在运营收入编辑窗体分别在加载与保存中调用下面的运营应收的加载与保存。这是单记录,可以做到。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
 楼主| 发表于 2023-10-10 11:25:49 | 显示全部楼层
本帖最后由 yzc2011 于 2023-10-10 17:37 编辑

谢谢roych的答复。想请问一下,通过代码能不能实现,根据发货编辑子窗体上的订单明细内容来加载和保存订单子表上的订单状态与完成日期。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-9 23:36 , Processed in 0.101402 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表