版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、开发培训文档一 数据库安装与配置1. 数据库安装准备好安装文件之后,我们便可以开始安装Caché:步骤1:在Windows 中,运行安装文件目录下的SETUP.EXE 文件。首先弹出的是Caché 安装程序界面以及使用协议,阅读协议后,如果同意协议内容,准备好安装文件之后,我们便可以开始安装Caché:步骤1:在Windows 中,运行安装文件目录下的SETUP.EXE 文件。首先弹出的是Caché 安装程序界面以及使用协议,阅读协议后,如果同意协议内容,点击按钮”是”,进入下一页面。步骤2:如果本机操作系统是第一次安装Caché,将会提示输入
2、安装名称,默认值为“CACHE”。* 安装名称又称配置名称,当一台计算机安装了多个Caché 时,此名称用来进行标识。* 如果本机已安装了Caché,安装程序将会显示出当前已安装的Caché 列表,我们可以选择覆盖原有的Caché 或添加一个新的Caché。点击按钮“Next>”,进入下一页面。步骤3:在本页面中设定安装类型和安装路径。Caché 安装程序中共有三种安装类型:a. 标准(Standard,默认选项)。安装Caché 服务器和客户端的所有工具。b. 客户端(Client)。只安装Caché 的客
3、户端的所有工具。c. 自定义(Custom)。允许你自己定制要安装到你的计算机上的各个部分的清单,例如:只作Web 服务器安装。设置目标文件夹:安装路径默认为“c:CacheSys”。你可以点击“浏览” 来更改希望安装在那个文件夹。点击按钮“下一步>”,进入下一页面。步骤4:在本页面中可选择设置成Unicode 支持(16-bit)。(*否则系统默认将会是自动设置成为8-bit 的)选择“Unicode”,这样Caché 就可以支持中文显示。点击按钮“下一步>”,进入下一页面。步骤5:本页面列出了前面步骤中所输入的信息以待最后检查。检查无误后,点击按钮“下一步>”,
4、便开始安装过程。* 此时Caché 将开始安装步骤6:安装过程将需要要持续一段时间。在这期间安装进程可能会暂停,进行提问:如果安装程序没有发现许可证(License Key),将会提示是否现在安装许可证,选择“否(N)”时。我们可以在Caché 安装完成后再安装许可证。如果安装程序发现IIS(Internet Information Service)服务正在运行,将会进一步提示是否现在关闭IIS 服务以配置CSP 脚本驱动程序。选择“Yes”。安装程序会自动配置CSP 到IIS 中。* 如果运行的是Apache 服务器,安装程序也会检测到并自动配置。* 安装完成之后,我们也
5、可以再去修改Web Server 的配置。步骤7:安装过程顺利完成后,点击按钮“完成”,退出安装程序。安装过后在Caché 安装完毕后,在我们的计算机中多了如下项目:在文件系统中,新增了一个文件夹目录:“c:CacheSys” (该目录即为安装阶段默认的安装路径)。Caché 的系统文件和数据库文件等都位于这个目录中:* 对于不同的安装配置,目录结构会略有不同。但主要的目录如Bin、CSP 和Mgr 不会有变化。在Windows 桌面右下方的任务栏中增加了一个立方体形状的图标,我们称之为Caché 立方体(Caché Cube)。它是访问Cach
6、3; 的最常用的入口。点击Caché 立方体,将会弹出一个菜单,通过此菜单我们可以选择各种工具来管理Caché。菜单中包含如下项目:Getting Started 入门文档初学者可从中获取必要信息Start Caché启动Caché 启动Caché 服务Stop Caché关闭Caché 关闭Caché 服务。点击后选择是要关闭还是要重新启动Caché。Studio工作室Caché 的集成开发环境。Terminal终端通过类似于DOS 的终端界面访问CachéExplorer资源管理器
7、查看Caché 中的数据资源,包括多维数组、类和例程SQL Manager SQL管理器通过关系型方式访问CachéControl Panel控制面板监视和管理Caché 的运行Configuration Manager配置管理器进行基本配置,包括数据库的配置Documentation联机文档只有启动Caché 后才可以阅读全部文档信息Remote System Access >远程系统访问在本地控制远端的Caché 服务器(任意平台)。UNIX 系统的管理要通过这种方式实现。子菜单中同样包含了工作室,终端,资源管理器,SQL 管理器,控
8、制面板,配置管理器,联机文档等菜单项。Preferred Server当前使用的Caché服务器子菜单中可以编辑Caché 服务器列表。在这里配置远程服务器。我们可以在一台Windows 平台的计算机上管理网络中所有的各种平台的Caché 服务器。About关于查看版本Exit 退出关闭任务栏中的Caché 立方体2. 安装FDBMS解压缩FDBMS的压缩包,根据FDBMS中的readme文件安装复制CACHE.DAT到 c:cachesysmgrfdbms 目录(fdbms目录要创建)在cache的configuration manager中创建相应的
9、Database和Namespace在Terminal中执行USER> zn “%SYS”%SYS>do PROTECTDirectory: : c:cachesysmgr => c:cachesysmgrfdbmsSet the protection codes of globalsOwner: RWD=> RWDGroup: N=> RWDWorld: N=> RWDNetwork:RWD=> RWDAll Globals? No => NoGlobal rOBJ1 item selected from23 available globals
10、Global Done.More? No => NoDirectory: : c:cachesysmgr => QUITSYS> zn “FDBMS”FDBMS> d mdbmsins(“”,”FDBMS”)ALL DONE3.数据库配置在我们的实际应用中,可以拷贝一个配置好的cpf文件,放到安装好的数据库目录下(如c:cachesys目录下),然后到configuration Manager中修改database的路径,重新启动。DatabaseMEDDATA主业务数据库WEBSRC类定义,类方法,B/S .ClsSYSTrakCare系统库(组件,菜单,工作流等)A
11、UDIT审计数据库HL7HL7交换消息库DOCSTrakCare文档纪录库LOGsTrakCare日志纪录库 MEDSRCC/S Routine库,.MacLABDATA检验数据库LABSRC检验Routine库TEMP临时数据库4.查看表的逻辑结构转换namespace,zn “meddata”(实际配置的namespace名称),然后回车,然后输入d %msql,msql都要小写,界面如下回车后,界面如下输入User Name为system;Password 为sys;然后回车,进入界面如下回车,界面如下默认为Base Table Definition,按回车键在Base Table Na
12、me输入要查询的表的名称,如查询名为dhc_sfprintdetail的表查看表的中的字段选择Fields,按回车键,则显示表中所有的字段如果选择某个字段可以查看字段的属性查看表的关联关系找到表后,按F3键,回车光标落到Implicit Joins 上,回车可以看到字段所指向的表父子表关系,如下图Child Tables,可以看到表ar_receipt有两个子表,ar_rcptalloc,ar_rcptpaymode5.查看表的物理结构步骤同上(独立表,父子关系的表)回车后可以看到表里对应的主Global的结构,和索引(Master Map为Yes的为主map,Master Map为No的是索
13、引)主Global的结构,找到Master Map为Yes的,回车后如下,查看主索引的保存结构,选择Map Data Specifications,回车后,Global中数据的存储顺序说明: F3查看表的关联关系; F4返回上一级练习:预交金明细Ar_receiptsAr_rcptallocAr_rcptpaymode找出这三张表的关系,并分别写出三张表的物理结构主map的结构定义;6.表结构的导出与导入二M基础(参考Cache面向对象软件开发教程.pdf P489)1.常用的特殊的变量这些特殊的变量有指定的含义,它们一般以$开头。有个别特殊变量也同时支持缩写1)$HOROLOG ($H)$H
14、orolog 包含了时间和日期,它们由逗号分开。第一部分是日期的数字,它是从1840 年12 月31 日开始计算日期的数字。第二部分是秒的数字,它是从午夜开始计算的。Global中的日期时间都是以数字的形式存储的。时间日期的函数$ZDate 把$Horolog 格式的日期值按照指定格式显示。w $zd($h)$ZDateH $ZDate 的反函数。w $zdh("07/17/2012")$ZDateTime 把$Horolog 格式的日期时间值按照指定格式显示。w $zdt($h)$ZDateTimeH $ZDateTime 的反函数。w $zdth("07/17
15、/2012 17:07:20")$ZTime 把$Horolog 格式的时间值按照指定格式显示。w $zt($h)$ZTimeH $ZTime 的反函数。w $zth("07/17/2012 17:07:20")2) $JOB ($J)$JOB 包含一个正整数,表示系统所分配给每一个在执行中的进程独一无二的编号。当进程还在的时候,$JOB 的值是不变的2.基本的运算符1)算术运算符+、-、*、/、#,*。其中,+、*、/ 是基本的4 个算术运算符。 整数的除法2+5*7 = 49,从左到右依次运算2+(a*b) = 372)算术比较运算符<、>3)字符
16、串比较运算符=、= 比较运算符是比较两个字符串的相同与否。如果需要比较两个数字是否一样的话,需要在前面再加一个+ 号。例如,+number1=+number2。运算符检查右边的串是不是包含了左边的串s a="hhhwww111"w a"h" 运算符检查左边的串是不是在字典顺序上跟着右边的串;它是严格按照ASCII 码来操作的。例如:219,返回是1,因为2 的ASCII 值是50,而1 的ASCII 值是49。4) 连接符_它是用来连接两个字符串的& 与! 或= 非3.常见的命令变量操作命令:Set, Merge, Kill, New, Lock
17、1)SET(S)给一个或者多个变量赋值 ,缩写SSet x=5,n(1)=4,dd=5Set FILE=32)MERGE (M)拷贝变量树。Merge a=bMerge var(1)=G(1,2)3)KILL删除所有变量或一些指定的变量或所有变量除了指定的变量。4)NEW初始化变量。New a,bNew(x1,x2) 初始化除了x1,x2之外的变量4.程序流控制命令If, Else, For, Quit, Do, Goto, BreakIf,(I) 条件判断语句。ELSE (e) 当判断条件不通过的时候,执行后面的命令行。FOR (f) 循环命令QUIT (q) 结束执行一个函数并返回一个值。
18、DO (d) 执行命令。GOTO(g) 跳转命令。BREAK(b) 在调试的时候中断一个routine 的执行。WRITE(w) 输出信息到当前设备上READ(r)从当前的设备读信息OPEN (o) 开启一个设备以备使用。5.常用的函数$Piece($P)格式:$Piece(expression,delimiter ,from,to)返回一个或者多个被分隔符分开的子串。$Order($O)格式:$Order(variable,direction)按照指定的方向返回一个变量的上一个或下一个索引$get($g)返回一个变量的值如果变量存在则返回变量本身,不存在则返回空$data($d)判断变量是否
19、存在$Extract($e)格式:$Extract(expression,from,to)说明:返回字符串的指定部分。>Write $Extract("AABB",2,3)AB$Justify($J)格式:$Justify(expression,width,desimal)说明:返回一个右对齐的值,并可以改变它的格式。$Length($L)格式:$Length(expression,delimiter)说明:返回一个字符串的长度,或者是被分隔符的子串的个数>Write $Length("ABCD")4>Write $Length(&qu
20、ot;AB/CD/EF","/")3Tstart 开始一个事务Tcommit 提交事务Trollback 保存失败后回滚三编写简单的M程序及调试1.Global介绍在Caché 中的所有数据都是保存在Global(多维数组)中的。Global以如下形式表示:名称(下标1,下标2,下标3)=值l 如 AirPlane(“Manufacturer”,“Address”,“Country”)=“US”我们可以自己定制Global,包括添加、删除、修改、遍历其节点。多维数组以树状的形式保存,他的每一个节点直接与磁盘和内存中的数据块相对应,因此可以达到极快的访问速
21、度。2.Routine的使用(.MAC程序)我们可以把Routine 理解为“小程序”或程序模块。Routine 的基本结构1. Routine 的命名Routine 的名字可以是任何的字母数字式字符。但是有要求:一般不能以数字或百分号开头命名,和句号不能在开始或者结束的位置。以百分号开头命名的Routine 是不局限在某一个名字空间(Namespace)应用的,号它是Caché 系统内部保留的,只是系统为我们提供的程序命名所使用。此外,对Routine 名字的长度也没有限制,但是只有前31 个字符是用来对不同的Routine 加以区分的。2. Routine 的程序行程序行是rou
22、tine 最基本的单位之一。我们这里说的是一个逻辑上的行,因为有的逻辑上的行在物理上占据了可能超过一行的位置。Routine 的行有3 种不同的类型,下面作一一的介绍。 Routine 的标签行一个标签要确定一行,它从当前行的第一个位置开始。它的命名条件和routine 的命名条件类似。但是它的长度不能超过31 个字符。通常一个标签后面有一些空格,后面可以跟一些Caché 的可执行命令。代码行代码行的最前端至少要有一个空格,作为一行的开始部分。注释行有4 种形式的注释符号:;符号后面的本行内容将不被执行。;一些时候,注释的内容在执行的过程中是需要用到的。两个分号的注释内容是被编译进去
23、的,而一个分号的注释在编译的时候就被去掉了。/ 和一个分号是一样的。/* */中间省略号的部分是被注释的内容。创建Routine首先切换namespace到Medsource下FileChange Namespace,选择MedsourceFile-New ,如下图点ok,然后点编译按钮,界面如下,保存Test.MAC文件点击保存。则保存在Medsource下,这样我们保存了一个空的.mac文件,下面我们将介绍如何写简单的程序.3.没有父子关系的表1)如查询所有押金明细表的收费日期,病人姓名(pa_patmas.papmi_name),登记号(pa_patmas.papmi_ipno)金额,支
24、付方式,收费员姓名(表dhc_sfprintdetail,对应字段分别为prt_date,prt_adm(病人就诊rowid,指向pa_adm表),prt_payamount,prt_paymode,指向ct_paymode表)我们可以查看表的Global的存储结构为DHCSFPRINTDETAIL(prt_rowid)Test (我们上面建的mac文件)GetDepositDetail()/标签行,也就是函数的名称s prtrowid=0,num=0 /首先要对检索的global的节点付初始值f s prtrowid=$O(DHCSFPRINTDETAIL(prtrowid) quit:pr
25、trowid="" do.s prtdate=$p(DHCSFPRINTDETAIL(prtrowid),"",2).s prttime=$p(DHCSFPRINTDETAIL(prtrowid),"",3).s adm=$p(DHCSFPRINTDETAIL(prtrowid),"",4).q:adm="".s papmi="".i $d(PAADM(adm) s papmi=$p(PAADM(adm),"",1).q:papmi=""
26、;.i $d(PAPER(papmi,"ALL")d .papname=$p(PAPER(papmi,"ALL"),"",1).s papno=$p(PAPER(papmi,"PAT",1),"",1).s payamt=$p(DHCSFPRINTDETAIL(prtrowid),"",6).s num=num+1.;w !,$zd(prtdate,3)_""_$zt(prttime,1)_""_papname_""
27、_papno_""_payamtq num在Terminate调试程序(参考Terminate端程序调试)2)查询表病人收费类别表pac_admreason的数据,在RowId之前有一个”ADMREA”的节点,显示代码(rea_code),名称(rea_desc)PAC("ADMREA",RowId)=记录查询所有的病人收费类别循环如下:S RowId=""F s RowId=$o(PAC("ADMREA",RowId) q:RowId="" d.S Code=$p(PAC("ADMR
28、EA",RowId),"",1).S Desc=$p(PAC("ADMREA",RowId),"",2).S Num=+$g(Num)+1.S PLIST(Num)=Code_""_ DescQ3)查询表ct_paymode 的数据,显示ctpm_code,ctpm_desc4.有父子关系的表的取值如查询显示某帐单(dhc_patientbill.pb_rowid)的收费项目的名称(表dhc_patbilldetails字段分别为pbd_tari_dr->dhc_taritem(tari_desc)
29、,单价(pbd_unitprice),数量(pbd_billqty),金额(pbd_totalamount); ,收费日期(pbd_billdate),收费时间(pbd_billtime)信息GetDetailByRowID(pbrowid)S RowId=”f s RowId=$o(DHCPB(RowId) q:RowId=” d /第一层循环.s OrdSub=”f s OrdSub=$o(DHCPB(RowId,"O",OrdSub) q: OrdSub =” d /第二层循环s DetSub=”f s DetSub =$o(DHCPB(RowId,"O&q
30、uot;,OrdSub,”D”,DetSub) q: DetSub =” d /第三层循环5.表的索引的应用取某段时间内押金的明细(dhc_sfprintdetail),显示押金的病人姓名,金额,支付方式,收费员信息索引结构为DHCSFPRINTDETAIL(0,"PrtDate",prt_printdate,prt_rowid)F PrtDate=Stdate:1:EndDate ds RowId=$o(DHCSFPRINTDETAIL(0,"PrtDate",PrtDate,RowId)q:RowId=” d;找到数据的RowId后,到主Global
31、中取相应的数据S PrtDate=$p(DHCSFPRINTDETAIL (RowId),”,2)S PrtTime=$p(DHCSFPRINTDETAIL (RowId),”,3)S AdmId=$p(DHCSFPRINTDETAIL (RowId),”,4)I $d(PAADM(AdmId) d. .S paperid=$p(PAADM(AdmId),”,1) . .S Regno=$p(PAPER(paperid,”ALL”),”,1). .S PatName=$p(PAPER(paperid,"PAT",1),”,1). S PayAmt=$p(DHCSFPRINT
32、DETAIL (RowId),”,6)S PayMode=$p(DHCSFPRINTDETAIL (RowId),”,9)S Num=Num+1Q6.Terminate端M程序调试编译m程序 d %urcomp,然后输入要编译的m名称调试程序(包括.mac,.cls,query)Mac文件调试d procnamemacname(参数1,参数2.。) q后面没有返回值w $functionmacname(参数1,参数2.。)q后面有返回值如果以q 返回值的方式执行,即使没有入参,也要在函数名称后面增加括号练习1查询某段日期(prt_date)的某个收费员(prt_adduserid)的押金的明细
33、(表DHC_SFPRINTDETAIL),显示信息为病人登记号(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),收费金额(DHC_PrintDetail.prt_payamount),支付方式(dhc_sfprintdetail.paymode);练习2.查询入院日期为2007-04-02至2007-04-08日的住院就诊病人的信息,显示信息为病人登记号(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),入院日期;用到的表就诊信息表Pa_adm,病人基本信息表Pa_PatMas,paadm_typ
34、e=”I”的表示住院病人利用索引PAADMi("PAADM_AdmDate",PAADM_AdmDate,PAADM_RowID)四类的创建及类方法的编写及调试转换命名空间到websource下1.创建一个类,保存到websource下File-New-Cache Class Definition下一步,修改class名称下一步,选择第三项,然后完成就可以了2.打开一个类文件,在websource/web目录下1)打开Studio,选择NameSpace为websource,点Open from databasae,Files of 选择.cls文件类型,为如下界面2)双击
35、Web包,进入后则现则所有的类文件,File Name:输入要打开的类名称。3.类方法的编写首先创建一个类,然后编写类方法,一个类里面可以有多个类方法我们把前面编写的m里面的函数转换成类的方法编写/如查询所有押金明细表的收费日期,病人姓名,金额,支付方式,收费员姓名(表dhc_sfprintdetail,对应字段分别为prt_date,prt_adm(病人就诊rowid,指向pa_adm表),prt_payamount,prt_paymode,指向ct_paymode表)我们可以查看表的Global的存储结构为DHCSFPRINTDETAIL(prt_rowid)ClassMethod Get
36、DepositDetail()s prtrowid=0,num=0f s prtrowid=$O(DHCSFPRINTDETAIL(prtrowid) quit:prtrowid="" do.;i prtrowid="" q.s prtdate=$p(DHCSFPRINTDETAIL(prtrowid),"",2).s prttime=$p(DHCSFPRINTDETAIL(prtrowid),"",3).s adm=$p(DHCSFPRINTDETAIL(prtrowid),"",4).q:a
37、dm="".s papmi="".i $d(PAADM(adm) s papmi=$p(PAADM(adm),"",1).q:papmi="".i $d(PAPER(papmi,"ALL") s papname=$p(PAPER(papmi,"ALL"),"",1).s papno=$p(PAPER(papmi,"PAT",1),"",1).s payamt=$p(DHCSFPRINTDETAIL(prtrowid)
38、,"",6).s num=num+1.w !,$zd(prtdate,3)_""_$zt(prttime,1)_""_papname_""_papno_""_payamtq写好后到Terminate端调试4.Query程序的编写见TestCls文本里的FindDeposit练习3 用Query查询支付方式表ct_paymode,显示内容为Ctpm_code,ctpm_desc练习4查询某个账单对应的收费项目明细;要求显示收费项目名称(dhc_pabilldetail.pbd_tari_dr),单
39、价(pbd_unitprice),数量(pbd_billqty),金额(pbd_totalamount)练习5查询某段日期(prt_date)的押金的明细(表DHC_SFPRINTDETAIL),显示信息为病人登记号(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),收费金额(DHC_PrintDetail.prt_payamount),支付方式(dhc_sfprintdetail.paymode);5.Terminate端类方法的调试Class文件d #class(web.classname).functionname(参数1,参数2.)w #
40、class(web.classname).functionname(参数1,参数2.) Query的执行D #class(%ResultSet).RunQuery(“类名称”,”Qurey名称”,”参数1”,”参数2”,.)五组件程序开发1.javascript基础1)功能在客户端 IE 执行用来与用户交互数据检查、控制控制Browser 的页面方式2).基本命令var 定义变量alert 生成一个独立的小窗口,称作对话框,并用它来显示一条信息和一个“确定”按钮!当显示这个对话框时,暂停程序的执行。 confirm确认选择对话框用于确定用户某个Yes/No风格问题的回答。这种风格的对话框中显示
41、一个问号和两个按钮:“确定”和“取消”。当用户单击了“确定”按钮Confirm()方法返回true;否则返回false。If , else ForLess than (<)Greater than (>)Not (!)Not equal (!=)Equals (=)Logical AND (&&)Logical OR (|)Is NOT a Number (isNaN )Split将string对象字符以某个符号分开隔开 3.属性document properties文档对象,描述当前窗口或指定窗口对象的文档。它包含了文档从<head>到&l
42、t;/body>的内容。document.getElementByIddocument.getElementById("id1").value /获取或设置id1的值Object propertiesObj.tagNameObj.classNameObj.typeObj. checkedObj. valueObj. disabledObj. styleObj.readOnly4.事件document eventsdocument.body.onload=MyLoadHandler;当网页打开,只能书写在body中onUnload 当网页关闭或离
43、开时,只能书写在body中 Object eventsobj.onclick=MyOnClick;当对象被点击obj.onkeydown=MyKeyDown; 按回车obj.onchange = MyChange;当对象的内容被改变 obj.onblur= MyBlur;当对象失去焦点 obj.onmouseover 当鼠标悬于其上时 obj.onmouseout 当鼠标离开对象时 obj.onmouseup 当鼠标松开 obj.onmousedown
44、0; 当鼠标按下键 obj.onFocus 当对象获取焦点时 obj.onSelect 当对象的文本被选中时 我们在使用object.onXXX = handler是需要保证object已经在页面中生成。比如我们为document.body赋予事件处理函数,我们必须保证document.body已经存在,就是说我们不能在<body>之前在的全局语句中使用document.body; handler必须是函数名2.创建组件过程1)创建组件;进入组件管理器,选择要连接的数据库,如下图所示选择连接的
45、数据库后,点击进入,然后新建组件ComponentNew Component,提示Create a New Component?,选择”是”.系统会默认的创建组件的名称,选中名称,点击右键,进入Component Properties,如下图所示修改组件的名称,同时把Display Type修改成Custom,点击Apply按钮,保存所做的改变2)创建组件上的元素选中组件名称,点击右键,进入Add Item(s) to Component ,进入界面如下Custom Item 组件上的单个元素Custom Table Item 以列表的形式显示的元素根据实际需求选择要创建的元素类型对于要创建的
46、元素打勾,然后FileApply3)修改元素属性选中元素,右键 Item Properties (或双击),如下图所示Name:元素名称Caption:界面上显示的名称Display Type:TEXTBOX,LISTBOX,CHECKBOX,LINK,BUTTON等Data Type属性:元素显示的数据类型,如日期,字符串等3.查询程序的编写及调试(以押金收据购入程序为例)练习不带条件的查询和带条件的查询参考Test.cls中的Query:FindDeposit注意:Query FindDeposit() As %Query(ROWSPEC = "Tprtdate:%String,
47、Tprttime:%String,Tpapname:%String,Tpapno:%String,Tpayamt:%String")中的ROWSPEC中的Tprtdate,Tprttime等是组件上的元素名称,这类元素是Table ItemOutputRow中的set Data=$lb(prtdate,prttime,papname,papno,payamt) $lb内的是要输出的值,这些变量的位置要和组件上的元素相对应,这样才能在Table的相应的列对应的显示内容组件的属性:连接Class和Query名称(在修改时要先把组件的显示类型修改成除Custom之外的类型才能修改)组件的类
48、型是:修改后组件的显示类型修改成Custom如果是带参数的查询程序,则相应的参数为组件上的元素,那么在点击查找的时候会自动传入参数;练习6用组件开发,把练习4,练习5的查询结果在界面上显示出来;并挂入菜单4.组件程序的开发(以押金收据购入程序)1).放大镜,不带参数,带有参数组件元素为:Custom Item元素的LookUp如下图所示放大镜要显示的内容写成QueryLookupClassName:要调用的类的名称LookupQueryName:要调用的Query名称LookupProperties:传入的参数,如果没有入参则为空,参数为组件上元素的名称LookupJsFunction:js文
49、件里调用的js函数练习7在练习5的基础上,收费员显示以放大镜的方式显示,显示收费员姓名,查询时以rowid为查询条件;2).js文件创建,js文件的调用;创建的js文件的名称必须要和对应的组件的名称一致如果js文件里调用其他js文件里的函数,则要在组件的OtherScript里把js文件的名称添加进来,就可以调用里面的函数了3).前端页面元素调用后台的classmethod的方法;前端页面调用后台的类方法是通过函数js函数里调用cspRunServerMethod(参数1,参数2,参数3.。)来实现参数1为固定参数,传入的值为要调用的后台的类方法那么入参的获取是通过组件上的某个元素来获得的如组
50、件UDHCJFRcptBuy中的添加按钮,是通过调用元素ins1来获取后台要执行的方法(ValueGet)4).执行后台的classmethod之后接收返回结果的两种方法;1直接通过cspRunServerMethod(参数1,参数2,参数3.。)返回结 果,可以定义变量直接接收返回结果;如果采用此方式,要求Classmethod的q 后面返回变量Var ReturnvalueReturnvalue=cspRunServerMethod(参数1,参数2,参数3.。)2通过cspRunServerMethod(参数1,参数2,参数3.。)里的某个参 数接收返回值,如可以利用参数2接收后台的返回值
51、 如接收返回值的参数的名称为GetReturnValue,那么在传入参数的时 候要传到后台cspRunServerMethod(参数1,GetReturnValue,参数 3.。) 在class端,GetReturnValue已经传入,那么通过Sretval=GetReturnValue _"('"_$ZCVT(返回值,"O","JS")_"');"&javascript<#(retval)#>,通过javascript把结果返回页面 在js文件里有个函数名称为GetReturn
52、Value(value),接收返回值括号内的value就是返回值,然后可以根据需求对返回值做相应处理练习8输入登记号,回车,查找病人的姓名;并在界面上显示出来;6).SelectRowHandler的用途;可以获取Table的行数和当前选中的记录的行可以选中某个记录,获取选中记录的各元素的值获取到选中的行var eSrc=window.event.srcElement;var rowObj=getRow(eSrc);var selectrow=rowObj.rowIndex;获取Table的记录数var objtbl=document.getElementById('tUDHCJFRc
53、ptBuy');var rows=objtbl.rows.length;获取Table上某一行的某个元素的值var SelRowObj=document.getElementById('Tbuyrowidz'+selectrow);var buyrowid=SelRowObj.innerText;其中Tbuyrowid为元素的名称,z要加到元素名称的后面,selectrow为行号;如果是显示的列则用SelRowObj.innerText;如果是隐藏的列则用SelRowObj.Value7).Link00528273Display Type:LinkLinkUrl:web
54、sys.default.csp(在输入组件名称时会自动输入)LinkComponent:要Link的组件的名称LinkExpression:要传入到所Link的组件的名称如果要在新的窗体中打开组件:在General页签处,设置新打开窗体的大小ShowInNewWindow:top=30,height=650,left=8,width=10008).按钮中打开新的组件var str='websys.default.csp?WEBSYS.TCOMPONENT=UDHCJFDeposit&Adm='+Adm+'&deposittype='+t'
55、01'window.open(str,'_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=1000,height=700,left=0,top=0')9).Message的定义在组件属性的Message页签,定义Code,Description在js文件里调用时用tCode,获取Description练习9输入登记号(pa_patmas.Papmi_no),回车事件时,
56、显示病人的姓名(pa_patmas.papmi_name),就诊号(pa_adm.paadm_admno,pa_adm.paadm_rowid)(就诊号用放大镜显示,可能会有多条记录);选择就诊号,查询病人的账单总表(dhc_patientbill),显示账单的总金额(pb_totalamount),账单Rowid(pb_rowid);选中病人的某个账单,显示账单的收费项目明细(pa_patbilldetails)(以按钮的方式打开),显示收费项目的名称(pbd_tari_dr),单价(pbd_unitprice),数量(pbd_billqty),金额(pbd_totalamount);账单Rowid以Link的方式,链接收费项目明细(示收费项目的名称,单价,数量,金额);说明:收费项目明细可以采用同一个组件,只是以两种不同的方式打开;六类文件的导出与导入切换namespace到websource下1.导出Tools-Export,进入如下界面可以导成.XML文件,也可以导成.cd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西河池市宜州区2024-2025学年八年级上学期期末生物试题(含答案)
- 债权人公告制度
- 中国廉洁制度
- 2026年石家庄市公安局关于公开招聘公安机关警务辅助人员的备考题库参考答案详解
- 2025至2030中国智慧城市建设进展评估及政府投资效益分析研究报告
- 2025-2030中国固体铝电解电容器行业发展动向与未来投资规划建议研究报告
- 2025至2030中国零售电商市场分析及投资价值评估研究报告
- 2026年湛江市坡头区南三镇人民政府招聘编外人员备考题库及答案详解1套
- 2026-2030中国儿童智力开发行业市场发展分析及竞争格局与投资前景研究报告
- 2026年首都文化科技集团有限公司招聘9人备考题库完整参考答案详解
- 初一上册语法课件大纲
- 2025年汽车零部件行业市场调研:细分品类、技术创新及配套需求报告
- 用pdca降低会阴切开率课件
- 催收高手实战话术
- 2026年化妆培训服务合同
- 人教版小学五年级上册科学期末试卷后附答案
- 2025年七年级上册历史知识点梳理(背诵版)
- 雨课堂学堂云在线《人工智能原理》单元测试考核答案
- 航空航天配套产业招商创新创业项目商业计划书
- 稻草人艺术活动方案
- 线性代数课件 第6章 二次型 第3节
评论
0/150
提交评论