SPZUR00100_보고서.xrw 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>보고서미리보기</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <properties>
  10. <report/>
  11. </properties>
  12. </root>
  13. </instance>
  14. <script type="javascript" ev:event="xforms-ready">
  15. <![CDATA[
  16. if(checkOpener()){
  17. if(opener.javascript.getParameter("onready")){
  18. fInitRexpert();
  19. }
  20. }
  21. ]]>
  22. </script>
  23. <script type="javascript" ev:event="xforms-close">
  24. <![CDATA[
  25. // 2012.04.10 added by CBJ for deleting temporary files
  26. fCloseReport();
  27. ]]>
  28. </script>
  29. </model>
  30. <script type="javascript">
  31. <![CDATA[
  32. function fInitRexpert() {
  33. fCloseReport();
  34. gvMainReportInfos = null;
  35. gvSubReportInfos = null;
  36. gvReportName = null;
  37. gvReportDataType = null;
  38. gvReportUserService = null;
  39. gvReportDataXPath = null;
  40. gvReportXPath = null;
  41. gvReportData = null;
  42. gvReportSubmitId = null;
  43. var iSubRptCnt = 0;
  44. var nodeList = opener.root.properties.report.childNodes ;
  45. for (i = 0; i < nodeList.length; i++) {
  46. node = nodeList.nextNode();
  47. if (node.nodeName == "mainreport") {
  48. gvMainReportInfos = initRexpertDictionay();
  49. //레포트 정보 저장
  50. nodeList_props = node.props.childNodes ;
  51. for (j = 0; j < nodeList_props.length; j++) {
  52. node_prop = nodeList_props.nextNode();
  53. gvMainReportInfos.add(node_prop.nodeName, node_prop.nodevalue);
  54. }
  55. gvReportName = gvMainReportInfos.get("rex_rptname");
  56. gvReportDataType = gvMainReportInfos.get("rex_datatype");
  57. gvReportSubmitId = gvMainReportInfos.get("rex_submitid");
  58. gvReportUserService = gvMainReportInfos.get("rex_userservice");
  59. gvReportDataXPath = gvMainReportInfos.get("rex_data_xpath");
  60. gvReportXPath = gvMainReportInfos.get("rex_xpath");
  61. //매개변수 저장
  62. nodeList_params = node.params.childNodes ;
  63. for (j = 0; j < nodeList_params.length; j++) {
  64. node_param = nodeList_params.nextNode();
  65. gvMainReportInfos.add(node_param.nodeName, node_param.nodevalue);
  66. }
  67. //옵션 정보 저장
  68. nodeList_options = node.options.childNodes ;
  69. for (j = 0; j < nodeList_options.length; j++) {
  70. node_option = nodeList_options.nextNode();
  71. gvMainReportInfos.add(node_option.nodeName, node_option.nodevalue);
  72. }
  73. //레포트 데이터 저장
  74. if (gvReportDataType == "XMLSTR") {
  75. var sDataXpath = gvReportDataXPath;
  76. //iviewer등의 사용으로 직접 데이터를 가져올 수 없는 경우 - EMR 증명서 데이터
  77. if (opener.javascript.getReportData != undefined) {
  78. gvMainReportInfos.add("rex_data", opener.javascript.fGetReportData());
  79. }
  80. if (isNull(sDataXpath)) {
  81. gvMainReportInfos.add("rex_data", opener.instance1.xml );
  82. } else {
  83. gvMainReportInfos.add("rex_data", opener.instance1.selectSingleNode(sDataXpath).xml );
  84. }
  85. gvReportData = gvMainReportInfos.get("rex_data");
  86. }
  87. }//end mainreport
  88. // else {
  89. // iSubRptCnt = iSubRptCnt + 1;
  90. // if (gvSubReportInfos != null) {
  91. // gvSubReportInfos = initRexpertDictionay();
  92. // }
  93. //
  94. // rex_goRptSubParam = initRexpertDictionay();
  95. //
  96. // nodeList_props = node.props.childNodes ;
  97. //
  98. // for (j = 0; j < nodeList_props.length; j++) {
  99. // node_prop = node.nextNode();
  100. // rex_goRptSubParam.add(node_prop.nodeName, node_prop.nodevalue);
  101. // }
  102. //
  103. // nodeList_params = node.params.childNodes ;
  104. //
  105. // for (j = 0; j < nodeList_params.length; j++) {
  106. // node_param = nodeList_params.nextNode();
  107. // rex_goRptSubParam.add(node_param.nodeName, node_param.nodevalue);
  108. // }
  109. //
  110. // nodeList_data = node.data.childNodes;
  111. //
  112. // if (nodeList_data.length > 0) {
  113. // if (rex_goRptSubParam.get("rex_datatype") == "XMLSTR") {
  114. // var sDataXpath = "";
  115. //
  116. // sDataXpath = rex_goRptSubParam.get("rex_data_xpath");
  117. //
  118. // if (sDataXpath == null || sDataXpath == "") {
  119. // rex_goRptSubParam.add("rex_data", opener.document.models(0).instances(0).xml );
  120. // } else {
  121. // rex_goRptSubParam.add("rex_data", opener.document.models(0).instances(0).selectSingleNode(sDataXpath).xml );
  122. // }
  123. // }
  124. // }
  125. //
  126. // gvSubReportInfos.add("" + iSubRptCnt, rex_goRptSubParam);
  127. // }
  128. }
  129. fReportPreView();
  130. }
  131. function fReportPreView() {
  132. var oReport;
  133. var oSubReport;
  134. var oConnection;
  135. var oDataSet;
  136. var oSQL;
  137. //커넥정보 숨기기
  138. //objRexpert.EnableDebug = false;
  139. //뷰어50%축소
  140. var zoomRate = gvMainReportInfos.get("rex_zoomrate");
  141. if(!isNull(zoomRate)){
  142. objRexpert.zoom(zoomRate);
  143. }
  144. //툴바숨기기
  145. //objRexpert.ToolBarVisible = false;
  146. //버전정보보기 숨기기
  147. //objRexpert.ShowToolBarButton(14, false);
  148. //뷰어에서 파란색 테두리 숨김
  149. //objRexpert.FocusRectVisible = false;
  150. //objRexpert.EnableHotKey("all=0");
  151. // 보고서 생성중입니다. 라는 메세지 박스 보임 여부
  152. //objRexpert.ShowProcessDialog = true: 보임 false:숨김;
  153. var reportPrint = gvMainReportInfos.get("rex_print");
  154. if (! (isNull(reportPrint) || reportPrint == "false") ){
  155. objRexpert.ShowProcessDialog = false;
  156. }
  157. //툴바 버튼 숨김
  158. var showToolbarButton = gvMainReportInfos.get("rex_showbutton");
  159. if(showToolbarButton == "hidden"){
  160. objRexpert.ShowToolBarButton(0, false); //열기버튼
  161. objRexpert.ShowToolBarButton(1, false); //저장버튼
  162. objRexpert.ShowToolBarButton(2, false); //출력버튼
  163. objRexpert.ShowToolBarButton(3, false); //새로고침버튼
  164. objRexpert.ShowToolBarButton(4, false); //중지버튼
  165. objRexpert.ShowToolBarButton(15, false); //목록버튼
  166. }
  167. objRexpert.ShowParameterDialog = false;
  168. if (isNull(gvMainReportInfos) || isNull(gvReportName)) return;
  169. // 초기화 콜백함수 실행
  170. if (gvMainReportInfos.Init != null) {
  171. gvMainReportInfos.Init(objRexpert);
  172. }
  173. try{
  174. oReport = objRexpert.OpenReport(getReportURL(gvReportName));
  175. }catch(e){
  176. messageBox(e.message, "I");
  177. return "error";
  178. }
  179. if(oReport == null) {
  180. messageBox("리포트를 열 수", "I004");
  181. return;
  182. }
  183. var obj = gvMainReportInfos.keys();
  184. for(var key in obj) {
  185. oReport.SetParameterFieldValue(key, obj[key]);
  186. }
  187. //connection 설정
  188. oConnection = fCreateConnection(gvReportDataType);
  189. //레포트 데이터 가져오기
  190. fGetData(oReport, oConnection, gvReportDataType, gvReportUserService, gvReportData);
  191. if (fGetSubReportData() == "each") {
  192. if (gvReportDataType == "XMLFILE" || gvReportDataType == "XMLSTR") {
  193. var sXpath = gvReportXPath;
  194. if (isNull(sXpath)) {
  195. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, "", 0);
  196. } else {
  197. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, sXpath, 0);
  198. }
  199. } else {
  200. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, "root/main/rpt1/rexdataset/rexrow", 0);
  201. }
  202. if( oDataSet == null ) return ;
  203. if (gvMainReportInfos.CallBack != null) {
  204. gvMainReportInfos.CallBack(oReport, oDataSet);
  205. }
  206. }
  207. if (gvReportParamShare == "share") {
  208. if (fGetSubReportData() == "each") {
  209. if (gvSubReportInfos.length > 0) {
  210. var sDataType = "";
  211. var sUserService = "";
  212. var sData = "";
  213. for (i = 1; i <= gvSubReportInfos.length; i++) {
  214. oRptSubParam = gvSubReportInfos.get("" + i);
  215. if (oRptSubParam.get("rex_rptname") != "") {
  216. oSubReport = oReport.OpenReport(oRptSubParam.get("rex_rptname"));
  217. } else {
  218. messageBox("서브 리포트 파일이", "I004");
  219. return;
  220. }
  221. if (oSubReport == null) {
  222. messageBox("서브 리포트를 열 수", "I004");
  223. return;
  224. }
  225. var obj = gvMainReportInfos.keys();
  226. for(var key in obj) {
  227. oSubReport.SetParameterFieldValue(key, obj[key]);
  228. }
  229. if (oRptSubParam.get("rex_datatype") == null) {
  230. sDataType = gvMainReportInfos.get("rex_datatype");
  231. } else {
  232. sDataType = oRptSubParam.get("rex_datatype");
  233. }
  234. if (oRptSubParam.get("rex_userservice") == null || oRptSubParam.get("rex_userservice") == "") {
  235. sUserService = gvReportUserService;
  236. } else {
  237. sUserService = oRptSubParam.get("rex_userservice");
  238. }
  239. if (oRptSubParam.get("rex_data") == null) {
  240. sData = gvReportData;
  241. } else {
  242. sData = oRptSubParam.get("rex_data");
  243. }
  244. oConnection = fCreateConnection(sDataType);
  245. fGetData(oSubReport, oConnection, sDataType, sUserService, sData);
  246. if (sDataType == "XMLFILE" || sDataType == "XMLSTR") {
  247. var sXpath = gvReportXPath;
  248. if (isNull(sXpath)) {
  249. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, "", 0);
  250. } else {
  251. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, sXpath, 0);
  252. }
  253. } else {
  254. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, "root/main/rpt1/rexdataset/rexrow", 0);
  255. }
  256. if( oDataSet==null ) return ;
  257. if (oRptSubParam.CallBack != null) {
  258. oRptSubParam.CallBack(oSubReport, oDataSet);
  259. }
  260. } // end for
  261. } // end if
  262. } else { // once
  263. for (i = 1; i <= oReport.GetReportCount(); i++) {
  264. oSubReport = oReport.OpenReport(i - 1);
  265. if (oSubReport == null) {
  266. messageBox("서브 리포트를 열 수", "I004");
  267. return;
  268. }
  269. var obj = gvMainReportInfos.keys();
  270. for(var key in obj) {
  271. oSubReport.SetParameterFieldValue(key, obj[key]);
  272. }
  273. fGetData(oSubReport, oConnection, gvReportDataType, gvReportUserService, gvReportData);
  274. } // end for
  275. } // end if
  276. } else { // each
  277. if (gvSubReportInfos.length > 0) {
  278. var sDataType = "";
  279. var sUserService = "";
  280. var sData = "";
  281. for (i = 1; i <= gvSubReportInfos.length; i++) {
  282. oRptSubParam = gvSubReportInfos.get("" + i);
  283. if (oRptSubParam.get("rex_rptname") != "") {
  284. oSubReport = oReport.OpenReport(oRptSubParam.get("rex_rptname"));
  285. } else {
  286. messageBox("서브 리포트 파일이", "I004");
  287. return;
  288. }
  289. if (oSubReport == null) {
  290. messageBox("서브 리포트를 열 수", "I004");
  291. return;
  292. }
  293. var obj = oRptSubParam.keys();
  294. for(var key in obj) {
  295. oSubReport.SetParameterFieldValue(key, obj[key]);
  296. }
  297. if (oRptSubParam.get("rex_datatype") == null) {
  298. sDataType = gvMainReportInfos.get("rex_datatype");
  299. } else {
  300. sDataType = oRptSubParam.get("rex_datatype");
  301. }
  302. if (oRptSubParam.get("rex_userservice") == null || oRptSubParam.get("rex_userservice") == "") {
  303. sUserService = gvReportUserService;
  304. } else {
  305. sUserService = oRptSubParam.get("rex_userservice");
  306. }
  307. if (oRptSubParam.get("rex_data") == null) {
  308. sData = gvReportData;
  309. } else {
  310. sData = oRptSubParam.get("rex_data");
  311. }
  312. oConnection = fCreateConnection(sDataType);
  313. fGetData(oSubReport, oConnection, sDataType, sUserService, sData);
  314. if (fGetSubReportData() == "each") {
  315. if (sDataType == "XMLFILE" || sDataType == "XMLSTR") {
  316. var sXpath = oRptSubParam.get("rex_xpath");
  317. if (isNull(sXpath)) {
  318. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, "", 0);
  319. } else {
  320. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, sXpath, 0);
  321. }
  322. } else {
  323. oDataSet = fCreateDataSet(oSubReport, oConnection, sDataType, oDataSet, "root/main/rpt1/rexdataset/rexrow", 0);
  324. }
  325. if( oDataSet == null ) return ;
  326. if (oRptSubParam.CallBack != null) {
  327. oRptSubParam.CallBack(oSubReport, oDataSet);
  328. }
  329. }
  330. } // end for
  331. } // end if
  332. } // end if - share
  333. if (fGetSubReportData() == "once") {
  334. if (gvReportDataType != "XMLSTR" && gvReportDataType != "CSVSTR") {
  335. try{
  336. oConnection.Send();
  337. }catch(e){
  338. alert(e.message);
  339. alert(oConnection.Response());
  340. }
  341. }
  342. if (gvReportDataType == "XMLFILE" || gvReportDataType == "XMLSTR") {
  343. var sXpath = gvReportXPath;
  344. if (isNull(sXpath)) {
  345. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, "", 0);
  346. } else {
  347. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, sXpath, 0);
  348. }
  349. } else {
  350. oDataSet = fCreateDataSet(oReport, oConnection, gvReportDataType, oDataSet, "root/main/rpt1/rexdataset/rexrow", 0);
  351. }
  352. if( oDataSet == null ) return ;
  353. if (gvMainReportInfos.CallBack != null) {
  354. gvMainReportInfos.CallBack(oReport, oDataSet);
  355. }
  356. for (i = 1; i <= oReport.GetReportCount(); i++) {
  357. oSubReport = oReport.OpenReport(i - 1);
  358. if (gvReportDataType == "XMLFILE" || gvReportDataType == "XMLSTR") {
  359. var sXpath = gvMainReportInfos.get("rex_xpath" + i);
  360. if (isNull(sXpath)) {
  361. oDataSet = fCreateDataSet(oSubReport, oConnection, gvReportDataType, oDataSet, "", i);
  362. } else {
  363. oDataSet = fCreateDataSet(oSubReport, oConnection, gvReportDataType, oDataSet, sXpath, i);
  364. }
  365. } else {
  366. oDataSet = fCreateDataSet(oSubReport, oConnection, gvReportDataType, oDataSet, "root/main/rpt" + (i + 1) + "/rexdataset/rexrow", i);
  367. }
  368. if( oDataSet == null ) return ;
  369. }
  370. }
  371. // Run() 을 RunAsBlocking() 으로 변환 -> 쓰레드사용을 못하게 해서 리포터가 모두 생성된 다음 작업이 가능하도록.
  372. objRexpert.RunAsBlocking();
  373. } // end fReportPreView
  374. // CreateConnection
  375. function fCreateConnection(sDataType)
  376. {
  377. var oConnection;
  378. if (sDataType == "XMLFILE")
  379. {
  380. oConnection = objRexpert.CreateConnection("http.get");
  381. }
  382. else if (sDataType == "CSVFILE")
  383. {
  384. oConnection = objRexpert.CreateConnection("http.csv");
  385. }
  386. else if (sDataType == "XML" || sDataType == "CSV" || sDataType == "" )
  387. {
  388. oConnection = objRexpert.CreateConnection("http.post");
  389. }
  390. else if (sDataType=="XMLSTR" || sDataType=="CSVSTR" )
  391. {
  392. oConnection = objRexpert.CreateConnection("connectionstring");
  393. }
  394. return oConnection;
  395. } // end fCreateConnection
  396. // GetData
  397. function fGetData(oReport, oConnection, sDataType, sUserService, sData)
  398. {
  399. var oSQL;
  400. var oServerConnection;
  401. var oUserService;
  402. if (sDataType=="XML" || sDataType=="CSV")
  403. {
  404. oConnection.AddParameter("datatype", sDataType);
  405. oSQL = oReport.GetSQLControl();
  406. oServerConnection = oReport.GetServerConnection();
  407. oConnection.AddParameter("sql", oSQL.GetSQL());
  408. if ( isNull(sUserService) ) {
  409. oUserService = oServerConnection.GetParameterValue("service");
  410. if ( isNull(oUserService) ) {
  411. oUserService = "jdbc.comdb";
  412. }
  413. }else{
  414. oUserService = "jdbc."+sUserService+"db";
  415. }
  416. oConnection.AddParameter("userservice", oUserService);
  417. // if ( isNull(sUserService) ) {
  418. // oConnection.AddParameter("userservice", is(oServerConnection.GetParameterValue("service")));
  419. // } else {
  420. // oConnection.AddParameter("userservice", "jdbc."+sUserService+"db");
  421. // }
  422. oConnection.Path = gvRexpertServiceURL + gvReportName;
  423. if (fGetSubReportData() == "each") {
  424. oConnection.Send();
  425. }
  426. }
  427. if (sDataType=="XMLFILE" || sDataType=="CSVFILE")
  428. {
  429. //oConnection.Path = sData;
  430. oConnection.Path = getActionURL(gvReportSubmitId) + addReportParameter();
  431. if (fGetSubReportData() == "each") {
  432. oConnection.Send();
  433. }
  434. }
  435. if (sDataType=="XMLSTR" || sDataType=="CSVSTR")
  436. {
  437. oConnection.AddValue("load", sData);
  438. }
  439. //return oConnection;
  440. } // end fGetData
  441. function fCreateDataSet(oReport, oConnection, sDataType, oDataSet, sXpath, idx)
  442. {
  443. if (sDataType=="XMLFILE" || sDataType == "CSVFILE"){
  444. if(fGetUserErrorMsg(oConnection, sDataType) == "error") return null;
  445. }
  446. if (sDataType=="XML" || sDataType == "CSV"){
  447. if(fGetErrorMsg(oConnection, sDataType) == "error") return null;
  448. }
  449. if (sDataType == "CSV" || sDataType == "CSVFILE" || sDataType == "CSVSTR")
  450. {
  451. oDataSet = oReport.CreateDataSetCSV(oConnection, idx, rex_gsCsvSeparatorDataset, rex_gsCsvSeparatorRow, rex_gsCsvSeparatorColumn, "");
  452. }else{
  453. //CreateDataSetXML([연결객체], [루트요소], [바인딩옵션]);
  454. //바인딩 옵션 : 0: 노드명으로 XML바인딩 1: 노드순서로 XML바인딩 2: 노드명으로 XML바인딩시 공백허용 3: 노드순서로 XML바인딩 공백허용
  455. //oDataSet = oReport.CreateDataSetXML(oConnection, sXpath, "2");
  456. oDataSet = oReport.CreateDataSetXML(oConnection, sXpath, 0);
  457. }
  458. return oDataSet;
  459. }
  460. function fGetSubReportData()
  461. {
  462. var subreportData = gvMainReportInfos.get("rex_getsubreportdata");
  463. if ( isNull(subreportData) ) {
  464. return gvSubreportData;
  465. } else {
  466. return subreportData;
  467. }
  468. }
  469. function fGetErrorMsg(oConnection, sDataType)
  470. {
  471. try {
  472. if(sDataType == "CSV"){
  473. var sData = oConnection.Response();
  474. if (sData.length > 5) {
  475. if (sData.substr(0, 5) == "<?xml") {
  476. var idxStart = sData.indexOf("<error>");
  477. var idxEnd = sData.indexOf("</error>");
  478. if (idxStart == -1 || idxEnd == -1) return "";
  479. var sErrMsg = sData.substring(idxStart + 7 + 9, idxEnd - 3);
  480. messageBox(sErrMsg, "C");
  481. return "error";
  482. }
  483. }
  484. return "";
  485. }else{ //XML
  486. var oXMLDOM = oConnection.GetXMLDOM();
  487. if(oXMLDOM != null) {
  488. oXMLDOM.setProperty("SelectionLanguage", "XPath");
  489. var oNodes = oXMLDOM.selectSingleNode("rexpert/error");
  490. if(oNodes == null) {
  491. if (oXMLDOM.parseError.errorCode != 0) {
  492. var oError = oXMLDOM.parseError;
  493. messageBox(oError.reason,"C");
  494. return "error";
  495. }
  496. } else {
  497. messageBox(oNodes.text, "C");
  498. return "error";
  499. }
  500. }
  501. return "";
  502. }
  503. } catch(e) {
  504. messageBox(e.message, "C");
  505. return "error";
  506. }
  507. } // end fGetErrorMsg
  508. // 사용자 에러 메시지 처리 - 강남 성모병원
  509. function fGetUserErrorMsg(oConnection, sDataType)
  510. {
  511. var oXMLDOM = oConnection.GetXMLDOM();
  512. if(oXMLDOM != null) {
  513. try {
  514. oXMLDOM.setProperty("SelectionLanguage", "XPath");
  515. var oNode = oXMLDOM.selectSingleNode("//resultKM");
  516. var sErrMsg = oNode.getAttributeNode("description").text;
  517. handleSystemMessage(sErrMsg);
  518. showSystemMessage(false);
  519. } catch(e) {
  520. messageBox(e.message, "C");
  521. return "error";
  522. }
  523. }
  524. } // end fGetUserErrorMsg
  525. function fCloseReport(){
  526. objRexpert.CloseReport();
  527. }
  528. ]]>
  529. </script>
  530. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  531. <script type="javascript" src="../../../com/commonweb/js/SPZUR00100.js"/>
  532. </xhtml:head>
  533. <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  534. <object id="objRexpert" clsid="{9e1f4a27-7eb0-4210-98d8-1ccf6671f483}" style="left:1%; top:1%; width:98%; height:98%; ">
  535. <script for="objRexpert" type="javascript" ev:event="EndLoadReport()">
  536. <![CDATA[
  537. // 해당 출력물의 전체 페이지 갯수 저장
  538. var pageCount = objRexpert.GetPageCount();
  539. opener.javascript.setParameter("reportPageCount", pageCount);
  540. //바로 파일 저장 설정
  541. //SaveAs([타입명], [저장 경로], [시작페이지], [끝페이지], [옵션리스트])
  542. var reportSaveFileType = gvMainReportInfos.get("rex_filetype");
  543. var reportSaveFileName = gvMainReportInfos.get("rex_filename");
  544. var reportSaveFileDialog = gvMainReportInfos.get("rex_filedialog");
  545. if (! isNull(reportSaveFileType)) {
  546. if(! checkSaveAsFileType(reportSaveFileType)) messageBox("지원하지 않는 파일타입", "E008");
  547. if( isNull(reportSaveFileName) ) reportSaveFileName = gvReportName;
  548. if( isNull(reportSaveFileDialog) ) reportSaveFileDialog = 0;
  549. objRexpert.SaveAs(reportSaveFileType, "c:\\report\\" + reportSaveFileName + "." + reportSaveFileType, 1, -1, "ShowFileDialog=" + reportSaveFileDialog);
  550. }
  551. //objRexpert.SaveAsFilter = "doc";
  552. //바로 출력 설정
  553. //PrintEx2([인쇄창보임여부], [시작페이지] [끝페이지], [출력매수], [출력프린터]);
  554. //<< 옵션으로 사용할수 있는 문자열>>
  555. //* enablezoom : 확대/축소인쇄가능 (예) - > 0/1
  556. //* zoomnumber : 모아찍기 (예) - > 0/1/2/3/4/5/6
  557. //* zoomdirection : 출력순서 (예) - > 0/1
  558. //* enablefittingpaper : 용지크기에 자동 맞춤 (예) - > 0/1
  559. //* printpaper : 출력용지 (예) - > 0/1/2/3/4/5/6
  560. //* printdirection : 용지방향 (예) - > 0/1
  561. //* papersetting : 용지설정 (예) - > 0/1
  562. //* offsetx : 인쇄위치(가로) (예) - > 100
  563. //* offsety : 인쇄위치(세로) (예) - > 100
  564. //* duplex : 양면인쇄 (예) - > 0/1/2/3
  565. //예)
  566. //objRexpert.PrintOption = "enablezoom=1;enablefittingpaper=0;printdirection=1;" (사용자정의)
  567. var reportPrint = gvMainReportInfos.get("rex_print");
  568. var reportPrintDialog = gvMainReportInfos.get("rex_printdialog");
  569. var reportPrintPaperBin = gvMainReportInfos.get("rex_printpaperbin");
  570. var reportPrintCount = gvMainReportInfos.get("rex_printcount");
  571. var reportPrintOption = gvMainReportInfos.get("rex_printoption");
  572. var reportPrinterName = "";
  573. // 바로 출력
  574. if (! (isNull(reportPrint) || reportPrint == "false") ){
  575. if(reportPrint == "true") {
  576. reportPrinterName = "";
  577. }else{
  578. reportPrinterName = reportPrint;
  579. }
  580. if( isNull(reportPrintDialog) ) reportPrintDialog = "false";
  581. if(! isNull(reportPrintPaperBin) ) objRexpert.PrinterPaperBin = reportPrintPaperBin;
  582. if( isNull(reportPrintCount) ) reportPrintCount = "1";
  583. if(! isNull(reportPrintOption) ) objRexpert.PrintOption = reportPrintOption;
  584. objRexpert.PrintEx2(reportPrintDialog, 1, -1, reportPrintCount, "printername="+reportPrinterName);
  585. }else{
  586. //이벤트가 끝나고 나서 "objRexpert.PrintEx2" 에서 FinishPrint 마무리 이벤트를 호출합니다.
  587. //위에 if문상 출력을 false하면 마무리 이벤트를 호출 안하니 else로 강제 호출하도록 추가합니다.
  588. //20101228 cys
  589. opener.model.dispatch("onPrintFinished");
  590. opener.javascript.setParameter("reportprintyn","N");
  591. var reportCloseYn = gvMainReportInfos.get("rex_close");
  592. if(reportCloseYn == "true"){
  593. if(window.type == "iviewer"){
  594. opener.window.close();
  595. }else{
  596. window.close();
  597. }
  598. }
  599. }
  600. // 해당 출력물의 로딩(출력/저장포함)이 끝났을 경우 이벤트 발생(설정한 전체 페이지갯수를 전달할 포인트)
  601. opener.model.dispatch("onEndLoadReport");
  602. ]]>
  603. </script>
  604. <script for="objRexpert" type="javascript" ev:event="FinishPrint()">
  605. <![CDATA[
  606. // 임시파일 삭제를 위하여 호출
  607. //fCloseReport();
  608. // 사용자가 출력버튼 클릭 후, 인쇄작업이 끝났을 때 dispatch
  609. // 출력이 정상적으로 종료되었는지 아닌지는 알 수 없다.
  610. opener.model.dispatch("onPrintFinished");
  611. //messageBox("출력이", "I002");
  612. opener.javascript.setParameter("reportprintyn","Y");
  613. //미리보기창 닫기
  614. var reportCloseYn = gvMainReportInfos.get("rex_close");
  615. if(reportCloseYn == "true"){
  616. if(window.type == "iviewer"){
  617. opener.window.close();
  618. }else{
  619. window.close();
  620. }
  621. }
  622. ]]>
  623. </script>
  624. <script for="objRexpert" type="javascript" ev:event="FinishSaveAs(FileName)">
  625. <![CDATA[
  626. // 사용자가 저장버튼 클릭 후, 저장작업이 끝났을 때 dispatch
  627. opener.model.dispatch("onSaveFinished");
  628. //messageBox("파일저장이", "I002", FileName);
  629. opener.javascript.setParameter("reportsaveyn","Y");
  630. //미리보기창 닫기
  631. var reportCloseYn = gvMainReportInfos.get("rex_close");
  632. if(reportCloseYn == "true"){
  633. if(window.type == "iviewer"){
  634. opener.window.close();
  635. }else{
  636. window.close();
  637. }
  638. }
  639. ]]>
  640. </script>
  641. </object>
  642. </xhtml:body>
  643. </xhtml:html>