數(shù)據(jù)庫(kù)M開發(fā)培訓(xùn)文檔_第1頁(yè)
數(shù)據(jù)庫(kù)M開發(fā)培訓(xùn)文檔_第2頁(yè)
數(shù)據(jù)庫(kù)M開發(fā)培訓(xùn)文檔_第3頁(yè)
數(shù)據(jù)庫(kù)M開發(fā)培訓(xùn)文檔_第4頁(yè)
數(shù)據(jù)庫(kù)M開發(fā)培訓(xùn)文檔_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、開發(fā)培訓(xùn)文檔一 數(shù)據(jù)庫(kù)安裝與配置1. 數(shù)據(jù)庫(kù)安裝準(zhǔn)備好安裝文件之后,我們便可以開始安裝Caché:步驟1:在Windows 中,運(yùn)行安裝文件目錄下的SETUP.EXE 文件。首先彈出的是Caché 安裝程序界面以及使用協(xié)議,閱讀協(xié)議后,如果同意協(xié)議內(nèi)容,準(zhǔn)備好安裝文件之后,我們便可以開始安裝Caché:步驟1:在Windows 中,運(yùn)行安裝文件目錄下的SETUP.EXE 文件。首先彈出的是Caché 安裝程序界面以及使用協(xié)議,閱讀協(xié)議后,如果同意協(xié)議內(nèi)容,點(diǎn)擊按鈕”是”,進(jìn)入下一頁(yè)面。步驟2:如果本機(jī)操作系統(tǒng)是第一次安裝Caché,將會(huì)提示輸入

2、安裝名稱,默認(rèn)值為“CACHE”。* 安裝名稱又稱配置名稱,當(dāng)一臺(tái)計(jì)算機(jī)安裝了多個(gè)Caché 時(shí),此名稱用來進(jìn)行標(biāo)識(shí)。* 如果本機(jī)已安裝了Caché,安裝程序?qū)?huì)顯示出當(dāng)前已安裝的Caché 列表,我們可以選擇覆蓋原有的Caché 或添加一個(gè)新的Caché。點(diǎn)擊按鈕“Next>”,進(jìn)入下一頁(yè)面。步驟3:在本頁(yè)面中設(shè)定安裝類型和安裝路徑。Caché 安裝程序中共有三種安裝類型:a. 標(biāo)準(zhǔn)(Standard,默認(rèn)選項(xiàng))。安裝Caché 服務(wù)器和客戶端的所有工具。b. 客戶端(Client)。只安裝Caché 的客

3、戶端的所有工具。c. 自定義(Custom)。允許你自己定制要安裝到你的計(jì)算機(jī)上的各個(gè)部分的清單,例如:只作Web 服務(wù)器安裝。設(shè)置目標(biāo)文件夾:安裝路徑默認(rèn)為“c:CacheSys”。你可以點(diǎn)擊“瀏覽” 來更改希望安裝在那個(gè)文件夾。點(diǎn)擊按鈕“下一步>”,進(jìn)入下一頁(yè)面。步驟4:在本頁(yè)面中可選擇設(shè)置成Unicode 支持(16-bit)。(*否則系統(tǒng)默認(rèn)將會(huì)是自動(dòng)設(shè)置成為8-bit 的)選擇“Unicode”,這樣Caché 就可以支持中文顯示。點(diǎn)擊按鈕“下一步>”,進(jìn)入下一頁(yè)面。步驟5:本頁(yè)面列出了前面步驟中所輸入的信息以待最后檢查。檢查無(wú)誤后,點(diǎn)擊按鈕“下一步>”,

4、便開始安裝過程。* 此時(shí)Caché 將開始安裝步驟6:安裝過程將需要要持續(xù)一段時(shí)間。在這期間安裝進(jìn)程可能會(huì)暫停,進(jìn)行提問:如果安裝程序沒有發(fā)現(xiàn)許可證(License Key),將會(huì)提示是否現(xiàn)在安裝許可證,選擇“否(N)”時(shí)。我們可以在Caché 安裝完成后再安裝許可證。如果安裝程序發(fā)現(xiàn)IIS(Internet Information Service)服務(wù)正在運(yùn)行,將會(huì)進(jìn)一步提示是否現(xiàn)在關(guān)閉IIS 服務(wù)以配置CSP 腳本驅(qū)動(dòng)程序。選擇“Yes”。安裝程序會(huì)自動(dòng)配置CSP 到IIS 中。* 如果運(yùn)行的是Apache 服務(wù)器,安裝程序也會(huì)檢測(cè)到并自動(dòng)配置。* 安裝完成之后,我們也

5、可以再去修改Web Server 的配置。步驟7:安裝過程順利完成后,點(diǎn)擊按鈕“完成”,退出安裝程序。安裝過后在Caché 安裝完畢后,在我們的計(jì)算機(jī)中多了如下項(xiàng)目:在文件系統(tǒng)中,新增了一個(gè)文件夾目錄:“c:CacheSys” (該目錄即為安裝階段默認(rèn)的安裝路徑)。Caché 的系統(tǒng)文件和數(shù)據(jù)庫(kù)文件等都位于這個(gè)目錄中:* 對(duì)于不同的安裝配置,目錄結(jié)構(gòu)會(huì)略有不同。但主要的目錄如Bin、CSP 和Mgr 不會(huì)有變化。在Windows 桌面右下方的任務(wù)欄中增加了一個(gè)立方體形狀的圖標(biāo),我們稱之為Caché 立方體(Caché Cube)。它是訪問Cach

6、3; 的最常用的入口。點(diǎn)擊Caché 立方體,將會(huì)彈出一個(gè)菜單,通過此菜單我們可以選擇各種工具來管理Caché。菜單中包含如下項(xiàng)目:Getting Started 入門文檔初學(xué)者可從中獲取必要信息Start Caché啟動(dòng)Caché 啟動(dòng)Caché 服務(wù)Stop Caché關(guān)閉Caché 關(guān)閉Caché 服務(wù)。點(diǎn)擊后選擇是要關(guān)閉還是要重新啟動(dòng)Caché。Studio工作室Caché 的集成開發(fā)環(huán)境。Terminal終端通過類似于DOS 的終端界面訪問CachéExplorer資源管理器

7、查看Caché 中的數(shù)據(jù)資源,包括多維數(shù)組、類和例程SQL Manager SQL管理器通過關(guān)系型方式訪問CachéControl Panel控制面板監(jiān)視和管理Caché 的運(yùn)行Configuration Manager配置管理器進(jìn)行基本配置,包括數(shù)據(jù)庫(kù)的配置Documentation聯(lián)機(jī)文檔只有啟動(dòng)Caché 后才可以閱讀全部文檔信息Remote System Access >遠(yuǎn)程系統(tǒng)訪問在本地控制遠(yuǎn)端的Caché 服務(wù)器(任意平臺(tái))。UNIX 系統(tǒng)的管理要通過這種方式實(shí)現(xiàn)。子菜單中同樣包含了工作室,終端,資源管理器,SQL 管理器,控

8、制面板,配置管理器,聯(lián)機(jī)文檔等菜單項(xiàng)。Preferred Server當(dāng)前使用的Caché服務(wù)器子菜單中可以編輯Caché 服務(wù)器列表。在這里配置遠(yuǎn)程服務(wù)器。我們可以在一臺(tái)Windows 平臺(tái)的計(jì)算機(jī)上管理網(wǎng)絡(luò)中所有的各種平臺(tái)的Caché 服務(wù)器。About關(guān)于查看版本Exit 退出關(guān)閉任務(wù)欄中的Caché 立方體2. 安裝FDBMS解壓縮FDBMS的壓縮包,根據(jù)FDBMS中的readme文件安裝復(fù)制CACHE.DAT到 c:cachesysmgrfdbms 目錄(fdbms目錄要?jiǎng)?chuàng)建)在cache的configuration manager中創(chuàng)建相應(yīng)的

9、Database和Namespace在Terminal中執(zhí)行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.數(shù)據(jù)庫(kù)配置在我們的實(shí)際應(yīng)用中,可以拷貝一個(gè)配置好的cpf文件,放到安裝好的數(shù)據(jù)庫(kù)目錄下(如c:cachesys目錄下),然后到configuration Manager中修改database的路徑,重新啟動(dòng)。DatabaseMEDDATA主業(yè)務(wù)數(shù)據(jù)庫(kù)WEBSRC類定義,類方法,B/S .ClsSYSTrakCare系統(tǒng)庫(kù)(組件,菜單,工作流等)A

11、UDIT審計(jì)數(shù)據(jù)庫(kù)HL7HL7交換消息庫(kù)DOCSTrakCare文檔紀(jì)錄庫(kù)LOGsTrakCare日志紀(jì)錄庫(kù) MEDSRCC/S Routine庫(kù),.MacLABDATA檢驗(yàn)數(shù)據(jù)庫(kù)LABSRC檢驗(yàn)Routine庫(kù)TEMP臨時(shí)數(shù)據(jù)庫(kù)4.查看表的邏輯結(jié)構(gòu)轉(zhuǎn)換namespace,zn “meddata”(實(shí)際配置的namespace名稱),然后回車,然后輸入d %msql,msql都要小寫,界面如下回車后,界面如下輸入U(xiǎn)ser Name為system;Password 為sys;然后回車,進(jìn)入界面如下回車,界面如下默認(rèn)為Base Table Definition,按回車鍵在Base Table Na

12、me輸入要查詢的表的名稱,如查詢名為dhc_sfprintdetail的表查看表的中的字段選擇Fields,按回車鍵,則顯示表中所有的字段如果選擇某個(gè)字段可以查看字段的屬性查看表的關(guān)聯(lián)關(guān)系找到表后,按F3鍵,回車光標(biāo)落到Implicit Joins 上,回車可以看到字段所指向的表父子表關(guān)系,如下圖Child Tables,可以看到表ar_receipt有兩個(gè)子表,ar_rcptalloc,ar_rcptpaymode5.查看表的物理結(jié)構(gòu)步驟同上(獨(dú)立表,父子關(guān)系的表)回車后可以看到表里對(duì)應(yīng)的主Global的結(jié)構(gòu),和索引(Master Map為Yes的為主map,Master Map為No的是索

13、引)主Global的結(jié)構(gòu),找到Master Map為Yes的,回車后如下,查看主索引的保存結(jié)構(gòu),選擇Map Data Specifications,回車后,Global中數(shù)據(jù)的存儲(chǔ)順序說明: F3查看表的關(guān)聯(lián)關(guān)系; F4返回上一級(jí)練習(xí):預(yù)交金明細(xì)Ar_receiptsAr_rcptallocAr_rcptpaymode找出這三張表的關(guān)系,并分別寫出三張表的物理結(jié)構(gòu)主map的結(jié)構(gòu)定義;6.表結(jié)構(gòu)的導(dǎo)出與導(dǎo)入二M基礎(chǔ)(參考Cache面向?qū)ο筌浖_發(fā)教程.pdf P489)1.常用的特殊的變量這些特殊的變量有指定的含義,它們一般以$開頭。有個(gè)別特殊變量也同時(shí)支持縮寫1)$HOROLOG ($H)$H

14、orolog 包含了時(shí)間和日期,它們由逗號(hào)分開。第一部分是日期的數(shù)字,它是從1840 年12 月31 日開始計(jì)算日期的數(shù)字。第二部分是秒的數(shù)字,它是從午夜開始計(jì)算的。Global中的日期時(shí)間都是以數(shù)字的形式存儲(chǔ)的。時(shí)間日期的函數(shù)$ZDate 把$Horolog 格式的日期值按照指定格式顯示。w $zd($h)$ZDateH $ZDate 的反函數(shù)。w $zdh("07/17/2012")$ZDateTime 把$Horolog 格式的日期時(shí)間值按照指定格式顯示。w $zdt($h)$ZDateTimeH $ZDateTime 的反函數(shù)。w $zdth("07/17

15、/2012 17:07:20")$ZTime 把$Horolog 格式的時(shí)間值按照指定格式顯示。w $zt($h)$ZTimeH $ZTime 的反函數(shù)。w $zth("07/17/2012 17:07:20")2) $JOB ($J)$JOB 包含一個(gè)正整數(shù),表示系統(tǒng)所分配給每一個(gè)在執(zhí)行中的進(jìn)程獨(dú)一無(wú)二的編號(hào)。當(dāng)進(jìn)程還在的時(shí)候,$JOB 的值是不變的2.基本的運(yùn)算符1)算術(shù)運(yùn)算符+、-、*、/、#,*。其中,+、*、/ 是基本的4 個(gè)算術(shù)運(yùn)算符。 整數(shù)的除法2+5*7 = 49,從左到右依次運(yùn)算2+(a*b) = 372)算術(shù)比較運(yùn)算符<、>3)字符

16、串比較運(yùn)算符=、= 比較運(yùn)算符是比較兩個(gè)字符串的相同與否。如果需要比較兩個(gè)數(shù)字是否一樣的話,需要在前面再加一個(gè)+ 號(hào)。例如,+number1=+number2。運(yùn)算符檢查右邊的串是不是包含了左邊的串s a="hhhwww111"w a"h" 運(yùn)算符檢查左邊的串是不是在字典順序上跟著右邊的串;它是嚴(yán)格按照ASCII 碼來操作的。例如:219,返回是1,因?yàn)? 的ASCII 值是50,而1 的ASCII 值是49。4) 連接符_它是用來連接兩個(gè)字符串的& 與! 或= 非3.常見的命令變量操作命令:Set, Merge, Kill, New, Lock

17、1)SET(S)給一個(gè)或者多個(gè)變量賦值 ,縮寫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.程序流控制命令I(lǐng)f, Else, For, Quit, Do, Goto, BreakIf,(I) 條件判斷語(yǔ)句。ELSE (e) 當(dāng)判斷條件不通過的時(shí)候,執(zhí)行后面的命令行。FOR (f) 循環(huán)命令QUIT (q) 結(jié)束執(zhí)行一個(gè)函數(shù)并返回一個(gè)值。

18、DO (d) 執(zhí)行命令。GOTO(g) 跳轉(zhuǎn)命令。BREAK(b) 在調(diào)試的時(shí)候中斷一個(gè)routine 的執(zhí)行。WRITE(w) 輸出信息到當(dāng)前設(shè)備上READ(r)從當(dāng)前的設(shè)備讀信息OPEN (o) 開啟一個(gè)設(shè)備以備使用。5.常用的函數(shù)$Piece($P)格式:$Piece(expression,delimiter ,from,to)返回一個(gè)或者多個(gè)被分隔符分開的子串。$Order($O)格式:$Order(variable,direction)按照指定的方向返回一個(gè)變量的上一個(gè)或下一個(gè)索引$get($g)返回一個(gè)變量的值如果變量存在則返回變量本身,不存在則返回空$data($d)判斷變量是否

19、存在$Extract($e)格式:$Extract(expression,from,to)說明:返回字符串的指定部分。>Write $Extract("AABB",2,3)AB$Justify($J)格式:$Justify(expression,width,desimal)說明:返回一個(gè)右對(duì)齊的值,并可以改變它的格式。$Length($L)格式:$Length(expression,delimiter)說明:返回一個(gè)字符串的長(zhǎng)度,或者是被分隔符的子串的個(gè)數(shù)>Write $Length("ABCD")4>Write $Length(&qu

20、ot;AB/CD/EF","/")3Tstart 開始一個(gè)事務(wù)Tcommit 提交事務(wù)Trollback 保存失敗后回滾三編寫簡(jiǎn)單的M程序及調(diào)試1.Global介紹在Caché 中的所有數(shù)據(jù)都是保存在Global(多維數(shù)組)中的。Global以如下形式表示:名稱(下標(biāo)1,下標(biāo)2,下標(biāo)3)=值l 如 AirPlane(“Manufacturer”,“Address”,“Country”)=“US”我們可以自己定制Global,包括添加、刪除、修改、遍歷其節(jié)點(diǎn)。多維數(shù)組以樹狀的形式保存,他的每一個(gè)節(jié)點(diǎn)直接與磁盤和內(nèi)存中的數(shù)據(jù)塊相對(duì)應(yīng),因此可以達(dá)到極快的訪問速

21、度。2.Routine的使用(.MAC程序)我們可以把Routine 理解為“小程序”或程序模塊。Routine 的基本結(jié)構(gòu)1. Routine 的命名Routine 的名字可以是任何的字母數(shù)字式字符。但是有要求:一般不能以數(shù)字或百分號(hào)開頭命名,和句號(hào)不能在開始或者結(jié)束的位置。以百分號(hào)開頭命名的Routine 是不局限在某一個(gè)名字空間(Namespace)應(yīng)用的,號(hào)它是Caché 系統(tǒng)內(nèi)部保留的,只是系統(tǒng)為我們提供的程序命名所使用。此外,對(duì)Routine 名字的長(zhǎng)度也沒有限制,但是只有前31 個(gè)字符是用來對(duì)不同的Routine 加以區(qū)分的。2. Routine 的程序行程序行是rou

22、tine 最基本的單位之一。我們這里說的是一個(gè)邏輯上的行,因?yàn)橛械倪壿嬌系男性谖锢砩险紦?jù)了可能超過一行的位置。Routine 的行有3 種不同的類型,下面作一一的介紹。 Routine 的標(biāo)簽行一個(gè)標(biāo)簽要確定一行,它從當(dāng)前行的第一個(gè)位置開始。它的命名條件和routine 的命名條件類似。但是它的長(zhǎng)度不能超過31 個(gè)字符。通常一個(gè)標(biāo)簽后面有一些空格,后面可以跟一些Caché 的可執(zhí)行命令。代碼行代碼行的最前端至少要有一個(gè)空格,作為一行的開始部分。注釋行有4 種形式的注釋符號(hào):;符號(hào)后面的本行內(nèi)容將不被執(zhí)行。;一些時(shí)候,注釋的內(nèi)容在執(zhí)行的過程中是需要用到的。兩個(gè)分號(hào)的注釋內(nèi)容是被編譯進(jìn)去

23、的,而一個(gè)分號(hào)的注釋在編譯的時(shí)候就被去掉了。/ 和一個(gè)分號(hào)是一樣的。/* */中間省略號(hào)的部分是被注釋的內(nèi)容。創(chuàng)建Routine首先切換namespace到Medsource下FileChange Namespace,選擇MedsourceFile-New ,如下圖點(diǎn)ok,然后點(diǎn)編譯按鈕,界面如下,保存Test.MAC文件點(diǎn)擊保存。則保存在Medsource下,這樣我們保存了一個(gè)空的.mac文件,下面我們將介紹如何寫簡(jiǎn)單的程序.3.沒有父子關(guān)系的表1)如查詢所有押金明細(xì)表的收費(fèi)日期,病人姓名(pa_patmas.papmi_name),登記號(hào)(pa_patmas.papmi_ipno)金額,支

24、付方式,收費(fèi)員姓名(表dhc_sfprintdetail,對(duì)應(yīng)字段分別為prt_date,prt_adm(病人就診rowid,指向pa_adm表),prt_payamount,prt_paymode,指向ct_paymode表)我們可以查看表的Global的存儲(chǔ)結(jié)構(gòu)為DHCSFPRINTDETAIL(prt_rowid)Test (我們上面建的mac文件)GetDepositDetail()/標(biāo)簽行,也就是函數(shù)的名稱s prtrowid=0,num=0 /首先要對(duì)檢索的global的節(jié)點(diǎn)付初始值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調(diào)試程序(參考Terminate端程序調(diào)試)2)查詢表病人收費(fèi)類別表pac_admreason的數(shù)據(jù),在RowId之前有一個(gè)”ADMREA”的節(jié)點(diǎn),顯示代碼(rea_code),名稱(rea_desc)PAC("ADMREA",RowId)=記錄查詢所有的病人收費(fèi)類別循環(huán)如下: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 的數(shù)據(jù),顯示ctpm_code,ctpm_desc4.有父子關(guān)系的表的取值如查詢顯示某帳單(dhc_patientbill.pb_rowid)的收費(fèi)項(xiàng)目的名稱(表dhc_patbilldetails字段分別為pbd_tari_dr->dhc_taritem(tari_desc)

29、,單價(jià)(pbd_unitprice),數(shù)量(pbd_billqty),金額(pbd_totalamount); ,收費(fèi)日期(pbd_billdate),收費(fèi)時(shí)間(pbd_billtime)信息GetDetailByRowID(pbrowid)S RowId=”f s RowId=$o(DHCPB(RowId) q:RowId=” d /第一層循環(huán).s OrdSub=”f s OrdSub=$o(DHCPB(RowId,"O",OrdSub) q: OrdSub =” d /第二層循環(huán)s DetSub=”f s DetSub =$o(DHCPB(RowId,"O&q

30、uot;,OrdSub,”D”,DetSub) q: DetSub =” d /第三層循環(huán)5.表的索引的應(yīng)用取某段時(shí)間內(nèi)押金的明細(xì)(dhc_sfprintdetail),顯示押金的病人姓名,金額,支付方式,收費(fèi)員信息索引結(jié)構(gòu)為DHCSFPRINTDETAIL(0,"PrtDate",prt_printdate,prt_rowid)F PrtDate=Stdate:1:EndDate ds RowId=$o(DHCSFPRINTDETAIL(0,"PrtDate",PrtDate,RowId)q:RowId=” d;找到數(shù)據(jù)的RowId后,到主Global

31、中取相應(yīng)的數(shù)據(jù)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程序調(diào)試編譯m程序 d %urcomp,然后輸入要編譯的m名稱調(diào)試程序(包括.mac,.cls,query)Mac文件調(diào)試d procnamemacname(參數(shù)1,參數(shù)2.。) q后面沒有返回值w $functionmacname(參數(shù)1,參數(shù)2.。)q后面有返回值如果以q 返回值的方式執(zhí)行,即使沒有入?yún)?,也要在函?shù)名稱后面增加括號(hào)練習(xí)1查詢某段日期(prt_date)的某個(gè)收費(fèi)員(prt_adduserid)的押金的明細(xì)

33、(表DHC_SFPRINTDETAIL),顯示信息為病人登記號(hào)(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),收費(fèi)金額(DHC_PrintDetail.prt_payamount),支付方式(dhc_sfprintdetail.paymode);練習(xí)2.查詢?nèi)朐喝掌跒?007-04-02至2007-04-08日的住院就診病人的信息,顯示信息為病人登記號(hào)(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),入院日期;用到的表就診信息表Pa_adm,病人基本信息表Pa_PatMas,paadm_typ

34、e=”I”的表示住院病人利用索引PAADMi("PAADM_AdmDate",PAADM_AdmDate,PAADM_RowID)四類的創(chuàng)建及類方法的編寫及調(diào)試轉(zhuǎn)換命名空間到websource下1.創(chuàng)建一個(gè)類,保存到websource下File-New-Cache Class Definition下一步,修改class名稱下一步,選擇第三項(xiàng),然后完成就可以了2.打開一個(gè)類文件,在websource/web目錄下1)打開Studio,選擇NameSpace為websource,點(diǎn)Open from databasae,Files of 選擇.cls文件類型,為如下界面2)雙擊

35、Web包,進(jìn)入后則現(xiàn)則所有的類文件,File Name:輸入要打開的類名稱。3.類方法的編寫首先創(chuàng)建一個(gè)類,然后編寫類方法,一個(gè)類里面可以有多個(gè)類方法我們把前面編寫的m里面的函數(shù)轉(zhuǎn)換成類的方法編寫/如查詢所有押金明細(xì)表的收費(fèi)日期,病人姓名,金額,支付方式,收費(fèi)員姓名(表dhc_sfprintdetail,對(duì)應(yīng)字段分別為prt_date,prt_adm(病人就診rowid,指向pa_adm表),prt_payamount,prt_paymode,指向ct_paymode表)我們可以查看表的Global的存儲(chǔ)結(jié)構(gòu)為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端調(diào)試4.Query程序的編寫見TestCls文本里的FindDeposit練習(xí)3 用Query查詢支付方式表ct_paymode,顯示內(nèi)容為Ctpm_code,ctpm_desc練習(xí)4查詢某個(gè)賬單對(duì)應(yīng)的收費(fèi)項(xiàng)目明細(xì);要求顯示收費(fèi)項(xiàng)目名稱(dhc_pabilldetail.pbd_tari_dr),單

39、價(jià)(pbd_unitprice),數(shù)量(pbd_billqty),金額(pbd_totalamount)練習(xí)5查詢某段日期(prt_date)的押金的明細(xì)(表DHC_SFPRINTDETAIL),顯示信息為病人登記號(hào)(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),收費(fèi)金額(DHC_PrintDetail.prt_payamount),支付方式(dhc_sfprintdetail.paymode);5.Terminate端類方法的調(diào)試Class文件d #class(web.classname).functionname(參數(shù)1,參數(shù)2.)w #

40、class(web.classname).functionname(參數(shù)1,參數(shù)2.) Query的執(zhí)行D #class(%ResultSet).RunQuery(“類名稱”,”Qurey名稱”,”參數(shù)1”,”參數(shù)2”,.)五組件程序開發(fā)1.javascript基礎(chǔ)1)功能在客戶端 IE 執(zhí)行用來與用戶交互數(shù)據(jù)檢查、控制控制Browser 的頁(yè)面方式2).基本命令var 定義變量alert 生成一個(gè)獨(dú)立的小窗口,稱作對(duì)話框,并用它來顯示一條信息和一個(gè)“確定”按鈕!當(dāng)顯示這個(gè)對(duì)話框時(shí),暫停程序的執(zhí)行。 confirm確認(rèn)選擇對(duì)話框用于確定用戶某個(gè)Yes/No風(fēng)格問題的回答。這種風(fēng)格的對(duì)話框中顯示

41、一個(gè)問號(hào)和兩個(gè)按鈕:“確定”和“取消”。當(dāng)用戶單擊了“確定”按鈕Confirm()方法返回true;否則返回false。If , else ForLess than (<)Greater than (>)Not (!)Not equal (!=)Equals (=)Logical AND (&&)Logical OR (|)Is NOT a Number (isNaN )Split將string對(duì)象字符以某個(gè)符號(hào)分開隔開  3.屬性document properties文檔對(duì)象,描述當(dāng)前窗口或指定窗口對(duì)象的文檔。它包含了文檔從<head>到&l

42、t;/body>的內(nèi)容。document.getElementByIddocument.getElementById("id1").value /獲取或設(shè)置id1的值Object propertiesObj.tagNameObj.classNameObj.typeObj. checkedObj. valueObj. disabledObj. styleObj.readOnly4.事件document eventsdocument.body.onload=MyLoadHandler;當(dāng)網(wǎng)頁(yè)打開,只能書寫在body中onUnload   當(dāng)網(wǎng)頁(yè)關(guān)閉或離

43、開時(shí),只能書寫在body中   Object eventsobj.onclick=MyOnClick;當(dāng)對(duì)象被點(diǎn)擊obj.onkeydown=MyKeyDown; 按回車obj.onchange = MyChange;當(dāng)對(duì)象的內(nèi)容被改變   obj.onblur= MyBlur;當(dāng)對(duì)象失去焦點(diǎn)  obj.onmouseover   當(dāng)鼠標(biāo)懸于其上時(shí)   obj.onmouseout   當(dāng)鼠標(biāo)離開對(duì)象時(shí)   obj.onmouseup   當(dāng)鼠標(biāo)松開   obj.onmousedown 

44、0; 當(dāng)鼠標(biāo)按下鍵   obj.onFocus   當(dāng)對(duì)象獲取焦點(diǎn)時(shí)   obj.onSelect   當(dāng)對(duì)象的文本被選中時(shí)   我們?cè)谑褂胦bject.onXXX = handler是需要保證object已經(jīng)在頁(yè)面中生成。比如我們?yōu)閐ocument.body賦予事件處理函數(shù),我們必須保證document.body已經(jīng)存在,就是說我們不能在<body>之前在的全局語(yǔ)句中使用document.body; handler必須是函數(shù)名2.創(chuàng)建組件過程1)創(chuàng)建組件;進(jìn)入組件管理器,選擇要連接的數(shù)據(jù)庫(kù),如下圖所示選擇連接的

45、數(shù)據(jù)庫(kù)后,點(diǎn)擊進(jìn)入,然后新建組件ComponentNew Component,提示Create a New Component?,選擇”是”.系統(tǒng)會(huì)默認(rèn)的創(chuàng)建組件的名稱,選中名稱,點(diǎn)擊右鍵,進(jìn)入Component Properties,如下圖所示修改組件的名稱,同時(shí)把Display Type修改成Custom,點(diǎn)擊Apply按鈕,保存所做的改變2)創(chuàng)建組件上的元素選中組件名稱,點(diǎn)擊右鍵,進(jìn)入Add Item(s) to Component ,進(jìn)入界面如下Custom Item 組件上的單個(gè)元素Custom Table Item 以列表的形式顯示的元素根據(jù)實(shí)際需求選擇要?jiǎng)?chuàng)建的元素類型對(duì)于要?jiǎng)?chuàng)建的

46、元素打勾,然后FileApply3)修改元素屬性選中元素,右鍵 Item Properties (或雙擊),如下圖所示Name:元素名稱Caption:界面上顯示的名稱Display Type:TEXTBOX,LISTBOX,CHECKBOX,LINK,BUTTON等Data Type屬性:元素顯示的數(shù)據(jù)類型,如日期,字符串等3.查詢程序的編寫及調(diào)試(以押金收據(jù)購(gòu)入程序?yàn)槔┚毩?xí)不帶條件的查詢和帶條件的查詢參考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內(nèi)的是要輸出的值,這些變量的位置要和組件上的元素相對(duì)應(yīng),這樣才能在Table的相應(yīng)的列對(duì)應(yīng)的顯示內(nèi)容組件的屬性:連接Class和Query名稱(在修改時(shí)要先把組件的顯示類型修改成除Custom之外的類型才能修改)組件的類

48、型是:修改后組件的顯示類型修改成Custom如果是帶參數(shù)的查詢程序,則相應(yīng)的參數(shù)為組件上的元素,那么在點(diǎn)擊查找的時(shí)候會(huì)自動(dòng)傳入?yún)?shù);練習(xí)6用組件開發(fā),把練習(xí)4,練習(xí)5的查詢結(jié)果在界面上顯示出來;并掛入菜單4.組件程序的開發(fā)(以押金收據(jù)購(gòu)入程序)1).放大鏡,不帶參數(shù),帶有參數(shù)組件元素為:Custom Item元素的LookUp如下圖所示放大鏡要顯示的內(nèi)容寫成QueryLookupClassName:要調(diào)用的類的名稱LookupQueryName:要調(diào)用的Query名稱LookupProperties:傳入的參數(shù),如果沒有入?yún)t為空,參數(shù)為組件上元素的名稱LookupJsFunction:js文

49、件里調(diào)用的js函數(shù)練習(xí)7在練習(xí)5的基礎(chǔ)上,收費(fèi)員顯示以放大鏡的方式顯示,顯示收費(fèi)員姓名,查詢時(shí)以rowid為查詢條件;2).js文件創(chuàng)建,js文件的調(diào)用;創(chuàng)建的js文件的名稱必須要和對(duì)應(yīng)的組件的名稱一致如果js文件里調(diào)用其他js文件里的函數(shù),則要在組件的OtherScript里把js文件的名稱添加進(jìn)來,就可以調(diào)用里面的函數(shù)了3).前端頁(yè)面元素調(diào)用后臺(tái)的classmethod的方法;前端頁(yè)面調(diào)用后臺(tái)的類方法是通過函數(shù)js函數(shù)里調(diào)用cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)來實(shí)現(xiàn)參數(shù)1為固定參數(shù),傳入的值為要調(diào)用的后臺(tái)的類方法那么入?yún)⒌墨@取是通過組件上的某個(gè)元素來獲得的如組

50、件UDHCJFRcptBuy中的添加按鈕,是通過調(diào)用元素ins1來獲取后臺(tái)要執(zhí)行的方法(ValueGet)4).執(zhí)行后臺(tái)的classmethod之后接收返回結(jié)果的兩種方法;1直接通過cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)返回結(jié) 果,可以定義變量直接接收返回結(jié)果;如果采用此方式,要求Classmethod的q 后面返回變量Var ReturnvalueReturnvalue=cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)2通過cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)里的某個(gè)參 數(shù)接收返回值,如可以利用參數(shù)2接收后臺(tái)的返回值

51、 如接收返回值的參數(shù)的名稱為GetReturnValue,那么在傳入?yún)?shù)的時(shí) 候要傳到后臺(tái)cspRunServerMethod(參數(shù)1,GetReturnValue,參數(shù) 3.。) 在class端,GetReturnValue已經(jīng)傳入,那么通過Sretval=GetReturnValue _"('"_$ZCVT(返回值,"O","JS")_"');"&javascript<#(retval)#>,通過javascript把結(jié)果返回頁(yè)面 在js文件里有個(gè)函數(shù)名稱為GetReturn

52、Value(value),接收返回值括號(hào)內(nèi)的value就是返回值,然后可以根據(jù)需求對(duì)返回值做相應(yīng)處理練習(xí)8輸入登記號(hào),回車,查找病人的姓名;并在界面上顯示出來;6).SelectRowHandler的用途;可以獲取Table的行數(shù)和當(dāng)前選中的記錄的行可以選中某個(gè)記錄,獲取選中記錄的各元素的值獲取到選中的行var eSrc=window.event.srcElement;var rowObj=getRow(eSrc);var selectrow=rowObj.rowIndex;獲取Table的記錄數(shù)var objtbl=document.getElementById('tUDHCJFRc

53、ptBuy');var rows=objtbl.rows.length;獲取Table上某一行的某個(gè)元素的值var SelRowObj=document.getElementById('Tbuyrowidz'+selectrow);var buyrowid=SelRowObj.innerText;其中Tbuyrowid為元素的名稱,z要加到元素名稱的后面,selectrow為行號(hào);如果是顯示的列則用SelRowObj.innerText;如果是隱藏的列則用SelRowObj.Value7).Link00528273Display Type:LinkLinkUrl:web

54、sys.default.csp(在輸入組件名稱時(shí)會(huì)自動(dòng)輸入)LinkComponent:要Link的組件的名稱LinkExpression:要傳入到所Link的組件的名稱如果要在新的窗體中打開組件:在General頁(yè)簽處,設(shè)置新打開窗體的大小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頁(yè)簽,定義Code,Description在js文件里調(diào)用時(shí)用tCode,獲取Description練習(xí)9輸入登記號(hào)(pa_patmas.Papmi_no),回車事件時(shí),

56、顯示病人的姓名(pa_patmas.papmi_name),就診號(hào)(pa_adm.paadm_admno,pa_adm.paadm_rowid)(就診號(hào)用放大鏡顯示,可能會(huì)有多條記錄);選擇就診號(hào),查詢病人的賬單總表(dhc_patientbill),顯示賬單的總金額(pb_totalamount),賬單Rowid(pb_rowid);選中病人的某個(gè)賬單,顯示賬單的收費(fèi)項(xiàng)目明細(xì)(pa_patbilldetails)(以按鈕的方式打開),顯示收費(fèi)項(xiàng)目的名稱(pbd_tari_dr),單價(jià)(pbd_unitprice),數(shù)量(pbd_billqty),金額(pbd_totalamount);賬單Rowid以Link的方式,鏈接收費(fèi)項(xiàng)目明細(xì)(示收費(fèi)項(xiàng)目的名稱,單價(jià),數(shù)量,金額);說明:收費(fèi)項(xiàng)目明細(xì)可以采用同一個(gè)組件,只是以兩種不同的方式打開;六類文件的導(dǎo)出與導(dǎo)入切換namespace到websource下1.導(dǎo)出Tools-Export,進(jìn)入如下界面可以導(dǎo)成.XML文件,也可以導(dǎo)成.cd

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論