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

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 8536|回復: 15
打印 上一主題 下一主題

請教ADP: 報表記錄源

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2012-9-12 16:24:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
MDB中報表記錄源可直接為 表名稱(如"表1").在ADP中用臨時表(#表1)作報表記錄源 顯示錯誤:#表1不存在 (#表1 實際是存在的)。請教諸位 臨時表作報表記錄源該如何操作(詳細)?謝謝。!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享1 分享淘帖 訂閱訂閱

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

2#
發(fā)表于 2012-9-13 12:42:26 | 只看該作者
# 臨時表的生命周期是一個會話
因此,你的報表記錄源不能使用臨時表,因為你在打開報表表已經(jīng)不在一個會話中了。
臨時表通常只用于存儲過程和觸發(fā)器

解決方案:
你可以使用存儲過程替代臨時表。

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

3#
發(fā)表于 2012-9-13 19:50:01 | 只看該作者
你要在存儲過程中生成臨時表,然后才能SELECT * FROM #表1
4#
 樓主| 發(fā)表于 2012-9-13 14:34:47 | 只看該作者
zhuyiwen 發(fā)表于 2012-9-13 12:42
# 臨時表的生命周期是一個會話
因此,你的報表記錄源不能使用臨時表,因為你在打開報表表已經(jīng)不在一個會話 ...

朱老師:
    1、創(chuàng)建存儲過程:CREATE PROCEDURE 存儲過程1 AS SET NOCOUNT ON SELECT * FROM #表1 RETURN
      2、報表記錄源設(shè)為:存儲過程1
      3、打開報表出錯:對象名 '#表1' 無效。
   請朱老師耐心指教,謝謝!
5#
 樓主| 發(fā)表于 2012-9-15 14:35:33 | 只看該作者
zhuyiwen 發(fā)表于 2012-9-13 19:50
你要在存儲過程中生成臨時表,然后才能SELECT * FROM #表1

朱老師,我搗鼓了一天也沒有弄出來,請朱老師詳解:
【問題:主窗體A內(nèi)有子窗體B,B的數(shù)據(jù)源為臨時表(#表1[字段a,b,c均為文本]),與B對應的報表為"報表1",點擊主窗體上打印按鈕,打印報表1】,請朱老師代為寫出作為"報表1"記錄源的存儲過程。謝謝。!

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

6#
發(fā)表于 2012-9-17 10:41:29 | 只看該作者
再搞不懂臨時表如何使用,我就沒有辦法了

花了我兩個小時,幫你做示例。

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

7#
發(fā)表于 2012-9-17 10:40:04 | 只看該作者
#臨時表不是普通表,一般來說只在存儲過程中產(chǎn)生和使用


如果你在報表中使用,傳遞窗體上的文本框中的值你要這樣用:
首先,你要設(shè)計一個存儲過程,為了簡單起見,這里假設(shè)你的窗體上文本框都是文本值,分別對應臨時表的a,b,c字段
  1. CREATE PROCEDURE [dbo].[sp_FromFORM] (
  2.         @a nvarchar(50),
  3.         @b nvarchar(50),
  4.         @c nvarchar(50)
  5. ) AS
  6. BEGIN
  7.         SET NOCOUNT ON

  8.         /* 創(chuàng)建臨時表 */
  9.         CREATE TABLE #TempTable (
  10.                 [fldA] nvarchar(50),
  11.                 [fldB] nvarchar(50),
  12.                 [fldC] nvarchar(50)
  13.         )

  14.         /* 向臨時表中插入值 */
  15.         INSERT #TempTable (
  16.                 [fldA],
  17.                 [fldB],
  18.                 [fldC]
  19.         )
  20.         VALUES (
  21.                 @a,
  22.                 @b,
  23.                 @c
  24.         )

  25.         /* 返回臨時表中的記錄集 */
  26.         SELECT [fldA], [fldB], [fldC] FROM #TempTable

  27.         /* 臨時表 #TempTable 會在存儲過程運行結(jié)束時自動刪除,*/
  28.         /* 不用明確使用 DELETE 刪除 */
  29. END
復制代碼
再設(shè)計窗體, 窗體上放置三個文本框,分別命名為 txtA, txtB, txtC, 最后放置一個打印按鈕。如圖:

將窗體命名為 frmRpt

在打印按鈕事件處理中寫入如下代碼:
  1. Private Sub cmdPrint_Click()
  2.     DoCmd.OpenReport "rptFromFORM", acViewPreview
  3. End Sub
復制代碼
保存窗體。

然后,我們設(shè)計報表,如圖


設(shè)置報表的屬性
記錄源: sp_FromFORM
數(shù)據(jù)源標識符為: dbo
輸入?yún)?shù)為: @a nvarchar(50)=Forms!frmRpt!txtA, @b nvarchar(50)=Forms!frmRpt!txtB, @c nvarchar(50)=Forms!frmRpt!txtC
如圖:


在主體上放置三個文本框,分別將其【控件來源】屬性設(shè)置為fldA, fldB, fldC

最后,將報表命名為 rptFromFORM, 保存

打開窗體,輸入數(shù)據(jù),點擊按鈕,得如下效果:




附上源碼:
游客,如果您要查看本帖隱藏內(nèi)容請回復

本帖子中包含更多資源

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

x
8#
發(fā)表于 2013-3-24 10:10:38 | 只看該作者
很好,想看看
9#
發(fā)表于 2013-3-24 11:03:53 | 只看該作者
學習學習
10#
發(fā)表于 2013-5-17 10:01:46 | 只看該作者
111
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

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

GMT+8, 2024-10-23 06:26 , Processed in 0.096188 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表