-坡跟鞋
开发培训文档
alert
M
基础
(
参考
Cache
面向对象软件开发教程
.pdf
P489)
1.
常用的特殊的变量
这些特殊的变量有指定的含义,它们一般以
< br>$$
开头。有个别特殊变量也同时支
持缩写
1)$$HOROLOG ($$H)
$$Horolog
包含了时间和日
期,它们由逗号分开。第一部分是日期的数字,它
是从
1840
年
12
月
31
日开始计算日期的数字。第二
部分是秒的数字,它是从午
夜开始计算的。
Global
中的日期时间都是以数
字的形式存储的。
时间日期的函数
$$ZDate
把
$$Horolog
格式的日期值按照指定格式显示。
$$ZDateH $$ZDate
的反函数。
$$ZDateTime
把
$$Horolog
格式的日期时间值按照指定格式显示。
$$ZDateTimeH $$ZDateTime
的反函数。
$$ZTime
把
$$Horolog
格式的时间值按照指定格式显示。
$$ZTimeH $$ZTime
的反函数。
2) $$JOB
(
$$J
)
$$JOB
包含一个正整数,表示系
统所分配给每一个在执行中的进程独一无二的
编号。当进程还在的时候,
$$JOB
的值是不变的
2.
基本的运算符
1)
算术运算符
+
、
-
、
*
、
/
、
p>
、
#
,
**
。
其中,
+
、-、
*
、
/
是基本的
4
个算术运算符。
整数的除法
2+5*7 =
49
,从左到右依次运算
2+(a*b) = 37
2)<
/p>
算术比较运算符
<
、
>
3)
字符串比较运算符
p>
=
、
[
、
]
=
比较运算符
是比较两个字符串的相同与否。如果需要比较两个数字是否一
样的话,
< br>
需要在前面再加一个
+
号。例如,
+number1=+number2
。
[
运算符检查右边的串是不是包含了左边的串
]
运算符检查左边的串是不是在字
典顺序上跟着右边的串;它是严格按照
ASCII
码来操作的
。例如:
2]19
,返回是
1
,因为
2
的
ASCII
值是
< br>50
,而
1
的
ASCII
值是
49
。
4)
连接符
_
它是用来连接两个字符串的
&
与
!
或
‘=
非
3.
常见的命令
变量操作命令:
Set,
Merge, Kill, New, Lock
1)SET
(S)
给一个或者多个变量赋值
,
缩写
S
Set x=5,n(1)=4,dd=5
Set ^File=3
2)
MERGE (M)
拷贝变量树。
Merge a=b
Merge
var(1)=^G(1,2)
3) KILL
删除所有变量或一些指定的变量或所有变量除了指定的变量。
4
)
NEW
初始化变量。
New a,b
New (x1,x2)
初始化除
了
x1,x2
之外的变量
4.
程序流控制命令
If, Else, For, Quit, Do,
Goto, Break
If,
(
I
)
条件判断语句。
ELSE (e)
当判断条件不通过的时候,执行后面的命令行。
FOR (f)
循环命令
QUIT (q)
结束执行一个函数并返回一个值。
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)
判断变量是否存在
$$Extract($$e)
格式:
$$Extract(expression,[,from[,to]])
说明:返回字符串的指定部分。
>Write $$Extract(
AB
$$Justify($$J)
格式:
$$Justify(expr
ession,width[,desimal])
说明:返回一个右对齐的值,并可以改变它的格式。
$$Length($$L)
格式:
$$Length(expression[,delimite
r])
说明:返回一个字符串的长度,或者是被分隔符的子串的个数
>Write $$Length(
4
>Write
$$Length(
3
Tstart
开始一个事务
Tcommit
提交事务
Trollback
保存失败后回滚
< br>三.编写简单的
M
程序及调试
介绍
在
Caché 中的所有数据都是保
存在
Global(
多维数组
)
中的。
Global
以如下
< br>形式表示:
^
名称
(
下标
1,
下标
2,
下标
3…)=值
l
如
^AirPlane(“Manu
facturer”,“Address”,“Country”)=“US”
我们可以自己定制
Global
p>
,包括添加、删除、修改、遍历其节点。多维数组
以树状的形式保存
,他的每一个节点直接与磁盘和内存中的数据块相对应,因此可
以达到极快的访问速度。
e
的使用
(
.MAC
程序)
我们可以把
Routine
理解为“小程序”或程序模块。
Routine
的基本结构
1. Routine
的命名
Routine
的名字可以是任何的字母数字式字符。但是有
要求:一般不能以数
字或百分号%开头命名,和句号不能在开始或者结束的位置。以%百
分号开头命名
的
Routine
是不
局限在某一个名字空间(
Namespace
)应用的,%号它
是
Caché 系
统内部保留的,只是系统为我们提供的程序命
名所使用。此外,对
Routine
名字
的长度也没有限制,但是只有前
31
个字符是用来对不同的
Routine
加以区分的。
2. Routine
的程序行
程序行是
routine
最基本的单位之一。我们这里说的是一个逻辑上的行,因
为有的逻辑上的
行在物理上占据了可能超过一行的位置。
Routine
的行有
3
种不
同的类型,下面作一一的介绍。
Routine
的
标签行
一个标签要确定一行,它从当前行的第一个位置开始。它的命
名条件和
routine
的命名条件类似。但是它的长度不能超过
31
个字符。通常一个标签后面
有一些空格,后面可以跟一些
Caché 的可执行命令。
代码行
代码行的最前端至少要有一个空格,作为一行的开始部分。
注释行
有
4
种形式的注释符号:
;符号后面的本行内容将不被执行。
;;一些时候,注释的内容在执行的过程中是需要用到的。两个分
号的注释内容是被编译进去的,而一个分号的注释在编译
的时候就
被去掉了。
//
和一个分号是一样的。
/*
……*/中间省略号的部分是被注释的内容。
创建
Routine
首先切换
namespace
到
< br>Medsource
下
File
—
Change
Namespace
,选择
Medsource
File---New
,
如下图
点
ok,
然
后点编译按钮,界面如下,保存
文件
点击保存。则保存在
Medsource
下
,
这
样我们保存了一个空的
.mac
文件,下
面我们将介绍如何写简单的程序
.
3.
没有父子关系的表
1)
如查询所有押金明细表的收费日
期
(prt_date)
,病人姓名
(
pa__name)
,登记号(
pa__ipno
)金额,支付方式
(prt_paymode)
,收
费员姓名(表—
dhc_sfprintdetail
,对应字
段分别为
prt_date,prt_adm(
病人就诊
rowid
,指向
pa_adm
表
),prt_payamount,prt_paymode,
指向
ct_paymode
表)
< br>
我们可以查看表的
Glob
al
的存储结构为
^DHCSFPRINTDETAIL({prt_rowid})
Test
(我们上面建的
mac
文件)
GetDepositDetail()
//
标签行,也就是函数的名称
s
prtrowid=0,num=0
//
首先要对检索的<
/p>
global
的节点付初始值
f s
prtrowid=$$O(^DHCSFPRINTDETAIL(prtrowid))
quit:prtrowid=
.s prtdate=$$p(^DHCSFPRINT
DETAIL(prtrowid),
.s prttime=$$p(^DHCSFPR
INTDETAIL(prtrowid),
.s adm=$$p(^DHCSFPRI
NTDETAIL(prtrowid),
.q:adm=
.s
papmi=
.i $$d(^PAADM(adm)) s papmi=$$p(^PA
ADM(adm),
.q:papmi=
.i
$$d(^PAPER(papmi,
..papname=$$
p(^PAPER(papmi,
..s
papno=$$p(^PAPER(papmi,
.s payamt=$$p(^DHC
SFPRINTDETAIL(prtrowid),
.s num=num+1
.;w !,$$zd(prtdate,3)_
q num
在
Terminate
调试程序
(
参考
Termi
nate
端程序调试
)
2)
查询表病人收费类别表
pac_
admreason
的数据,在
rowid
之前有一
个”ADMREA”的节点,显示代码
(rea_
code),
名称
(rea_desc)
^PAC(
记录
查询所有的病人收费类别循环如下:
S rowid=
F s
RowId=$$o(^PAC(
.S
Code=$$p(^PAC(
.S
Desc=$$p(^PAC(
.S Num=+$$g(Num)+1
.S PLIST(Num)=Code_
Q
3)
查询表
ct_paymode
的数据,显示
ctpm_code,ctpm_desc
4.
有父子关系的表的取值
如查询显示某帐单(
dhc__ro
wid
)的收费项目的名称(表
<
/p>
dhc_patbilldetails
字段分别为
pbd_tari_dr->dhc_tari
tem(tari_desc)
,单价
(pbd_unitpr
ice)
,数量
(pbd_billqty)
< br>,
金额
(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,
//
第二层循
环
..s DetSub=””
..
f
s DetSub
=$$o(^DHCPB(RowId,
DetSub =””
d
...
//
第三层循环
5.
表的索引的应用
取某段时间内押金的明细(
dhc_
sfprintdetail
),显示押金的病人姓名,金
额,
支付方式
,收费员信息
索引结构为
^DHCSFPRINTDETAIL(0,
F
PrtDate=Stdate:1:EndDate
d
.
s RowId=$$o( ^
DHCSFPRINTDETAIL(0,
q:RowId=””
d
.;找到数据的
RowId
后,到主
Global
中取相应的数据
.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(^PAA
DM(AdmId),”^”,1)
. .S
Regno=$$p(^PAPER(paperid,”ALL”),”^”,1)
. .S
PatName=$$p(^PAPER(paperid,
. S PayAmt=$$p(^DHCSFPRINTDETAIL
(RowId)),”^”,6)
.S PayMode=$$p(^DHCSFPRINTDETAIL
(rowid)),”^”,9)
.
S Num=Num+1
Q
ate
端
M
程序调试
编译
m
程序
d ^%urcomp
,然后输入要编译的
< br>m
名称
调试程序(包括
.mac,.cls,query)
Mac
文件调试
d
procname^macn
ame(
参数
1
,参数
2.
。。。
)
q
后面没有返回值
w $$$$function^macname(
参数
1
,参数
2.
。。。)<
/p>
q
后面有返回值
如果以
q
返回值的方式执行,即使没有入参,也要在函数名称后面增加括号
练习
1
查询某段日期(
prt_date
)的
某个收费员(
prt_adduserid
)的押金的明细
p>
(
表
DHC_SFPRINTDETAIL
)
,显示信息为病人登记号
(Pa__ipno)
,病人
姓名
(Pa__name)
< br>,收费金额
(DHC__payamount)
,支
p>
付方式
(dhc_e)
;
< br>
练习
2
.
查询入院日期为
< br>2007-04-02
至
2007-04-08
日的住院就诊病人的信息,
显示信息为病人登记号
(Pa__ipno)
,病人姓
名
(Pa__name)
,入院日期;用到的表就诊信息表
p>
Pa_adm
,病人基本信
息表
Pa_PatMas
,paadm_type=”I”的表示住院病人
p>
利用索引
^PAADMi(
四.类的创建及类方法的编写及调试
转换命名空间到
websource
下
1.
创建
一个类,保存到
websource
下
File---New---Cache Class
Definition
下一步,修改
class
名称
下一步,选择第三项,然后完成就可以了
2.
打开一个类文件,在
websource/web
目录下
1
)打开
S
tudio
,选择
NameSpace
为
websource
,点
Open
from
databasae,Files of
选择
p>
.cls
文件类型,为如下界面
2
p>
)双击
Web
包,进入后则现则所有的类文
件
,File
Name:
输入要打开的类名
称。
3.
类方法的编写
首先创建一个类,然后编写类方法,一个类里面可以有多个类方法
我们把前面编写的
m
里面的函数转换成类的方法编写
//
如查询所有押金明细表的收费日
期,病人姓名,金额,支付方式,收费员
姓名(表—
dhc_s
fprintdetail
,对应字段分别为
prt_date
,prt_adm(
病人就诊
rowid
,指向
pa_adm
表
),prt_
payamount,prt_paymode,
指向
ct_p
aymode
表)
我们可以查看表的
Global
的存储结构为
^DHCSFPRINTDETAIL({prt_rowid})
ClassMethod
GetDepositDetail()
{
s prtrowid=0,num=0
f s
prtrowid=$$O(^DHCSFPRINTDETAIL(prtrowid))
quit:prtrowid=
.;i
prtrowid=
.s prtdate=$$p(^DHCSFPRINTDETAI
L(prtrowid),
.s prttime=$$p(^DHCSFPRINTDE
TAIL(prtrowid),
.s adm=$$p(^DHCSFPRINTDET
AIL(prtrowid),
.q:adm=
.s
papmi=
.i $$d(^PAADM(adm)) s papmi=$$p(^PA
ADM(adm),
.q:papmi=
.i
$$d(^PAPER(papmi,
.s
papno=$$p(^PAPER(papmi,
.s payamt=$$p(^DHC
SFPRINTDETAIL(prtrowid),
.s num=num+1
.w !,$$zd(prtdate,3)_
q
}
写好后到
Terminate
端调试
程序的编写
见
TestCls
文本里的
FindDeposit
练习
3
用
Query
查询支付方式表
ct_pa
ymode,
显示内容为
Ctpm_code
,
ctpm_desc
练习
4
查询某个账单对应的收费项目明细;
要求显示收费项目名称(
dhc__tari_dr
),单价
(
pbd_unitprice
),数量(
pbd
_billqty
),金额(
pbd_totalamount
)
练习
5
查
询某段日期(
prt_date
)的押金的明细
(
表
DHC_SFPRINTDETAIL)
,显
示信息为病人
登记号
(Pa__ipno)
,病人姓名
(Pa__name)
,收费金额
(DHC__payamount)
,支付方式
(dhc_e)
;
ate
端类方法的调试
Class
文件
d ##class(ame).functionname
(
参数
1
,参数
2….)
w ##class(
ame).functionname(
参数
1
,参数
2….)
Query
的执行
D ##class(%ResultSet).RunQu
ery(“类名称”,”Qurey
名称”,”参数
1”,”参
数
2”,…….)
五.组件程序开发
ript
基础
1)
功能
在客户端
IE
执行
用来与用户交互
数据检查、控制
控制
Browser
的页面方式
2).
基本命令
var
定义变量
alert
< br>生成一个独立的小窗口,称作对话框,并用它来显示一条信息和
一个“确定”按钮
!当显示这个对话框时,暂停程序的执行。
confirm
确认选择对话框用于确定用户某个
Yes/No
风格问题的回答。这种风
格的对话框
中显示一个问号和两个按钮:“确定”和“取消”。当用户单击了“确
定”按钮
Confirm()
方法返回
true
;否则返回
false
。
If , else
For
Less than (<)
Greater than
(>)
Not (!)
Not equal (!=)
Equals (==)
Logical AND (&&)
Logical OR (||)
Is NOT a Number (isNaN )
Split
将
string
对象字符以某个符号分开隔开
3.
属性
document properties
文档对象,描述当前窗口或指定窗口对象的文档。它包含了文档从
到
的内容。
mentById
mentById(
//
获取或设置
id1
的值
-坡跟鞋
-坡跟鞋
-坡跟鞋
-坡跟鞋
-坡跟鞋
-坡跟鞋
-坡跟鞋
-坡跟鞋
-
上一篇:硫酸的密度表
下一篇:主要能源折标煤计算公式