Cache数据库组件学习指南.doc_第1页
Cache数据库组件学习指南.doc_第2页
Cache数据库组件学习指南.doc_第3页
Cache数据库组件学习指南.doc_第4页
Cache数据库组件学习指南.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 创建组件一, 新建组件说明:1. Name组件名称2. “Display Type”显示类型一般选择Custom3. “Class Name”类名可以写出类名前几个字符,以便查找4. “Query Name”查询名称(见 创建Query)5. 一般选择 “Include Script”和”Include Custom Script”二, 添加组件子件 说明:1. 单独选择 ”Custom Item” 可以是:标签说明输入框的类型按钮BUTTON执行某项的按钮输入框TEXTBOX让用户输入内容连接LINK2. 选择”Custom”和”Custom Item”两项全选择会实现: 一个有标签的查找输入框(例如想让用户输入一个部门),输入框与Query联系,可弹出一个部门列表供用户选择。 3. ”Custom Table Item” 返回结果集的字段1. 可弹出选择列表的输入框(带有放大镜图标,弹出部门列表,让用户选择部门)1) General 选项卡Display Type 选择TEXTBOX2) Lookup 选项卡(1)LookupClassName类名(可据此找到类的文件)(2)LookupqueryName查询的名称2. 可执行的按钮(例如“查找“按钮)1) Link 选项卡(1) LinkUrl连接的页面(2) LinkComponment连接到的组件名称第二章 创建菜单一 创建菜单位置:菜单管理-菜单管理器1标题2名称3连接元素组件4连接URL (?)5 子菜单挂靠在那个菜单下 二 权限赋予 位置:工具栏-安全组-按“查找“按钮-选择要设置安全组的“菜单访问” 在弹出页面的“旁边菜单”中选择要 显示的菜单第三章 创建执行代码一,创建Query 1. 选择 This Query is based on an SQL statement返回值 % SQLQuery2. 选择 This query is based on user-written code 返回值 %Query如要创建 XXXX 查询,系统会自动创建三个类方法 XXXXClose XXXXExcuteXXXXFetch第四章 页面控件的取值方法表格项(字段)输入框(可以和表格的字段对应起来)按钮多选项调用对象方法注意:此类控件(对象)的一定要勾选Hidden,使此控件隐藏.第五章工作流定义一、工作流的作用二、定义工作流1. 工作流定义1) 工作流定义菜单管理-工作流项目定义2. 工作流项目定义定义工作流项目按定义功能菜单(可以显示页面)定义3. 定义工作组1)定义主菜单标题)激活4. 定义使用用户5. 定义有工作流的组显示的顶层菜单见()只能选择在工作组中选择的主菜单的子菜单附录一 源代码 查找病人信息ClassMethod GetPatBaseInfoExecute(ByRef qHandle As %Binary, wardid As %String) As %Status /病人基本信息 Set repid=$I(CacheTemp) If $g(ind)= Set ind=1 if wardid= Set qHandle=$lb(0,repid,0) Quit $OK /s admId= f s admId=$O(PAADM(admId) q:admId= d i (wardid=) d .s paroom=0 f s paroom=$o(PAADMi(CurrWard,wardid,paroom) q:paroom= d .s admId=0 f s admId=$o(PAADMi(CurrWard,wardid,paroom,admId) q:admId= d .s pavisit=$p($g(PAADM(admId),20) .i pavisit=D q .s admno=$p($g(PAADM(admId),81) .s papmiId=$p($g(PAADM(admId),1) .s regNo=$p($g(PAPER(papmiId,PAT,1),1) .s patName=$p($g(PAPER(papmiId,ALL),1) .s sex=$p($g(CT(SEX,$p($g(PAPER(papmiId,ALL),7),2) .s bedSub=$p($p($g(PAADM(admId),73),|,2) ./&js .q:bedSub= .s bedCode=$p($g(PAWARD(wardId,BED,bedSub),1) .q:bedCode= ;防止床位有变化 Do Output11 Set qHandle=$lb(0,repid,0) Quit $OKOutput11 set Data=$lb(regNo,patName,sex,bedCode) Set CacheTemp(repid,ind)=Data Set ind=ind+1 quitClassMethod GetPatBaseInfoFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status PlaceAfter = GetPatBaseInfoExecute Set AtEnd=$LIST(qHandle,1) Set repid=$LIST(qHandle,2) Set ind=$LIST(qHandle,3)/ Set ind=$o(CacheTemp(repid,ind) If ind= / if there are no more rows, finish fetching Set AtEnd=1 Set Row= Else / fetch row Set Row=CacheTemp(repid,ind) / Save QHandle s qHandle=$lb(AtEnd,repid,ind)Quit $OKQuery GetPatBaseInfo(wardid As %String) As %Query(ROWSPEC = regNo,patName,sex,bedCode)ClassMethod GetPatBaseInfoClose(ByRef qHandle As %Binary) As %Status PlaceAfter = GetPatBaseInfoExecute Set repid=$LIST(qHandle,2) Kill CacheTemp(repid) Quit $OKafeigoo_wuqk 说:var str=websys.default.csp?WEBSYS.TCOMPONENT=UDHCJFIntPay&BillNo=+BillNo window.open(str,_blank,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=yes,width=700,height=520,left=0,top=0)附录(语言)References Tables 和Child Tables 有什么区别?两表之间是父子表的关系: 删除父表的记录,也会删除父表的子项 父表RowId=PatRef_”|”_ChildSub两表之间是引用表的关系: 参考关系数据的关联表的关系附录(实例)88/trakcarep5/web/user:demopass:demo菜单:INSU组件 人员类别 -组件:INSUPatTypeCom脚本:INSUPatTypeCom.js 主要功能实现:表的插入,删除,更新var CurrentSel=0function BodyLoadHandler() var obj=document.getElementById(Update);if (obj) obj.onclick=Updat_click;var obj=document.getElementById(Delete);if (obj) obj.onclick=Delete_click;iniForm();页面载入函数(页面载入时调用,见后)(* 必须)取得页面元素按钮(对象变量)(Update更新)按钮(Update)赋予脚本页面元素的名称取自 组件function iniForm()初始化函数(初始 变量)function Updat_click() var iCode=,iDesc=,iDemo=,iEnable=,iRowid= var obj=document.getElementById(Code); if (obj)iCode=obj.value var obj=document.getElementById(Desc); if (obj)iDesc=obj.value var obj=document.getElementById(Demo); if (obj)iDemo=obj.value var obj=document.getElementById(Enable); if (obj) if (obj.checked=true)iEnable=1 elseiEnable=0 var obj=document.getElementById(Rowid); if (obj)iRowid=obj.value if (iCode=|iDesc=|iEnable=) /alert(Please entry all information.); alert(t01); return false var Instring=iRowid+iCode+iDesc+iEnable+iDemo; var Ins=document.getElementById(ClassBox); if (Ins) var encmeth=Ins.value else var encmeth=; var flag=cspRunServerMethod(encmeth,Instring) if (flag=0) else /alert(Insert error.ErrNo=+flag) alert(t02+flag); location.reload();输入参数 验证(非空)利用事先定义的常量(在组件中定义:多语言实现:可移植)function Delete_click() var iRowid= var obj=document.getElementById(Rowid); if (obj)iRowid=obj.value if (iRowid=) /alert(Please select the row to be deleted.); alert(t03); return false /if (confirm(Are you sure delete it?) if (confirm(t04) var Ins=document.getElementById(DeleteBox); if (Ins) var encmeth=Ins.value else var encmeth=; var flag=cspRunServerMethod(encmeth,iRowid) if (flag=0) else /alert(Delete error.ErrNo=+flag) alert(t05+flag); location.reload(); 显示语句来自组件Messages未选择,报警 特殊技巧:在组件中创建不可见控件,用其值隐藏服务(对象方法)和通过其调用服务cspRunServerMethod调用服务器上的对象方法 encmeth 方法名 web.INSUPatTypeCom.Deletefunction WriteTest(value)alert(value)function SelectRowHandler()var eSrc=window.event.srcElement;var objtbl=document.getElementById(tINSUPatTypeCom);var rows=objtbl.rows.length;var lastrowindex=rows - 1;var rowObj=getRow(eSrc);var selectrow=rowObj.rowIndex; /alert(selectrow+/+rows) if (!selectrow) return;var SelRowObjvar objif (selectrow=CurrentSel)obj=document.getElementById(Code); obj.value=; obj=document.getElementById(Desc); obj.value=; obj=document.getElementById(Demo); obj.value=; obj=document.getElementById(Enable); /alert(obj.checked) obj.checked=false; obj=document.getElementById(Rowid); obj.value=; CurrentSel=0 return;CurrentSel=selectrow;SelRowObj=document.getElementById(TCodez+selectrow);obj=document.getElementById(Code);obj.value=SelRowObj.innerText;SelRowObj=document.getElementById(TDescz+selectrow);obj=document.getElementById(Desc);obj.value=SelRowObj.innerText;SelRowObj=document.getElementById(TDemoz+selectrow);obj=document.getElementById(Demo);obj.value=SelRowObj.innerText;SelRowObj=document.getElementById(TEnablez+selectrow);obj=document.getElementById(Enable);/alert(obj.checked)obj.checked=SelRowObj.checked;SelRowObj=document.getElementById(TIdz+selectrow);obj=document.getElementById(Rowid);obj.value=SelRowObj.value;/alert(SelRowObj.value)系统会将设计时插入页面的Query(table对象)转化为web表格(table)对象,表格对象名 t+组件名 表的RowId 虽然不显示,但不可忘记赋值。负责删除/更改等操作无法进行 Rowid 是专为与 TId 对应而设置的(对象)变量,不显示。在这里郑重建议:为表中所有的字段一一定义相应的页面变量document.body.onload = BodyLoadHandler;当页面载入时,执行此函数(* 必须)88/trakcaresxdt/web/user:demopass:demo错误列表:1. 组件的query 对象不存在 2. $Piece与$List ClassMethod StationListExecute(ByRef qHandle As %Binary, RowId As %String) As %StatusSet repid=$I(CacheTemp) s ind=1 s id=f s id=$o(DHCTJST(id) q:id= d.s CurData=$g(DHCTJST(id).s Code=$List(CurData,1) .s Desc=$List(CurData,2) .s Place=$List(CurData,3) .s Sequence=$List(CurData,4) .s Active=$List(CurData,5) .d BuildSet qHandle=$lb(0,repid,0)Quit $OKBuild set Data=$lb($g(id),Code,Desc,Place,Sequence,Active) Set CacheTemp(repid,ind)=Data Set ind=ind+1 qClassMethod StationListExecute(ByRef qHandle As %Binary, RowId As %String) As %StatusSet repid=$I(CacheTemp) s ind=1 s id=f s id=$o(DHCTJST(id) q:id= d.s CurData=$g(DHCTJST(id).s Code=$p(CurData,1) .s Desc=$p(CurData,2) .s Place=$p(CurData,3) .s Sequence=$p(CurData,4) .s Active=$p(CurData,5) .d BuildSet qHandle=$lb(0,repid,0)Quit $OKBuild set Data=$lb($g(id),Code,Desc,Place,Sequence,Active) Set CacheTemp(repid,ind)=Data Set ind=ind+1 q2. 没有为ST_RowId(表的RowId) 设置对应的页面变量RowID 出错现象:不能删除(找不到RowID对象,不能确定记录)3. 错误使用代码缩进ClassMethod Save(itmjs As %Library.String = , itmjsex As %Library.String = , InString As %Library.String = ).s Rowid=$p(InString,1).s Code=$p(InString,2) .s Desc=$p(InString,3) .s Place=$p(InString,4) .s Sequence=$p(InString,5) .s Active=$p(InString,6)&sql(update DHC_TJ_Station set ST_Code =:Code, ST_Desc =:Desc, ST_Place =:Place, ST_Sequence =:Sequence, ST_Active=:Active where ST_RowId= :Rowid ) q InString_ _Rowid红色代码未执行给出的 SQLCODE 是 100 100No (more) data4.程序中用于调试的代码在完成使命以后一定要删除 function trim(s) var m = s.match(/s*(S+(s+S+)*)s*$/); return (m = null) ? : m1; 注意Cache 对象的类方法ClassMethod 的参数不能有下滑线 _ 错误原因:调用此页面需要一个参数,首次调用未传递参数错误代码ClassMethod QueryAllExecute(ByRef qHandle As %Binary, ParRef As %Library.String) As %Status Set repid=$I(CacheTemp)/Set qHandle=$lb(0,repid,0) s ind=1 s id=f s id=$o(DHCTJST(ParRef,O,id) q:id= d.s xx=$g(DHCTJST(ParRef,O,id).s iParRef=ParRef.s iChildsub=id.s iRowId=iParRef_|_id.s iARCIMDR=xx.s iARCIMCode=$p(ARCIM($p(xx,|,1),$p(xx,|,2),1),1).s iARCIMDesc=$p(ARCIM($p(xx,|,1),$p(xx,|,2),1),2) .d BuildSet qHandle=$lb(0,repid,0)Quit $OKBuild set Data=$lb(iParRef,iRowId,iChildsub,iARCIMDR,iARCIMCode,iARCIMDesc) Set CacheTemp(repid,ind)=Data Set ind=ind+1 q接上,加一判断语句,当传入值为空,则退出ClassMethod QueryAllExecute(ByRef qHandle As %Binary, ParRef As %Library.String) As %Status Set repid=$I(CacheTemp)/Set qHandle=$lb(0,repid,0) s ind=1 s id= i =ParRef q f s id=$o(DHCTJST(ParRef,O,id) q:id= d.s xx=$g(DHCTJST(ParRef,O,id).s iParRef=ParRef.s iChildsub=id.s iRowId=iParRef_|_id.s iARCIMDR=xx.s iARCIMCode=$p(ARCIM($p(xx,|,1),$p(xx,|,2),1),1).s iARCIM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论