設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 1971|回復(fù): 7
打印 上一主題 下一主題

[窗體] 數(shù)據(jù)較多時(shí),如何在窗體上實(shí)時(shí)累加。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2016-8-11 20:09:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 fatmingli 于 2016-8-12 08:36 編輯

窗體1的數(shù)據(jù)來源是表1, Text3的控件來源是 =Format(Sum([數(shù)量]),"#.##"),表1只有5條數(shù)據(jù),運(yùn)行查詢時(shí),窗體的 Text3和彈出的對話框均可以準(zhǔn)確顯示累計(jì)數(shù)量420

窗體2的數(shù)據(jù)來源是表2,Text3的控件來源是 =Format(Sum([數(shù)量]),"#.##"),有72條數(shù)據(jù),運(yùn)行同樣的查詢時(shí),窗體的 Text3和彈出的對話框都沒有顯示累計(jì)數(shù)量,按下對話框后的確定按鈕后, Text3才正確顯示累計(jì)數(shù)量5220,請問怎么處理才可以在大量數(shù)據(jù)的情況可以Text3的值賦給變量P。

不好意思,忘記上傳數(shù)據(jù)庫了,請大家?guī)兔,謝謝

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2016-8-11 21:24:59 | 只看該作者
根本就不是問題吧
3#
發(fā)表于 2016-8-11 21:39:28 | 只看該作者
這是數(shù)據(jù)刷新的問題吧?解決方法如下(任選一):
1、以子窗體所引用的數(shù)據(jù)源為源,創(chuàng)建一個(gè)分組合計(jì)查詢。拖到主窗體上,生成合計(jì)的子窗體。點(diǎn)擊查詢時(shí)同時(shí)刷新兩個(gè)子窗體。
2、在子窗體上的頁腳上創(chuàng)建一個(gè)控件,用sum統(tǒng)計(jì),如你的表所示,點(diǎn)擊查詢時(shí)同時(shí)刷新該控件,然后引用即可。
4#
 樓主| 發(fā)表于 2016-8-12 08:41:38 | 只看該作者
三樓的兄弟,昨天忘記上傳附件了,我的庫是沒有子窗體,請幫忙看一下數(shù)據(jù)庫,我想達(dá)到的目的是把窗體上Text3的值賦給變量P,當(dāng)表數(shù)據(jù)量少的時(shí)候運(yùn)行正常,數(shù)據(jù)量稍大時(shí)就不行,感覺好像Text3計(jì)算稍微慢了一點(diǎn),還沒計(jì)算出結(jié)果就開始賦值,所以最后賦給P的不是Text3的計(jì)算結(jié)算,而是空值,請幫忙修改一下數(shù)據(jù) 庫,謝謝
5#
發(fā)表于 2016-8-12 10:28:58 | 只看該作者
更改數(shù)據(jù)源時(shí)會(huì)又一個(gè)重新計(jì)算過程的。當(dāng)計(jì)算過程未完成時(shí)讀取控件值,當(dāng)然是空的了。——這也就是你所說的“不實(shí)時(shí)”。
因此需要給以時(shí)間控件,等待完成計(jì)算過程再讀取。
解決方法很簡單,那就是更改數(shù)據(jù)源后及時(shí)計(jì)算控件值,需要的時(shí)候再顯示。所以這里在組合框的更改事件中加上計(jì)算語句即可。當(dāng)點(diǎn)擊按鈕時(shí),這個(gè)時(shí)間差足夠更新控件值了。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
6#
 樓主| 發(fā)表于 2016-8-12 11:04:54 | 只看該作者
本帖最后由 fatmingli 于 2016-8-12 11:15 編輯

Private Sub Text2_Change()
    Me.Requery
End Sub
Private Sub 查詢_Click()
    MsgBox "累計(jì)數(shù)量是" & Me.Text3 & ""
End Sub
你通過2個(gè)事件分了兩個(gè)過程,那肯定沒問題,請問如何在一個(gè)按鈕的單擊事件完成呢,因?yàn)槲倚枰@樣做,下面是我的部分代碼

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)     '更改數(shù)據(jù)Text2的值
Me.Requery                                    '刷新數(shù)據(jù),目的同時(shí)刷新
Text3的值,但實(shí)際效果是來不及計(jì)算,Text3為空
N1 = DCount("[剩余            >0")   'N1表示賣空次數(shù)

If N1 = 0 Then       '=0 表示從沒賣空過
'Text13 = "A1=" & Text4 & ",B1=;"
P = Text3    實(shí)際效果是Text3來不及計(jì)算,Text3為空,導(dǎo)致賦值給變量P時(shí)也為空
Text13 = "A1=" & Text4 & ",B1=,P1=" & P & ""
.……
DoCmd.RunSQL "insert into   Text13
.……
Next K
7#
發(fā)表于 2016-8-12 13:32:29 | 只看該作者
1、恭喜你已經(jīng)跳進(jìn)坑里了。如果邏輯不改,流程不改,那就不妨繼續(xù)留在坑里吧。
2、循環(huán)語句只能返回最后一個(gè)數(shù),也就是Me.[Text2].[ItemData](AA-1) 。
3、如果需要使用循環(huán),應(yīng)該建立一個(gè)變量來存儲數(shù)據(jù),而不是賦值到文本框。
8#
 樓主| 發(fā)表于 2016-8-12 14:46:53 | 只看該作者
此路原來真的是行不通嗎,我以為是自己水平不行,看來是走錯(cuò)路了

如果定義變量的話,P=Dsum("數(shù)量","表","where一大堆條件語句"),
Text3的控件來源是 =Sum([數(shù)量]),變量P = Text3,以為這樣最簡單,不用在寫一大堆VB,看來只能寫啦
謝謝 樓上耐心的幫助。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 08:11 , Processed in 0.114126 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表