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

下載本文檔

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

文檔簡介

1、開發(fā)培訓(xùn)文檔數(shù)據(jù)庫安裝與配置數(shù)據(jù)庫安裝 準(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)入下一頁面。步驟2:如果本機(jī)操作系統(tǒng)是第一次安裝Cach,將會(huì)提示輸入安裝名稱,默認(rèn)值為“CACHE”。* 安裝名稱又稱配置名

2、稱,當(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)入下一頁面。步驟3:在本頁面中設(shè)定安裝類型和安裝路徑。Cach 安裝程序中共有三種安裝類型:a. 標(biāo)準(zhǔn)(Standard,默認(rèn)選項(xiàng))。安裝Cach 服務(wù)器和客戶端的所有工具。b. 客戶端(Client)。只安裝Cach 的客戶端的所有工具。c. 自定義(Custom)。允許你自己定制要安裝到你的計(jì)算機(jī)上的各個(gè)部分的清單,例如:只作Web 服務(wù)器安裝。設(shè)置目標(biāo)文件夾:安裝路徑默認(rèn)

3、為 “c:CacheSys”。你可以點(diǎn)擊 “瀏覽” 來更改希望安裝在那個(gè)文件夾。點(diǎn)擊 按鈕 “下一步”,進(jìn)入下一頁面。步驟4:在本頁面中可選擇設(shè)置成Unicode 支持(16-bit)。(*否則系統(tǒng)默認(rèn)將會(huì)是自動(dòng)設(shè)置成為8-bit 的)選擇 “Unicode”,這樣Cach 就可以支持中文顯示。點(diǎn)擊 按鈕 “下一步”,進(jìn)入下一頁面。步驟5:本頁面列出了前面步驟中所輸入的信息以待最后檢查。檢查無誤后,點(diǎn)擊 按鈕 “下一步”,便開始安裝過程。* 此時(shí)Cach 將開始安裝步驟6:安裝過程將需要要持續(xù)一段時(shí)間。在這期間安裝進(jìn)程可能會(huì)暫停,進(jìn)行提問:如果安裝程序沒有發(fā)現(xiàn)許可證(License Key),

4、將會(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)配置。* 安裝完成之后,我們也可以再去修改Web Server 的配置。步驟7:安裝過程順利完成后,點(diǎn)擊 按鈕 “完成”,退出安裝程序。安裝過后在Cach 安裝完畢后,在我們的計(jì)算機(jī)中多了如下項(xiàng)目: 在文件系統(tǒng)中,新增了一個(gè)文

5、件夾目錄:“c:CacheSys” (該目錄即為安裝階段默認(rèn)的安裝路徑)。Cach 的系統(tǒng)文件和數(shù)據(jù)庫文件等都位于這個(gè)目錄中:* 對(duì)于不同的安裝配置,目錄結(jié)構(gòu)會(huì)略有不同。但主要的目錄如Bin、CSP 和Mgr 不會(huì)有變化。 在Windows 桌面右下方的任務(wù)欄中增加了一個(gè)立方體形狀的圖標(biāo) ,我們稱之為Cach 立方體(Cach Cube)。它是訪問Cach 的最常用的入口。點(diǎn)擊 Cach 立方體,將會(huì)彈出一個(gè)菜單,通過此菜單我們可以選擇各種工具來管理Cach。菜單中包含如下項(xiàng)目:菜單項(xiàng) 中文名稱 功能Getting Started 入門文檔 初學(xué)者可從中獲取必要信息Start Cach 啟動(dòng)C

6、ach 啟動(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 的終端界面訪問CachExplorer 資源管理器 查看Cach 中的數(shù)據(jù)資源,包括多維數(shù)組、類和例程SQL Manager SQL 管理器 通過關(guān)系型方式訪問CachControl Panel 控制面板 監(jiān)視和管理Cach 的運(yùn)行Configuration Manager 配置管理器 進(jìn)行基本配置,包括數(shù)據(jù)庫的配置Documentation 聯(lián)機(jī)文檔 只有啟動(dòng)Cach 后才可以閱讀全

7、部文檔信息Remote System Access 遠(yuǎn)程系統(tǒng)訪問 在本地控制遠(yuǎn)端的Cach 服務(wù)器(任意平臺(tái))。UNIX 系統(tǒng)的管理要通過這種方式實(shí)現(xiàn)。子菜單中同樣包含了工作室,終端,資源管理器,SQL 管理器,控制面板,配置管理器,聯(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 立方體安裝FDBMS解壓縮FDBMS的壓縮包,根據(jù)FDBMS中的readme

8、文件安裝復(fù)制CACHE.DAT到 c:cachesysmgrfdbms 目錄(fdbms目錄要?jiǎng)?chuàng)建)在cache的configuration manager中創(chuàng)建相應(yīng)的Database和Namespace在Terminal中執(zhí)行USER zn “%SYS”%SYSdo PROTECTDirectory: : c:cachesysmgr = c:cachesysmgrfdbmsSet the protection codes of globalsOwner: RWD= RWDGroup: N= RWDWorld: N= RWDNetwork:RWD= RWDAll Globals? No = N

9、oGlobal rOBJ1 item selected from23 available globalsGlobal Done.More? No = NoDirectory: : c:cachesysmgr = QUITSYS zn “FDBMS”FDBMS d mdbmsins(“”,”FDBMS”)ALL DONE3.數(shù)據(jù)庫配置在我們的實(shí)際應(yīng)用中,可以拷貝一個(gè)配置好的cpf文件,放到安裝好的數(shù)據(jù)庫目錄下(如c:cachesys目錄下),然后到configuration Manager中修改database的路徑,重新啟動(dòng)。DatabaseMEDDATA主業(yè)務(wù)數(shù)據(jù)庫WEBSRC類定義,類方法

10、,B/S .ClsSYSTrakCare系統(tǒng)庫(組件,菜單,工作流等)AUDIT審計(jì)數(shù)據(jù)庫HL7HL7交換消息庫DOCSTrakCare文檔紀(jì)錄庫LOGsTrakCare日志紀(jì)錄庫 MEDSRCC/S Routine庫,.MacLABDATA檢驗(yàn)數(shù)據(jù)庫LABSRC檢驗(yàn)Routine庫TEMP臨時(shí)數(shù)據(jù)庫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

11、 Table Definition,按回車鍵在Base Table Name輸入要查詢的表的名稱,如查詢名為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),和索引(M

12、aster Map為Yes的為主map,Master Map為No的是索引)主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.常用的特殊的變量這些特殊的變量有指定的含義,它們一般

13、以$開頭。有個(gè)別特殊變量也同時(shí)支持縮寫1)$HOROLOG ($H)$Horolog 包含了時(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

14、的反函數(shù)。w $zdth(07/17/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ú)一無二的編號(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)字符串比較運(yùn)算符=、=

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

16、(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) 條件判斷語句。ELSE (e) 當(dāng)判斷條件不通過的時(shí)候,執(zhí)行后面的命令行。FOR (f) 循環(huán)命令QUIT (q) 結(jié)束執(zhí)行一個(gè)函數(shù)并返回一個(gè)值。DO (d) 執(zhí)行命令。GOTO(g) 跳轉(zhuǎn)命令。BREA

17、K(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)判斷變量是否存在$Extract($e)格式:$Extract(e

18、xpression,from,to)說明:返回字符串的指定部分。Write $Extract(AABB,2,3)AB$Justify($J)格式:$Justify(expression,width,desimal)說明:返回一個(gè)右對(duì)齊的值,并可以改變它的格式。$Length($L)格式:$Length(expression,delimiter)說明:返回一個(gè)字符串的長度,或者是被分隔符的子串的個(gè)數(shù)Write $Length(ABCD)4Write $Length(AB/CD/EF,/)3Tstart 開始一個(gè)事務(wù)Tcommit 提交事務(wù)Trollback 保存失敗后回滾三編寫簡單的M程序及調(diào)試

19、1.Global介紹在Cach 中的所有數(shù)據(jù)都是保存在Global(多維數(shù)組)中的。Global以如下形式表示:名稱(下標(biāo)1,下標(biāo)2,下標(biāo)3)=值如 AirPlane(“Manufacturer”,“Address”,“Country”)=“US” 我們可以自己定制Global,包括添加、刪除、修改、遍歷其節(jié)點(diǎn)。多維數(shù)組以樹狀的形式保存,他的每一個(gè)節(jié)點(diǎn)直接與磁盤和內(nèi)存中的數(shù)據(jù)塊相對(duì)應(yīng),因此可以達(dá)到極快的訪問速度。2.Routine的使用(.MAC程序)我們可以把Routine 理解為“小程序”或程序模塊。Routine 的基本結(jié)構(gòu)1. Routine 的命名Routine 的名字可以是任何的字

20、母數(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 名字的長度也沒有限制,但是只有前31 個(gè)字符是用來對(duì)不同的Routine 加以區(qū)分的。2. Routine 的程序行程序行是routine 最基本的單位之一。我們這里說的是一個(gè)邏輯上的行,因?yàn)橛械倪壿嬌系男性谖锢砩险紦?jù)了可能超過一行的位置。Routine 的行有3 種不同的類型,下面作一一的介紹。 Routine 的 標(biāo)簽行一個(gè)

21、標(biāo)簽要確定一行,它從當(dāng)前行的第一個(gè)位置開始。它的命名條件和routine 的命名條件類似。但是它的長度不能超過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)去的,而一個(gè)分號(hào)的注釋在編譯的時(shí)候就被去掉了。/ 和一個(gè)分號(hào)是一樣的。/* */中間省略號(hào)的部分是被注釋的內(nèi)容。創(chuàng)建Routine 首先切換namespace到Medsource下FileChange Nam

22、espace,選擇MedsourceFile-New ,如下圖點(diǎn)ok,然后點(diǎn)編譯按鈕,界面如下,保存Test.MAC文件點(diǎn)擊保存。則保存在Medsource下,這樣我們保存了一個(gè)空的.mac文件,下面我們將介紹如何寫簡單的程序.3.沒有父子關(guān)系的表1)如查詢所有押金明細(xì)表的收費(fèi)日期,病人姓名(pa_patmas.papmi_name),登記號(hào)(pa_patmas.papmi_ipno)金額,支付方式,收費(fèi)員姓名(表dhc_sfprintdetail,對(duì)應(yīng)字段分別為prt_date,prt_adm(病人就診rowid,指向pa_adm表),prt_payamount,prt_paymode,指向

23、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:prtrowid= do.s prtdate=$p(DHCSFPRINTDETAIL(prtrowid),2).s prttime=$p(DHCSFPRINTDETAIL(prtrowid),3).s ad

24、m=$p(DHCSFPRINTDETAIL(prtrowid),4).q:adm=.s papmi=.i $d(PAADM(adm) s papmi=$p(PAADM(adm),1).q:papmi=.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_papno_payamtq

25、 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(ADMREA,RowId),1).S Desc=$p(PAC(ADMREA,RowId),2).S Num=+$g(Num)+1.S PLIST(Num)=Code_

26、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),單價(jià)(pbd_unitprice),數(shù)量(pbd_billqty),金額(pbd_totalamount); ,收費(fèi)日期(pbd_billdate),收費(fèi)時(shí)間(pbd_billtime)信息GetDetailByRowID(pbrowid)S RowId=”f s RowId=$

27、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,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

28、)F PrtDate=Stdate:1:EndDate ds RowId=$o( DHCSFPRINTDETAIL(0,PrtDate,PrtDate,RowId) q:RowId=” d;找到數(shù)據(jù)的RowId后,到主Global中取相應(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) .

29、 .S Regno=$p(PAPER(paperid,”ALL”),”,1). .S PatName=$p(PAPER(paperid,PAT,1),”,1). S PayAmt=$p(DHCSFPRINTDETAIL (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 $functionma

30、cname(參數(shù)1,參數(shù)2.。)q后面有返回值如果以q 返回值的方式執(zhí)行,即使沒有入?yún)ⅲ惨诤瘮?shù)名稱后面增加括號(hào)練習(xí)1查詢某段日期(prt_date)的某個(gè)收費(fèi)員(prt_adduserid)的押金的明細(xì)(表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日的住院就診病人的信息,顯示信息

31、為病人登記號(hào)(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMas.paper_name),入院日期;用到的表就診信息表Pa_adm,病人基本信息表Pa_PatMas,paadm_type=”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è)類文件,在websour

32、ce/web目錄下1)打開Studio,選擇NameSpace為websource,點(diǎn)Open from databasae,Files of 選擇.cls文件類型,為如下界面 2)雙擊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_paya

33、mount,prt_paymode,指向ct_paymode表)我們可以查看表的Global的存儲(chǔ)結(jié)構(gòu)為DHCSFPRINTDETAIL(prt_rowid)ClassMethod GetDepositDetail()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(DH

34、CSFPRINTDETAIL(prtrowid),4).q:adm=.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),6).s num=num+1.w !,$zd(prtdate,3)_$zt(prttime,1)_papname_papno_payamtq寫好后到Termi

35、nate端調(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),單價(jià)(pbd_unitprice),數(shù)量(pbd_billqty),金額(pbd_totalamount)練習(xí)5查詢某段日期(prt_date)的押金的明細(xì)(表DHC_SFPRINTDETAIL),顯示信息為病人登記號(hào)(Pa_PatMas.paper_ipno),病人姓名(Pa_PatMa

36、s.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 #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

37、 執(zhí)行 用來與用戶交互 數(shù)據(jù)檢查、控制控制Browser 的頁面方式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ì)話框中顯示一個(gè)問號(hào)和兩個(gè)按鈕:“確定”和“取消”。當(dāng)用戶單擊了“確定”按鈕Confirm()方法返回true;否則返回false。If , else For Less than () Not (!) Not equal (!=) Equals (=) Logical AND (&) Logi

38、cal OR (|) Is NOT a Number (isNaN )Split 將string對(duì)象字符以某個(gè)符號(hào)分開隔開 3.屬性document properties 文檔對(duì)象,描述當(dāng)前窗口或指定窗口對(duì)象的文檔。它包含了文檔從到的內(nèi)容。document.getElementById document.getElementById(id1).value/獲取或設(shè)置id1的值Object properties Obj.tagName Obj.className Obj.type Obj. checked Obj. value Obj. disabled Obj. style Obj.readO

39、nly 4.事件document eventsdocument.body.onload=MyLoadHandler; 當(dāng)網(wǎng)頁打開,只能書寫在body中onUnload 當(dāng)網(wǎng)頁關(guān)閉或離開時(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.onmouseu

40、p 當(dāng)鼠標(biāo)松開 obj.onmousedown 當(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ōu)閐ocument.body賦予事件處理函數(shù),我們必須保證document.body已經(jīng)存在,就是說我們不能在之前在的全局語句中使用document.body; handler必須是函數(shù)名 2.創(chuàng)建組件過程1)創(chuàng)建組件;進(jìn)入組件管理器,選擇要連接的數(shù)據(jù)庫,如下圖所示選擇連接的數(shù)據(jù)庫后,點(diǎn)擊進(jìn)入,然后新建組件ComponentNew Componen

41、t,提示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)建的元素打勾,然后FileApply3)修改元素屬性選中元素,右鍵 Item

42、Properties (或雙擊),如下圖所示Name:元素名稱Caption:界面上顯示的名稱Display Type:TEXTBOX,LISTBOX,CHECKBOX,LINK,BUTTON等Data Type屬性:元素顯示的數(shù)據(jù)類型,如日期,字符串等3.查詢程序的編寫及調(diào)試(以押金收據(jù)購入程序?yàn)槔┚毩?xí)不帶條件的查詢和帶條件的查詢 參考Test.cls中的Query:FindDeposit注意:Query FindDeposit() As %Query(ROWSPEC = Tprtdate:%String,Tprttime:%String,Tpapname:%String,Tpapno:%

43、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之外的類型才能修改)組件的類型是:修改后組件的顯示類型修改成Custom如果是帶參數(shù)的查詢程序,則相應(yīng)的參數(shù)為組件上的元

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

45、時(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).前端頁面元素調(diào)用后臺(tái)的classmethod的方法; 前端頁面調(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è)元素來獲得的如組件UDHCJFRcptBuy中的添加按鈕,是通過調(diào)用元素ins1來獲取后臺(tái)要執(zhí)行的方法(V

46、alueGet) 4).執(zhí)行后臺(tái)的classmethod之后接收返回結(jié)果的兩種方法;1直接通過cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)返回結(jié) 果,可以定義變量直接接收返回結(jié)果;如果采用此方式,要求 Classmethod的q 后面返回變量 Var Returnvalue Returnvalue= cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)2通過cspRunServerMethod(參數(shù)1,參數(shù)2,參數(shù)3.。)里的某個(gè)參 數(shù)接收返回值,如可以利用參數(shù)2接收后臺(tái)的返回值 如接收返回值的參數(shù)的名稱為GetReturnValue,那么在傳入?yún)?shù)的時(shí) 候

47、要傳到后臺(tái)cspRunServerMethod(參數(shù)1,GetReturnValue,參數(shù) 3.。) 在class端,GetReturnValue已經(jīng)傳入,那么通過 S retval= GetReturnValue _(_$ZCVT(返回值,O,JS)_); &javascript,通過javascript把結(jié)果返回頁面 在js文件里有個(gè)函數(shù)名稱為GetReturnValue(value),接收返回值括號(hào) 內(nèi)的value就是返回值,然后可以根據(jù)需求對(duì)返回值做相應(yīng)處理練習(xí)8 輸入登記號(hào),回車,查找病人的姓名;并在界面上顯示出來;6).SelectRowHandler的用途;可以獲取Table的行

48、數(shù)和當(dāng)前選中的記錄的行可以選中某個(gè)記錄,獲取選中記錄的各元素的值獲取到選中的行var eSrc=window.event.srcElement;var rowObj=getRow(eSrc);var selectrow=rowObj.rowIndex;獲取Table的記錄數(shù)var objtbl=document.getElementById(tUDHCJFRcptBuy);var rows=objtbl.rows.length;獲取Table上某一行的某個(gè)元素的值var SelRowObj=document.getElementById(Tbuyrowidz+selectrow);var bu

49、yrowid=SelRowObj.innerText;其中Tbuyrowid為元素的名稱,z要加到元素名稱的后面,selectrow為行號(hào);如果是顯示的列則用SelRowObj.innerText;如果是隱藏的列則用SelRowObj.Value7).Link00528273Display Type:LinkLinkUrl:websys.default.csp(在輸入組件名稱時(shí)會(huì)自動(dòng)輸入)LinkComponent:要Link的組件的名稱LinkExpression:要傳入到所Link的組件的名稱如果要在新的窗體中打開組件:在General頁簽處,設(shè)置新打開窗體的大小ShowInNewWind

50、ow:top=30,height=650,left=8,width=10008).按鈕中打開新的組件var str=websys.default.csp?WEBSYS.TCOMPONENT=UDHCJFDeposit&Adm=+Adm+&deposittype=+t01window.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).

51、Message的定義在組件屬性的Message頁簽,定義Code,Description在js文件里調(diào)用時(shí)用tCode,獲取Description練習(xí)9輸入登記號(hào)(pa_patmas.Papmi_no),回車事件時(shí),顯示病人的姓名(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)(以按鈕的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論