国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

誰能講講WEB發布中使報表異步運行的方式

2024-07-21 02:39:02
字體:
來源:轉載
供稿:網友

  我做了一些有關異步運行報表的測試,得出一些經驗,也有些問題沒有解決。
  基本上,提交一個異步運行的報表任務,代碼如下:
  
  DECLARE
  v_repobj REPORT_OBJECT := find_report_object('report1');
  v_repjob VARCHAR2(100);
  BEGIN
  --設置為異步運行
  set_report_object_PRoperty(v_repobj, REPORT_COMM_MODE, ASYNCHRONOUS);
  --假如設為RUNTIME,forms service啟動reports runtime engine運行報表,結果保存在forms server上。
  --設為BATCH并且指定REPORT_SERVER,報表在reports service上運行,結果保存在reports server上。
  set_report_object_property(v_repobj, REPORT_EXECUTION_MODE,
  BATCH);
  set_report_object_property(v_repobj, REPORT_SERVER, 'REPSVR');
  --異步方式下,不能設置DESTYPE為PREVIEW, SCREEN。這里設為CACHE,以后可以通過CGI到REPORT SERVER取結果。
  set_report_object_property(v_repobj, REPORT_DESTYPE, CACHE);
  --設置報表格式
  set_report_object_property(v_repobj, REPORT_DESFORMAT, 'PDF');
  --運行報表,因為異步運行方式,run_report_object立即返回了一個jobid。
  v_repjob := run_report_object(v_repobj);
  --我們把這個jobid保存到一個全局變量里。
  :global.repjob := v_repjob;
  END;
  
  利用剛才保存的jobid,我們可以在以后取報表結果:
  DECLARE
  v_repjob VARCHAR2(100);
  v_repstatus VARCHAR2(20);
  BEGIN
  v_repjob := :global.repjob;
  v_repstatus := report_object_status(v_repjob);
  IF v_repstatus = 'FINISHED' THEN
  --報表保存在report server上,可以用rwcgi60.exe/getjobid[n]取結果。
  web.show_document('rwcgi60.exe/getjobid'v_repjob'?server=repsvr');
  END IF;
  END;
  
  上面的例子使用全局變量保存jobid,實際上我們可以將jobid保存在任何地方,例如數據庫表、文本文件中。
  前面講過我的需求是希望用戶提交報表后可以退出程序,下次某個時間再登錄進入檢查報表狀態,取報表結果。我對上面代碼做了一點改動,將jobid保存到表中,以后再從表中取jobid。然而測試發現了一個問題,退出程序后重新進入,report_object_status(jobid)返回null??磥韗eport_object_status在沒有調用run_report_object時使用,是無法得到報表狀態的。僅管我們可以用getjobid取結果,但是我們不能看到報表狀態,這是個遺憾。用戶也不能接受用showjobs顯示出來的報表狀態,他們希望在fomrs程序中看到。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无为县| 巢湖市| 萝北县| 周宁县| 共和县| 霞浦县| 峨眉山市| 曲水县| 江北区| 岐山县| 麟游县| 武隆县| 安仁县| 沙坪坝区| 泸水县| 大关县| 株洲市| 昌乐县| 乃东县| 冕宁县| 永吉县| 揭东县| 绩溪县| 同德县| 谢通门县| 徐水县| 波密县| 腾冲县| 东源县| 潍坊市| 连云港市| 翁牛特旗| 鄂温| 蒲城县| 博爱县| 巢湖市| 儋州市| 南郑县| 屯留县| 正阳县| 安顺市|