Access交流中心

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

回复 加入收藏帖  复制
我要提问 帖子上移

子窗体数据更新

over_fly111 等级: 普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于:2019-04-12 10:32:17   已结帖
楼主

您好! 现状是,单击订单号能转到新窗体,数据也可以读取过来,

但是我想在订单修改录入中进行修改,点击保存,数据能在查询窗体的子窗体中显现怎么做?

现在改不了数据呢。。。

 

access培训  诚聘access开发人员

    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
Top

扫描下方工作人员的微信二维码加微信,邀您加入Access课堂微信群,进入一个技术交际圈:

网站工作人员微信

ozh2k003 等级:二星助教★★ 积分:154 金币:998 来自:广州Access交流中心 发表于2019/4/13 8:40:46 
1楼 得分: 0
保存记录的时候加上刷新查询窗体的代码

    希望我的回答能解决了您的问题,或者所附上的这些信息对您有所帮助!如有任何疑问或需要进一步帮助,请您直接在本站发贴,我们非常乐意帮助您解决问题!
    如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,以方便大家对那些正在等待解决的帖子给予关注!
    ozh2k003  [协助社区成员回帖14篇,其中【最佳答案】7篇;发布技术文章17篇。]
    Access软件网助教团队 
    http://www.umvsoft.com
    如果您没有注册这个论坛,请单击下面的链接进行注册,与我在论坛进行交流:
    http://www.accessoft.com/reg/reg.asp?userid=51519
    本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/15 8:47:40 
2楼 得分: 0
您好! 感谢您的回复,请问能不能具体点,或者有没有例子,我想参考下 拜托了。

    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/15 8:54:30 
3楼 得分: 0
http://www.accessoft.com/article-show.asp?id=8882,

刷新窗体数据的3种方法



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/15 15:13:56 
4楼 得分: 0

您好!连接看了不是很明白啊。。能不能给个例子啊。。。谢谢!

我在保存记录按钮里,只写数据刷新的代码就行?

不知为啥总说找不到子窗体呢?



    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/16 9:28:32 
5楼 得分: 0
求解啊。。谢谢!

    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/16 11:40:23 
6楼 得分: 0


    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/16 11:45:21 
7楼 得分: 0

下面是保存按钮 代码 但是有错误。。

Private Sub Command116_Click()
'目前保存按钮只能新增
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Rs.Edit
Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("订单修改表", dbOpenDynaset)
Rs!订单号 = Me!订单号
Rs!购买申请单号 = Me!购买申请单号
Rs.Update
MsgBox "已保存"
End Sub




    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/16 13:36:16 
8楼 得分: 0
    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/16 13:48:39 
9楼 得分: 0
你的窗体加载代码太麻烦,为什么不用DAO或ADO完成,用Dlookup函数很麻烦,速度也慢。上面的保存按钮代码也不对。保存要分为新增记录时的保存和修改记录时的保存,而且保存后要关闭记录集对象,释放内存。

    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/16 14:04:08 
10楼 得分: 0

感谢您的回复,本人初学者,很多还不是很明白,我是想写一个修改记录的保存按钮的,

但是现在根据上面的代码写完,修正的不是对应记录的数据,不知道是哪里出现的问题,

您如果有示例方便的话给我来一个吧,我看看是怎么写的。谢谢!



    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/16 15:54:48 
11楼 得分: 0

新增记录的保存与修改记录的保存只用一个按钮,不需要两个按钮,只需加上一个判断是新增或是修改即可。

    Dim rst As DAO.Recordset        'DAO方法
    Dim strSql As String

    strSql = "SELECT * FROM [往来单据] WHERE [单据编号]='" & Me!单据编号 & "'"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)

    If IsNull(Me.旧编号)  Then              '如果旧编号为空,说明新增
        rst.AddNew                                '新增单据编号字段
        rst![单据编号] = Me.单据编号
    Else                                              '否则为修改
        rst.Edit
    End If

'不管是新增或者是修改,除了主键外的字段都在下面

    rst![摘要] = Me.摘要
    rst![往来代码] = Me.往来代码
    rst![业务类型] = Me.业务类型

    Me![旧编号] = Me![单据编号]     '有了这句代码后,可以在保存后不关闭本窗体也能保存修改

    rst.Update                                '一定要更新记录集
    rst.Close                                   '关闭记录集
    Set rst = Nothing                      '释放内存

If CurrentProject.AllForms("明细账").IsLoaded = True Then Call Form_明细账.查询     '调用查询窗体的“查询过程”,刷新查询窗体

在编辑窗体上增加一个辅助文本框,命名为旧编号,双击打开后并给这个文本框斌值,用这个辅助文本框来判断是新增还是修改,如果用“Me.OpenArgs”参数也可以,但保存后在没有关闭这个窗体时,再修改保存就会出错。所以用辅助文本框(也可以不用辅助文本框,而是用一个变量代替)。



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/16 16:07:39 
12楼 得分: 0

  下面是加载事件  

 Dim rst As DAO.Recordset        'DAO方法

    Dim strSql As String
    Dim OrderID As String


    '如果参数为空,说明是新增
    If IsNull(Me.OpenArgs) Then
        Me.DataEntry = True
        Exit Sub

    End If


    OrderID = Me.OpenArgs
    strSql = " SELECT * FROM [往来单据] WHERE  [单据编号]='" & OrderID & "'"
    Set rst = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
    Me.摘要 = rst![摘要]
    Me.往来代码 = rst![往来代码]
    Me.业务类型 = rst![业务类型]
    Me![单据编号] = rst!单据编号
    Me![旧编号] = Me![单据编号]
    rst.Close
    Set rst = Nothing


    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/22 9:41:22 
13楼 得分: 0

感谢您的回复。现在试了一个,好像是子窗体可以显示保存后的数据了。

我有几点不明白,

1)您写的这两段是实现同一功能两种方法?

2)Me![旧编号] = Me![单据编号]     '有了这句代码后,可以在保存后不关闭本窗体也能保存修改

If CurrentProject.AllForms("明细账").IsLoaded = True Then Call Form_明细账.查询     '调用查询窗体的“查询过程”,刷新查询窗体

这两段不是很明白,目前第二句我没写在代码里,我看子窗体数据也是保存后的呢

3)我这边查询根据例子写的,那个例子用了两个查询表,一个查询,一个是查询结果,我也不明白为什么用两个。。。



    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
半夜罗 等级:一星会员 积分:206 金币:1240 来自:成都Access交流中心 发表于2019/4/22 10:59:38 最佳答案
14楼 得分: 2

1、加载事件是窗体打开时,新增记录时,没有任何数据,如果是修改数据则会显示要修改的记录(通过Me.OpenArgs参数判断)并且给辅助文本框(me.旧编号)斌值,这个文本框一旦有数据,窗体就会始终处于修改记录的状态,点无数次保存按钮都不会提示错误(记录也不会增加,只会修改)。

2、保存按钮被触发时,也给辅助文本框(me.旧编号)斌值,使窗体由新增记录状态转变成修改状态。避免新增记录时被保存后才发现数据是错的,再修改时由于窗体处于新增状态,而无法保存。这里没有用Me.OpenArgs参数的原因,Me.OpenArgs参数是只读的不能编辑,不好在这个地方给其斌值,还不如用辅助文本框方便和便于理解。所以下面的代码非常重要,有了这样的处理,就可以只用一个窗体实现新增或修改,而不需要一个新增窗体,一个修改窗体共两个窗体。

 If IsNull(Me.旧编号)  Then              '如果旧编号为空,说明新增

          rst.AddNew                                '新增状态
          rst![单据编号] = Me.单据编号
 Else                                              '否则为修改状态
          rst.Edit
 End If

       Me![旧编号] = Me![单据编号]             '这是在新增或修改之间转换的关键

    其他要写入到表中的字段..........

If CurrentProject.AllForms("明细账").IsLoaded = True Then Call Form_明细账.查询'这句的意思:如果《明细账》窗体是打开的,就调用这个窗体的查询过程,用来刷新窗体,查询过程不包含操作查询也可以写成:

If CurrentProject.AllForms("明细账").IsLoaded = True Then  Form_明细账.明细账子窗体.requery   '这样子窗体就可以刷新了

还可以用下面的方法刷新查询窗体的子窗体:

If CurrentProject.AllForms("明细账").IsLoaded = True Then  Form_明细账.明细账子窗体.SourceObject = "明细账子窗体"

数据编辑窗体(新增或修改)与查询窗体一般都不是同一个窗体,就看你想用哪种方法,条条大路通罗马,并不是绝对的哪种方法最好,各有各的优缺点。你没有附件,我也无法根据你的情况具体地说明或做一个示例。只能就一般情况而言了。不管用哪种方法刷新,前提被刷新的窗体必须是打开的



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    半夜罗
      获得社区协助:请教问题(即发帖)67篇,其中获得解决的59篇;
      协助社区成员:协助他人(即回帖)60篇,其中被设为【最佳答案】的16篇;
      协助我们社区:发布技术文章31篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
over_fly111 等级:普通会员 积分:0 金币:0 来自:天津Access交流中心 发表于2019/4/22 15:58:54 
15楼 得分: 0

最后帮我解决了这个程序的问题,非常感谢,我这个设计比较简单就用的修改,没有新增,今后有用到再参考您说的内容。

另外,我还写了个程序,同样的方法,让子窗体给新窗体赋值,但是点击后,子窗体的同样数据就变成了2行,不知道什么原因。。



    over_fly111
      获得社区协助:请教问题(即发帖)27篇,其中获得解决的16篇;
      协助社区成员:协助他人(即回帖)0篇,其中被设为【最佳答案】的0篇;
      协助我们社区:发布技术文章0篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
总记录:15篇  页次:1/1 9 1 :
您还没有在Access软件网登录不能回复帖子
  • 你没有登录,请点击后面链接登录:登录
  • 如果你没有注册,请点击后面链接注册:注册,注册完成后,请再次访问本页功能。