序列事件
回答
我不同意這種方法,因爲我不喜歡將報告綁定到特定形式。
取而代之,我使用在報表的OnOpen事件中打開的對話框窗體(如此處),並寫入報表的記錄源。
如果您希望報表可以在沒有彈出對話框的情況下運行,您可以使其成爲OpenArgs的條件,或者說,如果Filter屬性已經設置(如果您使用DoCmd.OpenReport和WHERE論證)。
我喜歡使報告和對話框儘可能獨立,我經常使用獨立的類模塊作爲數據存儲結構,並在OnOpen事件中檢查它。如果類模塊的相關實例的公共變量是Nothing,那麼只需運行該報告,否則,從類模塊實例的屬性中提取數據並寫入記錄源。
通過這種方式,您可以使對話框窗體和報表完全獨立。兩者都需要對彼此一無所知,但兩者都將與類模塊一起使用(儘管表單不需要知道類模塊實例的任何內容)。
欲瞭解更多詳情,請詢問。
這是一個複雜的主題,我花了數年的時間研究它,以使應用盡可能保持可維護性。將UI對象彼此解耦是改善可重用性的一個因素,因此具有更好的可維護性和可擴展性。 (當然,您不需要使用類模塊 - 您可以使用用戶定義的類型或數組,或者其他任何類型的模塊,但是我喜歡具有相同結構的多個實例的能力,這就是整體點類模塊)
我會在構建查詢的窗體上創建一個按鈕,並在按鈕的Click事件過程中以預覽模式打開報告(假設他們不想僅自動發送給默認打印機) 。
查詢可以引用表單作爲輸入參數提交,可用作查詢結果報告。
- 因此,有一個與日期用戶 輸入的窗體。
- 放置一個可打開 報告的按鈕。
- 該報告應利用 查詢/嵌入式sql,它使用表單中的 字段作爲輸入。
通常情況下,報告在未打開窗體的情況下運行時,將請求「窗體域」的值。
因此,一般來說,您需要創建一個報告表單,您可以從中剔除報告,其中包含報告的必填字段。
@I__這裏是一個示例查詢:PARAMETERS [Forms]!frmDate![txtStart] DateTime; SELECT m.id,m.field2,m.date_field FROM MyTable AS m WHERE m.date_field> = [Forms]!frmDate![txtStart]; – HansUp 2010-06-09 18:31:22
FWIW,我發現如果在INSERT的SELECT或VALUSE語句或UPDATE的SET語句中使用返回的值,那麼只需要將控件引用定義爲參數,即使如此,它也只在if控件是空的。對於SELECT,我沒有發現它是必要的。 – 2010-06-09 22:28:16
數據庫引擎顯然希望日期類型與m.date_field進行比較。因此,即使TypeName([Forms]!frmDate![txtStart] .Value)=「String」,引擎也會接受有效日期的字符串表示。我沒有意識到這一點。 – HansUp 2010-06-11 14:57:22
- 1. 事件序列化
- 2. jQuery事件序列
- 3. javascript事件序列
- 4. DataGridViewCell事件序列
- 5. 簡單事件序列
- 6. JavaScript顯示事件序列
- 7. 點擊jQuery序列事件
- 8. Javascript光標:事件序列
- 9. 繪製事件序列
- 10. 事件類序列化
- 11. 程序中的事件序列?
- 12. 測試助手預期事件序列報告重複事件
- 13. vb.net中的表單關閉事件中的事件序列
- 14. 在Java中的事件序列
- 15. WPF Listview:列重新排序事件?
- 16. jQuery自定義事件序列
- 17. wso2 cep序列檢測丟失事件
- 18. 陣列的JavaFX事件處理程序
- 19. 要按列排序的事件
- 20. 在ActionScript3中創建事件序列
- 21. sql查詢生成事件序列
- 22. 使用EPL跟蹤事件序列
- 23. AS3如何確定事件序列
- 24. 任務繼續帶事件鏈序列
- 25. .NET Windows窗體事件序列
- 26. 按鈕和ItemCommand事件序列
- 27. 使用RSpec測試事件序列
- 28. jQuery的事件處理程序隊列
- 29. 使用jquery測試事件序列
- 30. 根據事件序列創建關係
沒有足夠的信息。 「運行查詢」是什麼意思?什麼類型的查詢?選擇?插? UPDATE?顯然,#3意味着一個SELECT(否則它不能在報告中使用),但如果是這樣,那麼步驟#2是多餘的,因爲「運行」SELECT查詢本身不會執行任何操作來填充報告。 – 2010-06-09 22:29:52
我的新政策是對每個芬頓評論+1我看到 – 2010-06-10 00:55:59