MRE001.xjs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[
  3. function chkMsetIdenNode(pa_pkid, ps_desDs, ps_srcDs, ps_delDs, ps_saveDs, pb_skipuseyn, ps_insertseqcol, pa_skipcol, ps_modstatus, ps_addstatus)
  4. {
  5. //var lx_node2 = instance1.selectSingleNode(ps_srcNode);
  6. var lb_rtncheck = true;
  7. var li_insertseq = 0;
  8. var lb_saveyn = (utlf_isNull(ps_saveDs)) ? false : true;
  9. if (lb_saveyn)
  10. {
  11. ps_saveDs.clearData();
  12. //var lx_modinfo = instance1.selectSingleNode(ps_saveNode);
  13. }
  14. for(var i=0; i<ps_srcDs.rowcount; i++)
  15. {
  16. //var lx_node2c = lx_nodeList2.item(i);
  17. // var lx_nodeList2c = lx_node2c.childNodes;
  18. var ls_pkcond = "";
  19. var lb_skipyn = false;
  20. if (utlf_isNull(ps_srcDs.getColumn(i,"status")))
  21. {
  22. continue;
  23. }
  24. // skip 대상을 제외
  25. if ( pb_skipuseyn
  26. && ps_srcDs.getColumn(i,"skipyn") == "Y"
  27. && ps_srcDs.getColumn(i,"inptflag") != "F4")
  28. {
  29. lb_skipyn = true;
  30. }
  31. if (!lb_skipyn) // 비교 및 저장 대상일 경우
  32. {
  33. if (ps_srcDs.getColumn(i,"status") != "i") // 추가 일 경우는 skip
  34. {
  35. // 비교하기 위해서 PK 를 추출
  36. for (j=0;j<ps_srcDs.colcount;j++)
  37. {
  38. if (isMArray(pa_pkid, ps_srcDs.getColID(j)))
  39. {
  40. if (utlf_isNull(ps_srcDs.getColumn(i, ps_srcDs.getColID(j)))) // PK 에 NULL 이 있다면 추가
  41. {
  42. ls_pkcond = "";
  43. break;
  44. }
  45. if (!utlf_isNull(ls_pkcond))
  46. {
  47. ls_pkcond += " && ";
  48. }
  49. ls_pkcond += ps_srcDs.getColID(j) + "=='" + ps_srcDs.getColumn(i, ps_srcDs.getColID(j)) + "'";
  50. }
  51. }
  52. }
  53. if (utlf_isNull(ls_pkcond)) // PK가 존재하지 않을 경우 [추가일 경우]
  54. {
  55. lb_rtncheck = false;
  56. if (lb_saveyn)
  57. {
  58. if (!utlf_isNull(ps_insertseqcol)) // Batch를 위해서 MAX seq를 넣어준다.
  59. {
  60. // while(lx_nodechild2 = lx_nodeList2c.nextNode())
  61. // {
  62. // // 변경된 정보가 있으면 저장
  63. // if (lx_nodechild2.nodeName == ps_insertseqcol)
  64. // {
  65. // lx_nodechild2.NodeValue = ++li_insertseq;
  66. // }
  67. // }
  68. ps_srcDs.setColumn(i,ps_insertseqcol,++li_insertseq);
  69. }
  70. var nRow = ps_saveDs.addRow();
  71. ps_saveDs.copyRow(nRow,ps_srcDs,i);
  72. //lx_modinfo.appendChild(lx_node2c);
  73. // status 값을 저장
  74. if (!utlf_isNull(ps_addstatus))
  75. {
  76. ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_addstatus);
  77. }
  78. else if (!utlf_isNull(ps_modstatus))
  79. {
  80. ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_modstatus);
  81. }
  82. }
  83. else
  84. {
  85. return lb_rtncheck;
  86. }
  87. }
  88. else // 동일 PK가 존재하면
  89. {
  90. //ls_cond = ps_desNode + "[" + ls_pkcond + "]";
  91. // var lx_node = instance1.selectSingleNode(ls_cond);
  92. //var lx_nodeList = lx_node.childNodes;
  93. ps_desDs.filter(ls_pkcond);
  94. for (j=0;j<ps_srcDs.colcount;j++)
  95. {
  96. //var lx_nodechild = lx_nodeList.nextNode()
  97. // 변경된 정보가 있으면 저장
  98. if ( ps_srcDs.getColID(j) != "status" // status는 무조건 skip
  99. && !isMArray(pa_skipcol, ps_srcDs.getColID(j))
  100. && ps_srcDs.getColID(j) == ps_desDs.getColID(j)
  101. && ps_srcDs.getColumn(i, ps_srcDs.getColID(j)) != ps_desDs.getColumn(i, ps_desDs.getColID(j)))
  102. {
  103. lb_rtncheck = false;
  104. if (lb_saveyn)
  105. {
  106. //lx_modinfo.appendChild(lx_node2c);
  107. var nRow = ps_saveDs.addRow();
  108. ps_saveDs.copyRow(nRow,ps_srcDs,i);
  109. // status 값을 저장
  110. if (!utlf_isNull(ps_modstatus))
  111. {
  112. ps_saveDs.setColumn(ps_saveDs.rowcount-1,"status", ps_modstatus);
  113. }
  114. }
  115. else
  116. {
  117. ps_desDs.filter("");
  118. return lb_rtncheck;
  119. }
  120. break;
  121. }
  122. }
  123. ps_desDs.filter("");
  124. }
  125. }
  126. }
  127. //삭제된 노드가 있을 경우 삭제노드 별도 체크 추가
  128. if(!utlf_isNull(ps_delDs))
  129. {
  130. if (ps_delDs.rowcount > 0)
  131. {
  132. return false;
  133. }
  134. }
  135. return lb_rtncheck;
  136. }
  137. function isMArray(pa_src, ps_find)
  138. {
  139. if (utlf_isNull(pa_src)) // skip column이 없다면
  140. {
  141. return false;
  142. }
  143. for (i=0; i<pa_src.length; i++)
  144. {
  145. if (pa_src[i] == ps_find)
  146. {
  147. return true;
  148. }
  149. }
  150. return false
  151. }
  152. /***************************************************************************************************
  153. * Function : emr_getOrderBaseInfo
  154. * Description : 아이디에 해당하는 기초정보를 리턴한다. (시스템메세지 정보 조회)
  155. * Argument : sID [String : 데이타셋명(ds_를 제외한)]
  156. * : objSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  157. * return type : [Dataset : 기초정보를 리턴]
  158. * Creator :
  159. * 변환 OK
  160. ***************************************************************************************************/
  161. function emr_getOrderBaseInfo(sID, objSrcDs)
  162. {
  163. var oDescDs = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo(sID);
  164. if (utlf_isNull(objSrcDs)) {
  165. return oDescDs;
  166. }
  167. else {
  168. objSrcDs.copyData(oDescDs, true);
  169. }
  170. }
  171. //lf_mmbfGetDeptCodeComboList : 부서 콤보 조회
  172. /***************************************************************************************************
  173. * Function : lf_mmbfGetDeptCodeComboList
  174. * Description : 부서 콤보 조회
  175. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  176. * : sOrdDeptFlag [String : 진료과구분]
  177. * : sStnddd [String : 기준일]
  178. * return type : [Dataset : 조회된 부서 리스트]
  179. * Creator :
  180. * Conversion : TF SVN.60233
  181. ***************************************************************************************************/
  182. function lf_mmbfGetDeptCodeComboList(oDsRsltRef, sOrdDeptFlag, sStnddd)
  183. {
  184. var isSearchStnddd = false;
  185. var hasStnddd = (!utlf_isNull(sStnddd) && sStnddd.length == 8);
  186. if (hasStnddd) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
  187. isSearchStnddd = true;
  188. } else {
  189. // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고
  190. // 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  191. var sID = "";
  192. switch (sOrdDeptFlag) {
  193. case "A" : // ALL
  194. case "" :
  195. case null :
  196. sID = "alldeptinfo";
  197. break;
  198. case "C" :
  199. sID = "centdeptinfo";
  200. break;
  201. case "D" : // 퇴원
  202. sID = "dscdeptinfo";
  203. break;
  204. case "W" : // 병동
  205. sID= "warddeptinfo";
  206. break;
  207. case "O" : // 외래
  208. sID = "otptdeptinfo";
  209. break;
  210. case "I" : // 입원
  211. sID = "inptdeptinfo";
  212. break;
  213. case "E" : //시행부서
  214. sID = "dept";
  215. break;
  216. }
  217. var oSrcDs = emr_getOrderBaseInfo(sID);
  218. if (oSrcDs.rowcount > 0) { // 복사할 원본 데이터가 존재하면 복사
  219. oDsRsltRef.copyData(oSrcDs, true);
  220. }
  221. else {
  222. isSearchStnddd = true;
  223. }
  224. }
  225. if(isSearchStnddd) {
  226. // KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  227. // 데이타셋 생성및 로우 생성후 값설정 공통 함수 [/com_commonxp/comm_ds에 정의]
  228. var sRef = dsf_createDsRow("ds_cond_dept", [{col:"orddeptflag", type:"string", size:256, val:""},
  229. {col:"stnddd", type:"string", size:256, val:""}]);
  230. var oRef = this.objects[sRef];
  231. if(!hasStnddd)
  232. sysf_messageBox("현재 프로그램 배포로 인해 진료에 필요한 데이터를 재조회 해야합니다. 죄송하지만 반드시 다시 로그인 해주시기 바랍니다.", "");
  233. oRef.clearData();
  234. oRef.addRow();
  235. oRef.setColumn(0, "orddeptflag", sOrdDeptFlag);
  236. if (hasStnddd) oRef.setColumn(0, "stnddd", sStnddd); // 기준일
  237. var oParam = {};
  238. oParam.id = "TRMMB04101"; // transaction을 구분하기 위한 ID
  239. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  240. oParam.method = "reqGetDeptComboList"; // method ID
  241. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  242. oParam.outds = oDsRsltRef.name + "=dept"; // transaction을 처리 결과를 받을 Dataset의 ID
  243. tranf_submit(oParam);
  244. // Temp로 사용한 Dataset을 삭제
  245. var oRemoveDs = this.removeChild(sRef);
  246. oRemoveDs = null;
  247. }
  248. }
  249. //lf_mmbfGetUserComboList : EMR사용자콤보 조회
  250. /***************************************************************************************************
  251. * Function : lf_mmbfGetUserComboList
  252. * Description : EMR사용자콤보 조회
  253. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  254. * : sDeptCd [String : 부서코드]
  255. * : sJobKindCd [String : 직종코드]
  256. * : sSpeCordYN [String : 선택진료여부]
  257. * : sDrFlag [String : 의사구분, 가상사용자 제외]
  258. * : sStandd [String : 조회기준일자]
  259. * : sNmDispFlag [String : 이름뒤에 특진(Y)표시 할것인지 구분]
  260. * : sJobFlag [String : 주치의 담당의 조회기준 (JobKindCD, JobPoscd)]
  261. * : sSpecDrChk [String : 선택진료 의사 모두 조회한다.]
  262. * : sInternFlag [String : 인턴포함여부]
  263. * return type :
  264. * Creator :
  265. * Conversion : TF SVN.60233
  266. ***************************************************************************************************/
  267. function lf_mmbfGetUserComboList(oDsRsltRef, sDeptCd, sJobKindCd, sSpeCordYN, sDrFlag, sStandd, sNmDispFlag, sJobFlag, sSpecDrChk, sInternFlag)
  268. {
  269. var sRef = dsf_createDsRow("ds_cond_usercombo", [{col:"deptcd", type:"string", size:256, val:sDeptCd}, // 부서코드
  270. {col:"jobkindcd", type:"string", size:256, val:sJobKindCd}, // 직종코드(의사:0330)
  271. {col:"specordyn", type:"string", size:256, val:sSpeCordYN}, // 선택진료여부
  272. {col:"drflag", type:"string", size:256, val:sDrFlag}, // 주치의, 담당의 구분(M : 주치의 , A:담당의 )
  273. {col:"standd", type:"string", size:256, val:sStandd}, // 조회기준일자
  274. {col:"jobflag", type:"string", size:256, val:sJobFlag}, // 조회구분 Jobkindcd(K), Jobposcd(P)
  275. {col:"specdrchk", type:"string", size:256, val:sSpecDrChk}, // 진료과조건 제외
  276. {col:"nmdispflag", type:"string", size:256, val:""}]);
  277. var oRef = this.objects[sRef];
  278. if (utlf_isNull(sNmDispFlag))
  279. oRef.setColumn(0, "nmdispflag", "N"); // 이름에 특진여부표시구분
  280. else
  281. oRef.setColumn(0, "nmdispflag", sNmDispFlag); // 이름에 특진여부표시구분
  282. var oParam = {};
  283. oParam.id = "TRMMB04102"; // transaction을 구분하기 위한 ID
  284. oParam.service = "prcpbaseapp.EnvInfoMngt"; // service ID
  285. oParam.method = "reqGetUserComboList"; // method ID
  286. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  287. oParam.outds = oDsRsltRef.name + "=usercombo"; // transaction을 처리 결과를 받을 Dataset의 ID
  288. tranf_submit(oParam);
  289. // Temp로 사용한 Dataset을 삭제
  290. var oRemoveDs = this.removeChild(sRef);
  291. oRemoveDs = null;
  292. }
  293. //lf_getHardCDList : 조회된 하드코드 리스트를 조회한다.
  294. /***************************************************************************************************
  295. * Function : lf_getHardCDList
  296. * Description : 조회된 하드코드 리스트를 조회한다.
  297. * Argument : sOption [Stirng : Y/값을 리턴한다, N/데이터셋을 반환한다.]
  298. * : sHardCdNo [String : 하드코드 번호]
  299. * : sRtnValue [String : 변환형태 Flag]- sOption이 "Y"일 때만 관련있음.
  300. * : oDsRsltRef [Dataset : 대상 데이타셋]
  301. * return type : option = "N" 일 경우: 데이터셋 복사
  302. "Y" 일 경우: sRtnValue 변환형태플래그 [0:리턴값 반환하지 않음 (하드코드 값이 여러개일 때 선택, 1:hardcdno를 리턴, 2:hardcodenm 을 리턴
  303. 3:hardcd 를 리턴 4:hardcdnm를 리턴, 5:cdseqno를 리턴, 9:hardcd+ "|" + hardcdnm + "|" + cdseqno 형태로 리턴]
  304. * Creator :
  305. * ex) : lf_getHardCDList("N", 60, null, oDsRsltRef);
  306. var rtnHardcd = lf_getHardCDList("Y", 60, 1, null);
  307. ***************************************************************************************************/
  308. function lf_getHardCDList(sOption, sHardCdNo, sRtnValue, oDsRsltRef)
  309. {
  310. var oDsHardCd = emr_getHardcodeTable(sHardCdNo);
  311. var sHardCd;
  312. var sHardCdNm;
  313. var nCdSeqNo;
  314. if (!utlf_isNull(oDsHardCd)) {
  315. if (sOption == "Y") {
  316. try {
  317. var sHardCdNo = oDsHardCd[0].hardcdno;
  318. var sHardCodeNm = oDsHardCd[0].hardcodenm;
  319. sHardCd = oDsHardCd[0].hardcd;
  320. sHardCdNm = oDsHardCd[0].hardcdnm;
  321. nCdSeqNo = oDsHardCd[0].cdseqno;
  322. }
  323. catch(e) {
  324. trace("lf_getHardCDList Error : " + e);
  325. }
  326. if (sRtnValue == 1) {
  327. return sHardCdNo;
  328. }
  329. else if (sRtnValue == 2) {
  330. return hardcodenm;
  331. }
  332. else if (sRtnValue == 3) {
  333. return sHardCd;
  334. }
  335. else if (sRtnValue == 4) {
  336. return sHardCdNm;
  337. }
  338. else if (sRtnValue == 5) {
  339. return nCdSeqNo;
  340. }
  341. else if (sRtnValue == 9) {
  342. return sHardCd+ "|" + sHardCdNm + "|" + nCdSeqNo;
  343. }
  344. }
  345. else {
  346. var destListLen = oDsRsltRef.rowcount;
  347. // 한번이라도 복사된 내용이 있으면 다시 안하도록 수정 2011. 01.20 김영학
  348. if (destListLen < 1 ) {
  349. if (!utlf_isNull(oDsHardCd)) {
  350. // 하드코드 Object 갯수 만큼 loop 작업
  351. for (var i = 0; i < oDsHardCd.length; i++)
  352. {
  353. var nAddRow = oDsRsltRef.addRow();
  354. // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
  355. for (var j in oDsHardCd[i])
  356. {
  357. oDsRsltRef.addColumn(j, "STRING");
  358. oDsRsltRef.setColumn(nAddRow, j, oDsHardCd[i][j]);
  359. }
  360. }
  361. oDsRsltRef.applyChange();
  362. }
  363. }
  364. }
  365. }
  366. }
  367. /***************************************************************************************************
  368. * Function : emr_getHardcodeTable
  369. * Description : 하드코드테이블에서 해당 하드코드에 대한 Object Array 를 반환한다.
  370. * Argument : sHardcdno [String : 하드코드 번호]
  371. * : oSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  372. * return type : [Object : 하드코드 테이블]
  373. * Creator :
  374. ***************************************************************************************************/
  375. function emr_getHardcodeTable(sHardcdno, oSrcDs)
  376. {
  377. var oDsHardCd = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getHardcodeTable(sHardcdno);
  378. // var oDsHardCd = lf_getAllBizCodeList([{bizFlag: "M", cdGrpId: sHardcdno, dsNm: oSrcDs, sortField: "", sortMethod: ""}]
  379. // , true // 최소 컬럼 조회여부
  380. // , false // 비동기 여부
  381. // , "cbf_hardCodeTable"); // callBack 함수명
  382. if (utlf_isNull(oSrcDs)) {
  383. return oDsHardCd;
  384. }
  385. else {
  386. // 하드코드 Object 갯수 만큼 loop 작업
  387. for (var i=0 ; i < oDsHardCd.length ; i++)
  388. {
  389. var nAddRow = oSrcDs.addRow();
  390. // Object의 property 갯수 만큼 loop 작업을 하면 Dataset의 컬럼생성 및 Row 값 설정
  391. for (var j in oDsHardCd[i])
  392. {
  393. oSrcDs.addColumn(j, "STRING");
  394. oSrcDs.setColumn(nAddRow, j, oDsHardCd[i][j]);
  395. }
  396. }
  397. }
  398. }
  399. //lf_reqPatInfo : 환자의 기초정보를 조회한다.(pid, hngnm)
  400. /***************************************************************************************************
  401. * Function : lf_reqPatInfo
  402. * Description : 환자의 기초정보를 조회한다.(pid, hngnm)
  403. * Argument : dataset [Dataset: 조회된 내용을 담을 데이터셋]
  404. : srchflag[String : 등록번호, 환자명 구분 "pid"/"hngnm"]
  405. : tblflag [String : 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)]
  406. : param [String : 등록번호 / 환자명
  407. : stnddd [String : 외래/입원일자]
  408. * return type : true/false
  409. * Creator : 윤지현
  410. ***************************************************************************************************/
  411. function lf_reqPatInfo(oDsRsltRef, srchflag, tblflag, param, stnddd){
  412. var pid = "";
  413. var hngnm = "";
  414. var orddd = stnddd;
  415. var queryFlag = tblflag;
  416. if(srchflag == "pid"){ //등록번호 검색
  417. pid = param;
  418. hngnm = "";
  419. }else if(srchflag == "hngnm"){
  420. pid = "";
  421. hngnm = param;
  422. }
  423. var sRef = dsf_createDsRow("ds_req_patInfo", [{col:"pid" , type:"string", size:256, val:pid},
  424. {col:"hngnm" , type:"string", size:256, val:hngnm},
  425. {col:"orddd" , type:"string", size:256, val:orddd},
  426. {col:"queryflag" , type:"string", size:256, val:queryFlag},
  427. {col:"srchflag" , type:"string", size:256, val:srchflag}]);
  428. var oRef = this.objects[sRef];
  429. var oParam = {};
  430. oParam.id = "TRMMO04105"; // transaction을 구분하기 위한 ID
  431. oParam.service = "prcpmngtapp.EtcPrcpMngt"; // service ID
  432. oParam.method = "reqGetPatNM"; // method ID
  433. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  434. oParam.outds = oDsRsltRef.name + "=patnm"; // transaction을 처리 결과를 받을 Dataset의 ID
  435. tranf_submit(oParam);
  436. //trace(oDsRsltRef.saveXML());
  437. if(oDsRsltRef.rowcount == 0){ //정보가 없을 때 메세지 출력
  438. if(srchflag == "pid") sysf_messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  439. else if(srchflag == "hngnm") sysf_messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  440. return false;
  441. }
  442. // Temp로 사용한 Dataset을 삭제
  443. var oRemoveDs = this.removeChild(sRef);
  444. oRemoveDs = null;
  445. return true;
  446. }
  447. //lf_compareNodeVal : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
  448. /***************************************************************************************************
  449. * Function : lf_compareNodeVal
  450. * Description : 두 Dataset을 비교하여 결과에 따라 true, false를 return한다.
  451. * Argument : oDescDs [Dataset : 목적노드]
  452. * : oSrcDs [Dataset : 원본노드]
  453. * return type : Boolean[true/false]
  454. * Creator :
  455. ***************************************************************************************************/
  456. function lf_compareNodeVal(oDescDs, oSrcDs)
  457. {
  458. // 컬럼 갯수가 다른 경우 true
  459. if (oDescDs.colcount != oSrcDs.colcount) return true;
  460. for (var i=0 ; i<oDescDs.colcount ; i++) {
  461. var oColInfo = oDescDs.getColumnInfo(i);
  462. var desValue = oDescDs.getColumn(0, oColInfo.name);
  463. var srcValue = oSrcDs.getColumn(0, oColInfo.name);
  464. // 값이 다른 경우 true
  465. if (desValue != srcValue)
  466. return true;
  467. }
  468. return false; // 값이 같은 경우 false
  469. }]]></Script>