Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

[窗體] 關(guān)于動(dòng)態(tài)交叉表查詢窗體的一點(diǎn)想法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2018-11-1 12:38:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)帖子是是根據(jù)天涯淪落20131的一個(gè)業(yè)務(wù)問(wèn)題進(jìn)行處理的結(jié)果(詳細(xì)請(qǐng)點(diǎn)擊這里)。大體是希望通過(guò)點(diǎn)擊不同的訂單或者物料,來(lái)查看某個(gè)訂單或者某個(gè)物料的每天缺料情況。


我們知道,窗體控件是相對(duì)固定的。也就是說(shuō),一般情況下,創(chuàng)建好了,再添加控件是比較困難的。所以這里暫時(shí)不考慮點(diǎn)擊時(shí)在隱藏狀態(tài)下進(jìn)入設(shè)計(jì)模式,根據(jù)查詢來(lái)添加控件的做法,而是改為child子窗體控件的形式來(lái)處理。child控件最大的好處莫過(guò)于,它不介意數(shù)據(jù)來(lái)源到底是表還是查詢,會(huì)根據(jù)實(shí)際情況進(jìn)行控件自動(dòng)適配。

關(guān)注我的帖子的版友們,可能都知道,前幾天寫過(guò)一個(gè)自動(dòng)生成數(shù)據(jù)表窗體的示例,里面已經(jīng)提到了實(shí)現(xiàn)思路。這里就不再重復(fù)了。這里僅提一下不同之處。我們知道,通過(guò)點(diǎn)擊控件來(lái)顯示數(shù)據(jù),就必然涉及到傳遞參數(shù),修改數(shù)據(jù)源的操作。在思路上,可以考慮在打開(kāi)窗體時(shí)使用acDialog模式,也可以考慮直接用參數(shù)來(lái)修改數(shù)據(jù)源。經(jīng)測(cè)試,用acDialog方式有些問(wèn)題,沒(méi)法實(shí)現(xiàn)。所以這里就直接通過(guò)修改查詢數(shù)據(jù)源,再加載查詢到源對(duì)象(SourceObject)上,從而達(dá)到自動(dòng)更新目標(biāo)窗體的目的。

實(shí)現(xiàn)的方式有2種。一種是打開(kāi)新窗體,另一種則是嵌套子窗體。雖然樓主原先的想法是打開(kāi)新窗體來(lái)查看,但是個(gè)人覺(jué)得,用嵌套子窗體或許更方便查看。所以兩種方式都做了。具體見(jiàn)附件中“生產(chǎn)_欠單_打開(kāi)新窗體”和“生產(chǎn)_欠單_嵌套子窗體”兩個(gè)窗體。不管新窗體還是子窗體,這里用的都是“生產(chǎn)_訂單_情況”,別問(wèn)為什么(偷懶唄)。

還是老規(guī)矩,先貼一段代碼吧:
  1. Private Sub 產(chǎn)品料號(hào)_Click()
  2.     Dim strNum As String
  3.     Dim strSQL As String
  4.     Dim qry As QueryDef
  5.     Set qry = CurrentDb.QueryDefs("臨時(shí)表")
  6.     qry.SQL = "TRANSFORM Sum(生產(chǎn)數(shù)量) AS 生產(chǎn)數(shù)量總計(jì) SELECT 模號(hào), 工單編號(hào), 產(chǎn)品料號(hào), Sum(生產(chǎn)數(shù)量) AS 總計(jì) FROM 生產(chǎn)_數(shù)據(jù)統(tǒng)計(jì)表" _
  7.             & " WHERE 產(chǎn)品料號(hào)='" & Me.產(chǎn)品料號(hào) & "' GROUP BY 模號(hào), 工單編號(hào), 產(chǎn)品料號(hào) PIVOT 生產(chǎn)日期"
  8.     Me.Parent!生產(chǎn)_訂單_情況.Form!生產(chǎn)_工單.SourceObject = "查詢.臨時(shí)表"
  9.     Me.Parent!生產(chǎn)_訂單_情況.Requery
  10. End Sub
復(fù)制代碼
代碼很簡(jiǎn)單,大體是利用QueryDef對(duì)象對(duì)查詢進(jìn)行設(shè)置SQL語(yǔ)句,然后把查詢對(duì)象綁定到嵌套子窗體的child控件上,再刷新子窗體。這里就不一一解說(shuō)了。需要注意的是,如何引用兄弟窗體的寫法:先用Me,再引用Parent到父級(jí)(即主窗體)上,再引用兄弟窗體,后面的控件寫法則與一般寫法無(wú)異了。即:Me.Parent!兄弟窗體.Form!兄弟窗體控件.控件屬性

喜歡的話,不放下載下來(lái)體驗(yàn)下?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
發(fā)表于 2018-11-1 13:11:26 | 只看該作者
交叉查詢的示例論壇一直不多,先頂一下。

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2018-11-1 14:41:52 來(lái)自手機(jī) | 只看該作者
roych 發(fā)表于 2018-11-1 12:38
這個(gè)帖子是是根據(jù)天涯淪落20131的一個(gè)業(yè)務(wù)問(wèn)題進(jìn)行處理的結(jié)果(詳細(xì)請(qǐng)點(diǎn)擊這里)。大體是希望 ...

用查詢作為子窗體的sourceObject的確非常棒,完全體現(xiàn)了access易用的風(fēng)格。這里如果用透視表視圖也不錯(cuò)的,感覺(jué)還可以看明細(xì),就是格式比較臃腫,哈哈。
來(lái)自: 微社區(qū)
4#
發(fā)表于 2018-11-1 17:54:18 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

點(diǎn)擊這里給我發(fā)消息

5#
發(fā)表于 2021-3-11 09:41:04 | 只看該作者
謝謝
回復(fù)

使用道具 舉報(bào)

6#
發(fā)表于 2021-9-9 19:23:26 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 08:36 , Processed in 0.125330 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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