设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 数据较多时,如何在窗体上实时累加。

[复制链接]
跳转到指定楼层
1#
发表于 2016-8-11 20:09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fatmingli 于 2016-8-12 08:36 编辑

窗体1的数据来源是表1, Text3的控件来源是 =Format(Sum([数量]),"#.##"),表1只有5条数据,运行查询时,窗体的 Text3和弹出的对话框均可以准确显示累计数量420

窗体2的数据来源是表2,Text3的控件来源是 =Format(Sum([数量]),"#.##"),有72条数据,运行同样的查询时,窗体的 Text3和弹出的对话框都没有显示累计数量,按下对话框后的确定按钮后, Text3才正确显示累计数量5220,请问怎么处理才可以在大量数据的情况可以Text3的值赋给变量P。

不好意思,忘记上传数据库了,请大家帮忙,谢谢

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-8-11 21:24:59 | 只看该作者
根本就不是问题吧
3#
发表于 2016-8-11 21:39:28 | 只看该作者
这是数据刷新的问题吧?解决方法如下(任选一):
1、以子窗体所引用的数据源为源,创建一个分组合计查询。拖到主窗体上,生成合计的子窗体。点击查询时同时刷新两个子窗体。
2、在子窗体上的页脚上创建一个控件,用sum统计,如你的表所示,点击查询时同时刷新该控件,然后引用即可。
4#
 楼主| 发表于 2016-8-12 08:41:38 | 只看该作者
三楼的兄弟,昨天忘记上传附件了,我的库是没有子窗体,请帮忙看一下数据库,我想达到的目的是把窗体上Text3的值赋给变量P,当表数据量少的时候运行正常,数据量稍大时就不行,感觉好像Text3计算稍微慢了一点,还没计算出结果就开始赋值,所以最后赋给P的不是Text3的计算结算,而是空值,请帮忙修改一下数据 库,谢谢
5#
发表于 2016-8-12 10:28:58 | 只看该作者
更改数据源时会又一个重新计算过程的。当计算过程未完成时读取控件值,当然是空的了。——这也就是你所说的“不实时”。
因此需要给以时间控件,等待完成计算过程再读取。
解决方法很简单,那就是更改数据源后及时计算控件值,需要的时候再显示。所以这里在组合框的更改事件中加上计算语句即可。当点击按钮时,这个时间差足够更新控件值了。

本帖子中包含更多资源

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

x
6#
 楼主| 发表于 2016-8-12 11:04:54 | 只看该作者
本帖最后由 fatmingli 于 2016-8-12 11:15 编辑

Private Sub Text2_Change()
    Me.Requery
End Sub
Private Sub 查询_Click()
    MsgBox "累计数量是" & Me.Text3 & ""
End Sub
你通过2个事件分了两个过程,那肯定没问题,请问如何在一个按钮的单击事件完成呢,因为我需要这样做,下面是我的部分代码

Dim AA As String
Me.Text2.RowSource = "SELECT DISTINCT 名称 FROM            "
DoCmd.SetWarnings False
Dim rs As DAO.Recordset     'SQL语句的值不能直接赋值给变量的,要引用ADO 或DAO,
Set rs = CurrentDb.OpenRecordset("select count(*) as AA from (select d
AA = rs("AA")
For K = 0 To AA - 1
Me.Text2 = Me.[Text2].[ItemData](K)     '更改数据Text2的值
Me.Requery                                    '刷新数据,目的同时刷新
Text3的值,但实际效果是来不及计算,Text3为空
N1 = DCount("[剩余            >0")   'N1表示卖空次数

If N1 = 0 Then       '=0 表示从没卖空过
'Text13 = "A1=" & Text4 & ",B1=;"
P = Text3    实际效果是Text3来不及计算,Text3为空,导致赋值给变量P时也为空
Text13 = "A1=" & Text4 & ",B1=,P1=" & P & ""
.……
DoCmd.RunSQL "insert into   Text13
.……
Next K
7#
发表于 2016-8-12 13:32:29 | 只看该作者
1、恭喜你已经跳进坑里了。如果逻辑不改,流程不改,那就不妨继续留在坑里吧。
2、循环语句只能返回最后一个数,也就是Me.[Text2].[ItemData](AA-1) 。
3、如果需要使用循环,应该建立一个变量来存储数据,而不是赋值到文本框。
8#
 楼主| 发表于 2016-8-12 14:46:53 | 只看该作者
此路原来真的是行不通吗,我以为是自己水平不行,看来是走错路了

如果定义变量的话,P=Dsum("数量","表","where一大堆条件语句"),
Text3的控件来源是 =Sum([数量]),变量P = Text3,以为这样最简单,不用在写一大堆VB,看来只能写啦
谢谢 楼上耐心的帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 23:28 , Processed in 0.090619 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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