Access交流中心

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

[5分]寻求用代码将子窗体控件值合计数传递给主窗体的文本控件

凌云  发表于:2013-06-01 13:45:40  
复制

在新平台中,我想用绑定的来实现对子窗体某个列数据求和,但做好后子窗体数据更新后,主窗体的数据不能及时更新,为此我想通过代码实现

   cnn.Execute "DELETE FROM [客户订单明细] WHERE [订单编号]=" & SQLText(Me![订单编号])
    strSQL = "SELECT * FROM [客户订单明细] WHERE 1=2"
    Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
    Set rstTmp = CurrentDb.OpenRecordset("TMP_客户订单明细")
     Dim jssum As Integer
    Do Until rstTmp.EOF
     jssum = jssum + rstTmp!件数
     Me.总件数 = jssum
     
        rst.AddNew
        rst![订单编号] = Me![订单编号]
        rst![客户订单类型] = rstTmp![客户订单类型]
        rst![客户订单号码] = rstTmp![客户订单号码]
        rst![客户业务PO号] = rstTmp![客户业务PO号]
        rst![品种] = rstTmp![品种]
        rst![件数] = rstTmp![件数]
        rst![最早交货日期] = rstTmp![最早交货日期]
        rst![最晚交货日期] = rstTmp![最晚交货日期]
        rst![备注] = rstTmp![备注]
        rst.Update
        rstTmp.MoveNext
    Loop
    rst.Close
    rstTmp.Close
    cnn.CommitTrans
   
    MsgBoxEx "保存成功!", vbInformation
    If Nz(Me.OpenArgs, "New") = "New" Then
        ClearControlValues Me
        CurrentDb.Execute "DELETE FROM [TMP_客户订单明细]"
        Me.sfrDetail.Requery
    Else
        DoCmd.Close acForm, Me.Name, acSaveNo
    End If

但现在的问题时,我保存后不能保存到表中,如果重新打开窗体就不会加载总件数。
    可能是   rst![收货地址] = Me![收货地址]
    rst![始发地] = Me![始发地]
    rst![目的地] = Me![目的地]
    rst![货物名称] = Me![货物名称]
    rst![总件数] = Me![总件数]‘    这里已经将空的值保存到表中了,按照程序执行的先后顺序,那么后面写的程序代码将不能执行保存的命令
    rst![计费重量] = Me![计费重量]
    rst![计费体积] = Me![计费体积]
   
    rst![是否投保] = Me![是否投保]
    rst![投保金额] = Me![投保金额]
    rst![保险利率] = Me![保险利率]
    rst![紧急程度] = Me![紧急程度]
    rst![受理意见] = Me![受理意见]
    rst![单据状态] = Me![单据状态]
    rst![制单人] = Forms!SysFrmMain!Username
    rst![制单时间] = Now
    rst![审核人] = Forms!SysFrmMain!Username
    rst![审核时间] = Now
    rst![是否托运] = Me![是否托运]
    rst![是否出库] = Me![是否出库]
    rst![是否回单] = Me![是否回单]
    rst![是否交客户] = Me![是否交客户]
    rst.Update
    rst.Close


    cnn.Execute "DELETE FROM [客户订单明细] WHERE [订单编号]=" & SQLText(Me![订单编号])
    strSQL = "SELECT * FROM [客户订单明细] WHERE 1=2"
    Set rst = OpenADORecordset(strSQL, adLockOptimistic, cnn)
    Set rstTmp = CurrentDb.OpenRecordset("TMP_客户订单明细")
     Dim jssum As Integer
    Do Until rstTmp.EOF
     jssum = jssum + rstTmp!件数
     Me.总件数 = jssum     这里总件数的值不能保存到表,那么也就是再打开窗体时就不能加载了

  rst.AddNew
        rst![订单编号] = Me![订单编号]
        rst![客户订单类型] = rstTmp![客户订单类型]
        rst![客户订单号码] = rstTmp![客户订单号码]
        rst![客户业务PO号] = rstTmp![客户业务PO号]
        rst![品种] = rstTmp![品种]
        rst![件数] = rstTmp![件数]
        rst![最早交货日期] = rstTmp![最早交货日期]
        rst![最晚交货日期] = rstTmp![最晚交货日期]
        rst![备注] = rstTmp![备注]
        rst.Update
        rstTmp.MoveNext
    Loop
    rst.Close
    rstTmp.Close
    cnn.CommitTrans
   
    MsgBoxEx "保存成功!", vbInformation
    If Nz(Me.OpenArgs, "New") = "New" Then
        ClearControlValues Me
        CurrentDb.Execute "DELETE FROM [TMP_客户订单明细]"
        Me.sfrDetail.Requery
    Else
        DoCmd.Close acForm, Me.Name, acSaveNo
    End If

希望哪位老师予以帮助解决,或者在子窗体的件数更新事件中将合计数传递给主窗体的总件数!但不知如何去写代码?

 

Top
沈军 发表于:2013-06-04 16:24:38
strSQL = "SELECT * FROM [客户订单 明细] WHERE 1=2" 条件 1=2,1是什么?是字段名吗?

沈军 发表于:2013-06-04 16:32:44
为了便于在代码中操作,各种对象的名称请不要用特殊符号,比如空格,用后无穷的烦恼等着你,请参照相关对象名称命名规则、原则

凌云 发表于:2013-06-05 10:04:57
strSQL = "SELECT * FROM [客户订单 明细] WHERE 1=2" 条件 1=2,1是什么?是字段名吗?  这些代码都是平台自动生成的代码, 我只是在中间添加了:jssum = jssum + rstTmp!件数
     Me.总件数 = jssum    这些代码来实现子窗体的数据汇总到传递给主窗体


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