版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章醫(yī)院信息系統(tǒng)開發(fā)主要內(nèi)容利用VisualBasic開發(fā)信息系統(tǒng)系統(tǒng)開發(fā)編碼規(guī)范系統(tǒng)主要功能模型的創(chuàng)建程序的調(diào)試軟件發(fā)布26.1利用VisualBasic開發(fā)信息系統(tǒng)VisualBasic工程VisualBasic工程管理VisualBasic數(shù)據(jù)庫訪問36.1.1VisualBasic工程VB的可視化編程環(huán)境VB開發(fā)應(yīng)用程序的一般步驟4VB的可視化編程環(huán)境VB的啟動(dòng)VB6.0應(yīng)用程序集成開發(fā)環(huán)境5VB的啟動(dòng)新建:建立一個(gè)新的工程?,F(xiàn)存:選擇和打開現(xiàn)有的工程,繼續(xù)進(jìn)行修改和調(diào)試。最新:列出最近使用過的工程。6VB6.0啟動(dòng)對(duì)話框7VB6.0應(yīng)用程序集成開發(fā)環(huán)境窗體窗口:窗體是VB應(yīng)用程序的主要構(gòu)成部分,用于設(shè)計(jì)應(yīng)用程序的界面,供用戶在上面“畫”出各類對(duì)象。窗體按照創(chuàng)建的先后順序默認(rèn)的名稱為Form1、Form2、……。屬性窗口:大多數(shù)窗體或控件的屬性,如顏色、字體、大小等,都可以通過屬性窗口來修改。工程資源管理器ProjectExplorer窗口:如圖6-2所示,工程資源管理器窗口以層次列表形式列出組成這個(gè)工程的所有文件,主要是窗體文件*.frm和模塊*.bas文件。代碼窗口:代碼窗口是專門用來進(jìn)行程序設(shè)計(jì)的窗口,可顯示和編輯程序代碼。工具箱:通過工具箱中列出的工具,用戶可以在窗體上設(shè)計(jì)各種控件。8VB6.0應(yīng)用程序集成開發(fā)環(huán)境96.1.2VisualBasic工程管理工程的組成工程的基本操作10工程的組成工程文件工程文件包含與該工程有關(guān)的全部文件、對(duì)象以及所設(shè)置的環(huán)境選項(xiàng)的信息。整個(gè)工程對(duì)應(yīng)一個(gè)工程文件,擴(kuò)展名為.vbp。窗體文件工程中的每一個(gè)窗體對(duì)應(yīng)一個(gè)窗體文件,擴(kuò)展名為.frm。窗體文件包含窗體及其控件有關(guān)屬性的文本描述、常量或變量的聲明,以及窗體內(nèi)的過程代碼等。標(biāo)準(zhǔn)模塊文件工程中的標(biāo)準(zhǔn)模塊通常用來定義供其他窗體或模塊引用的全局常量、變量、過程等。標(biāo)準(zhǔn)模塊文件的擴(kuò)展名為.bas。11工程的基本操作新建工程每次啟動(dòng)VB時(shí),系統(tǒng)都將打開一個(gè)“新建工程”對(duì)話框,通過【新建】選項(xiàng)卡可創(chuàng)建所選類型的工程。此外,在VB中執(zhí)行【文件】菜單中的【新建工程】命令,也可以新建工程。不過,后者在新建工程前會(huì)關(guān)閉當(dāng)前工程。打開工程啟動(dòng)VB的時(shí)候,通過“新建工程”對(duì)話框的【現(xiàn)存】和【最新】選項(xiàng)卡可以打開已經(jīng)保存的工程。其中,【新建】選項(xiàng)卡列出的是最近訪問過的工程文件。此外,在VB中執(zhí)行【文件】菜單中的【打開工程】命令,也可以打開工程。同樣,后者在打開工程前會(huì)關(guān)閉當(dāng)前工程。保存工程單擊工具欄上的【保存工程】按鈕或執(zhí)行【文件】菜單中的【保存工程】命令,可以保存當(dāng)前工程及其所有模塊,包括工程文件、窗體文件和標(biāo)準(zhǔn)模塊文件等。執(zhí)行【文件】菜單中的【工程另存為】命令,是用指定的文件名保存當(dāng)前工程的工程文件。126.1.3VisualBasic數(shù)據(jù)庫訪問VisualBasic中的數(shù)據(jù)訪問VisualBasic的數(shù)據(jù)庫應(yīng)用程序的組成VisualBasic的數(shù)據(jù)庫應(yīng)用程序的存放VisualBasic的數(shù)據(jù)庫記錄集對(duì)象類型ADO數(shù)據(jù)控件VisualBasic中結(jié)構(gòu)化查詢語言(SQL)的實(shí)現(xiàn)13VisualBasic中的數(shù)據(jù)訪問VB數(shù)據(jù)庫:也稱為本地?cái)?shù)據(jù)庫,這類數(shù)據(jù)庫文件使用與MicrosoftAccess相同的格式。Jet引擎直接創(chuàng)建和操作這些數(shù)據(jù)庫并且提供了最大程度的靈活性和速度。外部數(shù)據(jù)庫:VB可以使用幾種比較流行的“索引順序訪問文件方法(ISAM)”數(shù)據(jù)庫,包括DBASEIII、DBASEIV、FoxPro2.0和2.5以及Paradox3.x和4.x。在VB中可以創(chuàng)建和操作所有這些格式的數(shù)據(jù)庫,也可以訪問文本文件數(shù)據(jù)庫和Excel或Lotusl-2-3電子表格文件。ODBC數(shù)據(jù)庫:包括符合ODBC標(biāo)準(zhǔn)的客戶機(jī)/服務(wù)器數(shù)據(jù)庫,如MicrosoftSQLServer。如果要在VB中創(chuàng)建真正的客戶機(jī)/服務(wù)器應(yīng)用程序,可以使用ODBCDirect直接把命令傳遞給服務(wù)器處理。14VisualBasic的數(shù)據(jù)庫應(yīng)用程序的組成用戶界面和應(yīng)用程序代碼用戶界面是用戶所看見的并用于交互的界面,它包括顯示數(shù)據(jù)并允許用戶查看或更新數(shù)據(jù)的窗體。數(shù)據(jù)庫引擎MicrosoftJET(JointEngineeringTechnology)數(shù)據(jù)庫引擎是應(yīng)用程序和數(shù)據(jù)庫存儲(chǔ)之間的一種接口。數(shù)據(jù)倉庫數(shù)據(jù)倉庫是包含數(shù)據(jù)庫表的一個(gè)或多個(gè)文件。15VisualBasic數(shù)據(jù)庫應(yīng)用程序的3個(gè)部分16VisualBasic的數(shù)據(jù)庫應(yīng)用程序的存放數(shù)據(jù)庫引擎可以同時(shí)為多個(gè)客戶機(jī)的應(yīng)用程序提供服務(wù)、操作數(shù)據(jù)庫并對(duì)每個(gè)本地應(yīng)用程序返回所請(qǐng)求的記錄。在遠(yuǎn)程系統(tǒng)中,數(shù)據(jù)庫引擎與用戶應(yīng)用程序在相同的計(jì)算機(jī)上,只有數(shù)據(jù)庫駐留在遠(yuǎn)程計(jì)算機(jī)上。17客戶機(jī)/服務(wù)器數(shù)據(jù)庫與遠(yuǎn)程數(shù)據(jù)庫的存放18VisualBasic的數(shù)據(jù)庫記錄集對(duì)象類型表(Table)類型表類型的Recordset對(duì)象是當(dāng)前數(shù)據(jù)庫中的本地表或者是MicrosoftJET創(chuàng)建的外部數(shù)據(jù)庫,是表格的直接顯示數(shù)據(jù)。動(dòng)態(tài)集(DynaSet)類型動(dòng)態(tài)集類型的Recordset對(duì)象可以是本地表或者鏈接的表,也可以是返回的行查詢結(jié)果,是可以更新的數(shù)據(jù)集,它實(shí)際上是對(duì)一個(gè)或幾個(gè)表中的記錄的一系列引用??煺眨⊿napShot)類型快照類型的Recordset對(duì)象是靜態(tài)數(shù)據(jù)的顯示。19ADO數(shù)據(jù)控件通過【工程】→【部件】菜單命令,在彈出的“部件”對(duì)話框中選中【MicrosoftADODataControl6.0(OLEDB)】復(fù)選框,將ADO對(duì)象類添加到工具箱。20ADO對(duì)象描述設(shè)置ADO數(shù)據(jù)控件的屬性在工具箱中選擇ADO控件按鈕,并把它放置在窗體上,控件的默認(rèn)名稱為Adodc1。單擊ADO控件屬性窗口中的ConnectionString屬性右邊的【…】按鈕,將彈出的“屬性頁”對(duì)話框。在“屬性頁”對(duì)話框中允許通過3種不同的方式連接數(shù)據(jù)源。使用DataLink文件:表示通過一個(gè)鏈接文件來完成。使用ODBC數(shù)據(jù)源名稱:可以通過下拉式列表框,選擇某個(gè)創(chuàng)建好的數(shù)據(jù)源名稱(DSN)作為數(shù)據(jù)來源,對(duì)遠(yuǎn)程數(shù)據(jù)庫進(jìn)行控制。使用連接字符串:只需要單擊【生成】按鈕,通過選項(xiàng)設(shè)置自動(dòng)產(chǎn)生連接字符串的內(nèi)容。21ADO對(duì)象描述采用“使用連接字符串”方式連接數(shù)據(jù)源,單擊【生成】按鈕,將打開“數(shù)據(jù)鏈接屬性”對(duì)話框。在“數(shù)據(jù)鏈接屬性”對(duì)話框的【提供程序】選項(xiàng)卡內(nèi)選擇一個(gè)合適的OLEDB數(shù)據(jù)源;由于藥房數(shù)據(jù)庫.mdb是Access數(shù)據(jù)庫,故選擇MicrosoftJet3.51OLEDBProvider選項(xiàng)。然后單擊【下一步】按鈕,或者選擇【連接】選項(xiàng)卡。22ADO對(duì)象描述在數(shù)據(jù)鏈接屬性對(duì)話框【連接】選項(xiàng)卡的【選擇或輸入數(shù)據(jù)庫名稱】文本框中,指定數(shù)據(jù)庫文件名,或者是單擊【…】按鈕瀏覽選擇本地或外接數(shù)據(jù)庫文件名。為保證數(shù)據(jù)庫連接有效,可單擊對(duì)話框右下方的【測(cè)試連接】按鈕,測(cè)試是否連接正常。若測(cè)試成功,則彈出對(duì)話框提示“測(cè)試連接成功”,數(shù)據(jù)庫連接完成。單擊【確定】按鈕,關(guān)閉ConnectionString屬性設(shè)置。單擊單擊ADO控件屬性窗口中的RecordSource屬性右邊的【…】按鈕,將彈出記錄源的“屬性頁”對(duì)話框,在記錄源的“屬性頁”對(duì)話框中的【命令類型】下拉列表框中選擇【2-adCmdTable】選項(xiàng),在【表或存儲(chǔ)過程名稱】下拉列表框中選擇“藥房數(shù)據(jù)庫.mdb”數(shù)據(jù)庫中的“藥品基本信息表”,然后單擊【確定】按鈕,關(guān)閉記錄源屬性頁。此時(shí)已經(jīng)完成了ADO數(shù)據(jù)控件的連接工作。23【提供程序】選項(xiàng)卡24【連接】選項(xiàng)卡25RecordSource的“屬性頁”對(duì)話框26ADO數(shù)據(jù)控件的“屬性頁”對(duì)話框27VisualBasic中結(jié)構(gòu)化查詢語言(SQL)的實(shí)現(xiàn)結(jié)構(gòu)化查詢語言(SQL)VisualBasic中使用SQLSelect命令28結(jié)構(gòu)化查詢語言(SQL)SQL是StructuredQueryLanguage(結(jié)構(gòu)化查詢語言)的縮寫,是操縱數(shù)據(jù)庫的工業(yè)標(biāo)準(zhǔn)語言,已經(jīng)成為應(yīng)用程序與數(shù)據(jù)庫之間的標(biāo)準(zhǔn)接口。29Select語句的語法形式Select字段列表[Into新表名]From數(shù)據(jù)源[Where條件表達(dá)式][GroupBy分組表達(dá)式][Having搜索表達(dá)式][OrderBy排序表達(dá)式[ASC|DESC]]30說明字段列表部分包含了查詢結(jié)果要顯示的字段清單,字段之間用逗號(hào)分開。要選擇表中的全部字段,可用星號(hào)“*”代替。如果所選定的字段要更名,可在該字段后用As[新名]來實(shí)現(xiàn)。[Into新表名]用于將查詢結(jié)果生成一個(gè)新表,默認(rèn)新表存儲(chǔ)于當(dāng)前數(shù)據(jù)庫中。From子句用于指定一個(gè)或多個(gè)表。如果所選擇的字段是來自不同的表,則字段名前需要加上表名前綴。例如,藥品基本信息表.藥品編號(hào)。Where子句用于限制記錄的選擇。構(gòu)造查詢條件可使用大多數(shù)VisualBasic內(nèi)部函數(shù)和運(yùn)算符以及SQL特有的運(yùn)算符構(gòu)成表達(dá)式。GroupBy和Having子句用于分組和分組過濾處理。OrderBy子句決定了要查找出來的記錄的排序順序。在OrderBy子句中,可以指定一個(gè)或多個(gè)字段作為排序關(guān)鍵字,Asc代表升序,Desc代表降序。31SQL命令的分類32常用的SQL命令子句33VisualBasic中使用SQLSelect命令無論是數(shù)據(jù)控件還是數(shù)據(jù)對(duì)象都可以使用Select語句查詢數(shù)據(jù)。Select語句基本上是記錄集的定義語句。Data控件的RecordSource屬性不一定是表名稱,也可以是表中的某些行或多個(gè)表中的數(shù)據(jù)組合??梢灾苯釉贒ata控件的RecordSource屬性欄中輸入SQL語句,也可以在代碼中通過SQL語句將選擇的記錄集賦給Data控件的RecordSource屬性,也可賦給對(duì)象變量。346.2系統(tǒng)開發(fā)編碼規(guī)范命名規(guī)范格式規(guī)范356.2.1命名規(guī)范IDE設(shè)置規(guī)范工程命名規(guī)范變量命名規(guī)范控件命名規(guī)范函數(shù)命名規(guī)范常量命名規(guī)范屬性類、窗體和模塊自定義控件命名規(guī)范36IDE設(shè)置規(guī)范打開設(shè)置選項(xiàng)的“要求變量聲明”、“對(duì)齊控件到網(wǎng)絡(luò)”、“自動(dòng)縮進(jìn)”開關(guān)。Tab的寬度統(tǒng)一為4個(gè)空格,網(wǎng)絡(luò)單位一律設(shè)為width50height50。37工程命名規(guī)范ActiveX控件和DLL工程命名格式為….Lib,EXE工程直接命名,如果是通用組件工程,直接命名,如果是項(xiàng)目或產(chǎn)品工程,則使用項(xiàng)目或產(chǎn)品縮寫作為前綴,如:XWY….Lib。工程命名不必縮寫,為了表達(dá)意思和用途,可以盡可能地長(zhǎng),而且命名格式采用名詞、形容詞+名詞或名詞+動(dòng)詞的名詞形式,如YPStockOperationLib或YPStockLib。
注意:在任何時(shí)候都不要使用中文命名,包括文件夾、文件名、函數(shù)名、變量名,除非文件需要和用戶交換!38變量命名規(guī)范如果是一般的值類型,如Integer,String,則直接根據(jù)變量用處命名,并盡量使用全名:DimnameAsStringDimcountAsInteger對(duì)于一般的臨時(shí)性變量定義,應(yīng)該盡可能地簡(jiǎn)單,如:DimIAsIntegerForI=0to100Nexti39變量命名規(guī)范如果是類對(duì)象或自定義類型對(duì)象,則在單一使用情況下使用類名稱或自定義類型名稱的簡(jiǎn)寫來命名。DimemAsEntityManager如果非單一使用,則使用類型名稱縮寫作為前綴,即使用匈牙利命名法:DimenReadAsEntityManager注意DimenSaveAsEntityManager所有前綴全都小寫,后面的單詞首字母大寫。40變量命名規(guī)范縮寫規(guī)則如下:如果名稱由多個(gè)單詞組成,則取每個(gè)單詞的首字母,如Entity-Manager縮寫為em,ProcedureManager縮寫為pm;如果名稱由一個(gè)單詞組成,則對(duì)單詞進(jìn)行分段,取首字母,如Entity為et;縮寫應(yīng)該控制在3個(gè)字母以內(nèi),盡量清晰,對(duì)于接口名稱,I…中的I前綴不對(duì)縮寫產(chǎn)生任何影響,如Ientity的名稱應(yīng)視作Entity,除非首字母為元音,否則應(yīng)該截取輔音作為縮寫,如TextBox控件的縮寫前綴為txt。41變量命名規(guī)范范圍標(biāo)識(shí)全局變量加前綴:g-。模塊級(jí)變量加前綴:m-。過程級(jí)變量不加前綴。全局變量和模塊級(jí)變量應(yīng)該盡量使用全名稱,不推薦使用縮寫,如g-EntityManager。42控件命名規(guī)范控件命名一律使用控件類型縮寫+控件用途的命名方式,類型縮寫應(yīng)控制在3個(gè)字母以內(nèi),縮寫規(guī)則同變量命名,以下是常用控件的類型縮寫,應(yīng)該嚴(yán)格遵守。如果使用了新的控件,則首先應(yīng)該在小組內(nèi)協(xié)同一致其類型名稱縮寫后再使用。43控件命名規(guī)范Cmb ComboboxChk CheckboxCmd CommandbuttonDlg CommondialogcontrolDt DtpickerDropDateControlEnm EnumEditBoxFra FrameFrm FormGra Graph44控件命名規(guī)范Grd EditGridMSHFlexGridFlexGridDataGridImg ImageImageListLab LabelIn LineLst ListViewLv ListViewMnu MenucontrolNm NumEditBoxOpt OptionbuttonPic Picture45控件命名規(guī)范Rpt ReportSbr ScrollbarShp ShapeSpn SpinSt StatusBarTb ToolBarTmr TimerTxt TextboxTv TreeView46函數(shù)命名規(guī)范此處的函數(shù)包括Sub和function,這兩種過程統(tǒng)稱為函數(shù)。函數(shù)表示的是一個(gè)動(dòng)作,所以它的結(jié)構(gòu)應(yīng)該是動(dòng)詞+名詞,動(dòng)詞必須小寫,后面的名稱首字母大寫,如getMaterialCode,updateGrid,readOrder。函數(shù)命名盡量不要使用縮寫,而且它的名稱應(yīng)該使人一目了然,能夠從名稱知道這個(gè)函數(shù)的功能,如getCode(當(dāng)這個(gè)函數(shù)屬于Material類的時(shí)候,它還是有意義的),update,readData。當(dāng)函數(shù)名稱不足以表達(dá)其功能時(shí),可在函數(shù)頭部加上能夠讓調(diào)用者明白的注釋。參數(shù)命名的原則是全部小寫,如果參數(shù)包括兩個(gè)或兩個(gè)以上的單詞時(shí),首單詞字母小寫,其他的單詞首字母大寫,如showColm,isUpdate。47常量命名規(guī)范常量的命名應(yīng)該全部大寫,使用“-”作為單詞間的分隔符,單詞盡量使用全名稱,如PublicConstMSG-EMPTY-ROWAsString=“有空行存在!”對(duì)一些常用詞應(yīng)該使用簡(jiǎn)寫,如MST;使用Public而不是早期版本的global來聲明變量;對(duì)常量的聲明必須帶上類型。48屬性屬性的命名采用首字母大寫的原則,如ItemCountItem.。49類、窗體和模塊類的命名使用功能名詞,不必加任何前綴和后綴,并且單詞首字母大寫,如SystemConfig。窗體命名使用功能名詞+Form后綴,如ListForm。但對(duì)于單據(jù)的明細(xì)窗體則統(tǒng)一使用Detail后綴替換Form。模塊命名不必加任何前綴和后綴,直接命名。50自定義控件命名規(guī)范自定義控件的命名:名詞+Ctrl,如EditGridCtrl。516.2.2格式規(guī)范定義的格式空行的格式縮進(jìn)的格式注釋的數(shù)量注釋的格式52定義的格式定義的代碼塊應(yīng)該放在一起,盡量不要在中間定義變量,變量的定義應(yīng)該頂行對(duì)齊,不能縮進(jìn),同時(shí)要保證As關(guān)鍵字對(duì)齊,如:DimIAsIntegerDimjAsIntegerDimemAsEntityManager53定義的格式對(duì)象的定義應(yīng)該盡可能地帶上所屬的庫名稱,防止以后引起名稱沖突,如引用了兩個(gè)Lib,每個(gè)Lib以中都包含一個(gè)Stock類,如果不使用As…Lib.Stock的定義方式,則無法編譯通過,為了防止以后程序擴(kuò)充和修改時(shí)引入新的庫帶來命名沖突,推薦在定義類對(duì)象時(shí)全部加上庫標(biāo)識(shí),對(duì)于本工程的類對(duì)象定義也要加上,如:DimemAsObjectPersistenceLib.EntityManager54空行的格式空行區(qū)分代碼塊與塊之間的間隔,在函數(shù)之間必須加上空行(兩行左右);而函數(shù)內(nèi)部,變量聲明塊和實(shí)現(xiàn)塊(實(shí)現(xiàn)塊指除變量聲明外的其他代碼)要使用空行來間隔(一行),實(shí)現(xiàn)塊的內(nèi)部,通過空行來標(biāo)識(shí)一個(gè)功能段。注意:不要使用過多的空行,空行太多影響代碼閱讀!55縮進(jìn)的格式縮進(jìn)必須嚴(yán)格執(zhí)行,變量聲明塊不縮進(jìn),實(shí)現(xiàn)塊必須保證全部縮進(jìn)(即不可能有實(shí)現(xiàn)塊是行首對(duì)齊的)。對(duì)于基本的控制結(jié)構(gòu),必須要有縮進(jìn),如:If,Do,With,F(xiàn)or,Open,Select塊,縮進(jìn)示例如下:…If…Then……EndIf…注意:在任何地方不要寫ElseIf語句,轉(zhuǎn)換成If…Else…EndIf結(jié)構(gòu)。56注釋的數(shù)量通過函數(shù)名稱表達(dá)通過代碼來表達(dá)通過注釋來表達(dá)57注釋的格式注釋的格式遵循vbDocMan的寫法,一般情況下使用vbDocMan的注釋編輯器進(jìn)行注釋編寫,對(duì)于顯而易見的參數(shù)或函數(shù)功能可以不加注釋。參數(shù)的注釋中參數(shù)類型可以不要。586.3系統(tǒng)主要功能模型的創(chuàng)建設(shè)計(jì)概況系統(tǒng)登錄模塊系統(tǒng)主界面模塊藥房庫存管理模塊藥品庫存查詢模塊藥品預(yù)警信息模塊藥物配伍禁忌模塊系統(tǒng)幫助的制作596.3.1設(shè)計(jì)概況藥品基本信息管理:包括添加藥品基本信息、修改藥品基本信息、刪除藥品基本信息、查詢藥品基本信息。藥品入出庫信息管理:包括添加藥品入出庫信息、修改藥品入出庫信息、刪除藥品入出庫信息、查詢藥品入出庫信息。藥品庫存信息管理:包括庫存預(yù)警管理、查詢藥品庫存余額信息。藥物配伍禁忌的設(shè)置。報(bào)表打印可以實(shí)現(xiàn)即打即停(連續(xù)打),能自定義紙張,內(nèi)置多種銷售單、入庫單樣式,可以分頁空行補(bǔ)全,可選是否補(bǔ)空行等。藥品廠家信息管理、供貨商信息管理。藥房庫存管理工作流程。60藥房庫存管理工作流程616.3.1設(shè)計(jì)概況數(shù)據(jù)訪問對(duì)象和控件的添加引用創(chuàng)建公用模塊啟動(dòng)和初始化62數(shù)據(jù)訪問對(duì)象和控件的添加引用選擇VisualBasic的【工程】菜單中的【引用】命令,在如圖6-11所示的對(duì)話框中選擇MicrosoftActiveDataObject2.6Library選項(xiàng)。VisualBasic提供了ADO的多個(gè)版本,選擇其中的最高版本就可以。選擇VisualBasic的【工程】菜單中的【部件】命令,在對(duì)話框中選擇MicrosoftADODataControl6.0(SP4)。單擊【確定】按鈕以后就可以在控件工具箱中出現(xiàn)ADODC控件供使用。63添加ADO庫64添加ADODC控件 65創(chuàng)建公用模塊在VisualBasic中可以用公用模塊來存放整個(gè)工程項(xiàng)目公用的函數(shù)、過程和全局變量等。這樣可以大大提高代碼的效率。在項(xiàng)目資源管理器中為項(xiàng)目添加一個(gè)模塊,方法是通過【工程】菜單,選擇【添加模塊】命令為工程添加一個(gè)模塊窗體。在這個(gè)添加的窗體里面,主要放置一些公用的全局變量、函數(shù)和過程,供各個(gè)窗體模塊調(diào)用。66添加函數(shù)ExecuteSQL的代碼PublicFunctionExecuteSQL(ByValSQLAsString,MsgStringAsString)_AsADODB.Recordset'executesSQLandreturnsRecordset'聲明一個(gè)連接DimcnnAsADODB.Connection'聲明一個(gè)數(shù)據(jù)集對(duì)象DimrstAsADODB.RecordsetDimsTokens()AsString'異常處理OnErrorGoToExecuteSQL_Error'用Split函數(shù)產(chǎn)生一個(gè)包含各個(gè)子串的數(shù)組sTokens=Split(SQL)'創(chuàng)建一個(gè)連接Setcnn=NewADODB.Connection'打開一個(gè)連接cnn.OpenConnectStringIfInStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0)))Then'執(zhí)行查詢語句67添加函數(shù)ExecuteSQL的代碼cnn.ExecuteSQLMsgString=sTokens(0)&"querysuccessful"ElseSetrst=NewADODB.Recordsetrst.OpenTrim$(SQL),cnn,adOpenKeyset,adLockOptimistic'返回記錄集合對(duì)象SetExecuteSQL=rstMsgString="查詢到"&rst.RecordCount&"條記錄"EndIfExecuteSQL_Exit:Setrst=NothingSetcnn=NothingExitFunction
ExecuteSQL_Error:MsgString="查詢錯(cuò)誤:"&Err.DescriptionResumeExecuteSQL_ExitEndFunction68添加函數(shù)ExecuteSQL的代碼在錄入有關(guān)信息時(shí),需要按回車鍵來進(jìn)入下一個(gè)文本框,這樣對(duì)用戶非常方便。在所有的功能模塊都需要這個(gè)函數(shù),所以將它放在公用模塊中,代碼如下:PublicSubEnterToTab(KeyascAsInteger)IfKeyasc=13ThenSendKeys"{TAB}"EndIf EndSubKeyasc用來保存當(dāng)前按鍵,SendKeys函數(shù)用來指定的按鍵。一旦按下回車鍵,將返回【Tab】鍵,下一個(gè)控件自動(dòng)獲得輸入焦點(diǎn)。69本項(xiàng)目所用到的主要公用變量Publicg_DbPathAsString '數(shù)據(jù)庫存放路徑Publicg_UserNameAsString '登錄系統(tǒng)用戶名Publicg_UserPassWordAsString '登錄用戶對(duì)應(yīng)密碼Publicg_UserquanxuanAsString '登錄用戶對(duì)應(yīng)權(quán)限PublicConnectStringAsString '數(shù)據(jù)庫連接字符串70啟動(dòng)和初始化功能描述防止系統(tǒng)程序同時(shí)運(yùn)行多個(gè)實(shí)例。啟動(dòng)登錄界面。獲取Ini文件設(shè)置。顯示Splash窗體。加載系統(tǒng)主界面。71具體代碼'啟動(dòng)系統(tǒng)SubMain()DimfLoginAsNewfrmLogin'防止多個(gè)程序運(yùn)行IfApp.PrevInstance=TrueThenEndEndIf'獲取Ini文件設(shè)置CallGetInitSet'啟動(dòng)登錄界面fLogin.ShowvbModalIfNotfLogin.OKThen'LoginFailedsoexitapp72接上EndEndIfUnloadfLogin'啟動(dòng)系統(tǒng)主界面SetfMainForm=NewfrmMainfMainForm.ShowEndSub其中調(diào)用了一個(gè)自定義函數(shù)GetInitSet,下面進(jìn)行介紹。PrivatesubGetInitSet()OnErrorRusumeNextIfRight(App.path,1)="\"ThenDbPath=App.pathElseDbPath=App.path&"\"EndIfEndSub736.3.2系統(tǒng)登錄模塊幾乎所有的信息系統(tǒng)都有設(shè)計(jì)一個(gè)登錄界面讓用戶在開始的時(shí)候進(jìn)行身份驗(yàn)證,對(duì)于沒有取得訪問權(quán)限的非法用戶拒絕其進(jìn)入系統(tǒng)操作。登錄后用戶名將記憶在用戶使用系統(tǒng)的這個(gè)過程中,所有的操作都以該用戶名字作為日志記錄。74系統(tǒng)登錄界面75【確定】按鈕控件Click事件主要程序代碼'檢查正確的用戶名和密碼DimRecuserAsNewADODB.RecordsetWithRecuser.ActiveConnection=ConnectString.CursorLocation=adUseServer.CursorType=adOpenStatic.LockType=adLockReadOnlyEndWithRecuser.Source="Select*From系統(tǒng)用戶表Where用戶代號(hào)='"&Trim(txtUserName.Text)&"'and用戶密碼='"&Trim(txtPassword.Text)&"'"76接上Recuser.OpenIfRecuser.RecordCount=0ThenMsgBox"對(duì)不起,用戶名或密碼錯(cuò)誤!"Recuser.Closecmbcode.SelLength=Len(cmbcode.Text)cmbcode.SelStart=0cmbcode.SetFocusExitSubElseOK=TrueMe.HideEndIfRecuser.CloseUnloadMe776.3.3系統(tǒng)主界面模塊系統(tǒng)主界面創(chuàng)建主界面的菜單78系統(tǒng)主界面frmMain窗體Load事件添加如下代碼,實(shí)現(xiàn)窗體在屏幕居中、狀態(tài)欄顯示日期和登錄用戶的一些信息。Me.Left=(Screen.Width-Me.Width)/2Me.Top=(Screen.Height-Me.Height)/2StatusBar.Panels(1).Text="今天日期:"&Format(Date,"longdate")StatusBar.Panels(2).Text="當(dāng)前用戶名稱:"&g_UserNameStatusBar.Panels(3).Text="用戶類型:"&g_Userquanxuan79系統(tǒng)主界面同時(shí)為了出現(xiàn)用戶在在關(guān)閉frmMain窗體的時(shí)候的確認(rèn)信息,在QueryUnload事件中加入下面代碼。PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)IfMsgBox("確實(shí)要退出系統(tǒng)嗎?",vbOKCancel,"警告")=vbOKThenEndElseCancel=TrueEndIfEndSub80創(chuàng)建主界面的菜單在主界面中,單擊鼠標(biāo)右鍵,選擇彈出式菜單中的菜單編輯器,創(chuàng)建菜單結(jié)構(gòu)。81系統(tǒng)主界面82主界面的菜單結(jié)構(gòu) 836.3.4藥房庫存管理模塊藥品入庫管理藥品出庫管理84藥品入庫界面85藥品出庫管理界面866.3.5藥品庫存查詢模塊【確定】按鈕Click事件的程序如下:IfOption1.Value=TrueThenIfTrim(Text1.Text)=""ThenMsgBox"藥品編號(hào)不能為空!"Text1.SetFocusExitSubEndIfAdodc1.RecordSource="Select*From藥品庫存表Where藥品編號(hào)='"&Trim(Text1.Text)&"'"Adodc1.Refresh87接上IfAdodc1.Recordset.RecordCount=0ThenMsgBox"對(duì)不起,沒有該藥品庫存信息!",vbOKCancelEndIfElseIfTrim(Text2.Text)=""ThenMsgBox"藥品名稱不能為空!"Text2.SetFocusExitSubEndIf88接上Adodc1.RecordSource="Select*From藥品庫存表Where藥品編號(hào)In("&"Select藥品編號(hào)From藥品基本信息表Where藥品名稱='"&Trim(Text2.Text)&"')"Adodc1.RefreshIfAdodc1.Recordset.RecordCount=0ThenMsgBox"對(duì)不起,沒有該藥品庫存信息!",vbOKCancelEndIfEndIf89藥品庫存查詢界面906.3.6藥品預(yù)警信息模塊藥品過期預(yù)警藥品庫存預(yù)警91藥品過期預(yù)警界面92藥品庫存預(yù)警界面936.3.7藥物配伍禁忌模塊藥物配伍維護(hù)藥物配伍查詢94藥物配伍維護(hù)在藥物配伍表中包括配伍碼和配伍說明兩個(gè)主要字段。配伍碼是由兩個(gè)藥物的序列碼(字符型)相加(忽略前后順序關(guān)系)得到的一個(gè)字符型字段。在配伍數(shù)據(jù)表中,配伍碼是唯一的,每一條配伍說明均對(duì)應(yīng)一個(gè)配伍碼。如青霉素針的序列碼為0001,慶大霉素的序列碼為0047,這兩件藥的配伍碼為00010047(在程序中,設(shè)定00010047等價(jià)于00470001)。95藥物配伍維護(hù)界面96藥物配伍查詢藥物配伍咨詢方式:輸入任意兩個(gè)藥物的藥物輸入碼,即可查詢這兩個(gè)藥的配伍使用情況。②處方配伍審核方式:錄入處方,系統(tǒng)即以處方審核的形式,完成對(duì)同一張?zhí)幏缴纤兴幬镏g任意兩個(gè)藥物的配伍使用情況的查詢。在以處方配伍審核方式查詢藥物配伍模塊中,還可以對(duì)處方配伍的情況進(jìn)行統(tǒng)計(jì)。此功能可對(duì)處方以合理配伍、不良配伍、配伍禁忌、劑量不當(dāng)、用藥選擇不當(dāng)?shù)榷喾N方式進(jìn)行分類存儲(chǔ)及統(tǒng)計(jì)分析,量化了對(duì)醫(yī)師處方質(zhì)量的考評(píng),同時(shí)也為醫(yī)院用藥情況的分析與管理提供了依據(jù)。976.3.8系統(tǒng)幫助的制作幫助文件的制作程序中調(diào)用幫助文件的方法98幫助文件的制作將幫助內(nèi)容編輯成.rtf格式(豐富文本格式)的文件編輯后綴為.hpj的ASCII碼文本文件對(duì).hpj文件進(jìn)行編譯99將幫助內(nèi)容編輯成.rtf格式(豐富文本格式)的文件只要是支持.rtf格式的編輯處理工具都可以使用,當(dāng)然也可以使用第三方提供的專用工具。本文以MicrosoftWord為例來介紹。在每個(gè)需要定義的段落標(biāo)題部分,依次插入如下腳注。$:定義主題,例如系統(tǒng)設(shè)置。#:定義標(biāo)識(shí)名稱,例如XTSZ。K:定義關(guān)鍵詞(可以有多個(gè)),例如幫助、說明等。+:定義順序號(hào),例如1001。100將幫助內(nèi)容編輯成.rtf格式(豐富文本格式)的文件實(shí)際操作時(shí),先把光標(biāo)移到需要定義的段落標(biāo)題之前,選擇菜單【插入】→【腳注和尾注】命令,在隨后出現(xiàn)的“腳注和尾注”對(duì)話框中選擇【腳注】單選按鈕,在【自定義標(biāo)記】文本框中輸入符號(hào)“$”,單擊【確定】按鈕,然后輸入定義的主題(如“系統(tǒng)設(shè)置”)。接下來將光標(biāo)移到段落標(biāo)題之前,在剛才輸入的“$”之后重復(fù)以上步驟,分別定義“#”、“K”、“+”。在瀏覽幫助內(nèi)容時(shí),有時(shí)需要跳轉(zhuǎn)。101將幫助內(nèi)容編輯成.rtf格式(豐富文本格式)的文件具體可按如下方式操作:選中鏈接詞(點(diǎn)黑),再選擇【格式】→【字體】命令,在隨后出現(xiàn)的對(duì)話框中的【下劃線】下拉列表框中選擇【雙下劃線】選項(xiàng),單擊【確定】按鈕,然后將光標(biāo)移到關(guān)鍵詞之后,選擇【格式】→【字體】命令,在隨后出現(xiàn)的對(duì)話框中的【下劃線】下拉列表框中選【(無)】選項(xiàng),接下來輸入定義的標(biāo)識(shí)名稱(如XTSZ)。最后選擇定義的標(biāo)識(shí)名稱(點(diǎn)黑),選擇【格式】→【字體】命令,在隨后出現(xiàn)的對(duì)話框中選擇【隱藏文字】命令,單擊【確定】按鈕。重復(fù)以上過程對(duì)所有需要跳轉(zhuǎn)的鏈接詞或圖形進(jìn)行處理。102編輯后綴為.hpj的ASCII碼文本文件可以使用記事本編輯器等工具進(jìn)行編輯。在這個(gè)文件中可定義很多內(nèi)容,但只有一項(xiàng)是必需的,其余各項(xiàng)如果不定義時(shí)使用默認(rèn)值。格式如下:[FILES]XXX.RTF;定義了將被編譯的RTF文件的路徑名;本項(xiàng)必須定義,以下項(xiàng)為可選項(xiàng)[WINDOWS]main="幫助窗口標(biāo)題",pos(x,y),size(h,w);定義窗口標(biāo)題、起始坐標(biāo)及窗口尺寸[MAP]標(biāo)識(shí)名稱1=上下文映射號(hào)標(biāo)識(shí)名稱2=上下文映射號(hào)…103編輯后綴為.hpj的ASCII碼文本文件以上的等號(hào)也可以使用空格或【Tab】鍵代替。這部分把上下文序號(hào)映射到上下文敏感的幫助特定主題中,在程序運(yùn)行時(shí)按下【F1】鍵,幫助系統(tǒng)將彈出相關(guān)上下文的內(nèi)容。104對(duì).hpj文件進(jìn)行編譯使用MicrosoftHelpWorkshop對(duì).hpj文件進(jìn)行編譯,.hpj文件加上.rtf文件通過編譯生成需要的.hlp文件。105程序中調(diào)用幫助文件的方法按【F1】鍵激活幫助系統(tǒng)在【幫助】菜單中進(jìn)行目錄內(nèi)容的調(diào)用在【幫助】菜單中進(jìn)行索引搜索使用命令按鈕進(jìn)行關(guān)鍵詞相關(guān)調(diào)用106按【F1】鍵激活幫助系統(tǒng)當(dāng)光標(biāo)停留在表單或文本框、按鈕等控件上時(shí),按【F1】鍵彈出相應(yīng)的上下文相關(guān)的幫助窗口。方法如下:首先在工程項(xiàng)目屬性的幫助文件名文本框中輸入.hlp文件的路徑名或.chm文件的路徑名。將有關(guān)表單的WhatsThisButton屬性及WhatsThisHelp屬性設(shè)為False(假),再將表單或表單上的文本框、按鈕等控件的HelpcontextID屬性分別設(shè)置為所需的在“[MAP]”中定義的“上下文映射號(hào)”。注意如果表單的WhatsThisButton屬性及WhatsThisHelp屬性置為True(真)時(shí),表單或表單上的文本框、按鈕等控件的WhatsThisHelpID屬性分別設(shè)置為所需的在“[MAP]”中定義的“上下文映射號(hào)”后,程序運(yùn)行時(shí)按【F1】鍵彈出的是一個(gè)幫助文本而不是幫助窗口。107在【幫助】菜單中進(jìn)行目錄內(nèi)容的調(diào)用首先在包含菜單的表單中加入CommonDialog控件,編輯其屬性:在Help頁的HelpCommand文本框中輸入3,HelpFile文本框中輸入.hlp文件的路徑名。在【幫助】菜單調(diào)用的子程序中寫入以下代碼:CommonDialog1.ShowHelp如果不按照上述編輯其屬性,則需要在讀取表單及【幫助】菜單調(diào)用的子程序中做如下處理:PrivateSubForm_Load()CommonDialog1.HelpFile=".hlp"文件路徑名EndSub
PrivateSubHelpContents_Click()CommonDialog1.HelpCommand=cdlHelpContentsCommonDialog1.ShowHelpEndSub幫助系統(tǒng)窗口被激活后,其操作同Windows幫助系統(tǒng),在此不贅述。108在【幫助】菜單中進(jìn)行索引搜索在包含菜單的表單中加入CommonDialog控件,編輯其屬性:Help頁的HelpCommand文本框中輸入257,HelpFile文本框中輸入.hlp文件的路徑名。在【幫助】菜單調(diào)用的子程序中寫入以下代碼:CommonDialog1.ShowHelp同樣也可使用子程序,如下所示:PrivateSubForm_Load()CommonDialog1.HelpFile=".hlp"文件路徑名EndSub
PrivateSubHelpKey_Click()CommonDialog1.HelpCommand=cdlHelpKeyCommonDialog1.ShowHelpEndSub幫助系統(tǒng)窗口被激活后,所有在.rtf文件中定義的關(guān)鍵詞將一覽無遺,選擇關(guān)鍵詞之后即可跳轉(zhuǎn)到相關(guān)部分。
109使用命令按鈕進(jìn)行關(guān)鍵詞相關(guān)調(diào)用在包含按鈕的表單中加入CommonDialog控件,編輯其屬性:-Help頁的HelpCommand文本框中輸入257,在HelpFile文本框中輸入.hlp文件的路徑名。命令按鈕調(diào)用的子程序如下:PrivateSubcmdHelp_Click()CommonDialog1.HelpCommand=cdlHelpKeyCommonDialog1.HelpKey="關(guān)鍵詞"CommonDialog1.ShowHelpEndSub程序運(yùn)行中單擊命令按鈕,幫助系統(tǒng)窗口自動(dòng)彈出關(guān)鍵詞相關(guān)的內(nèi)容,多個(gè)關(guān)鍵詞可設(shè)多個(gè)按鈕。1106.4程序的調(diào)試錯(cuò)誤類型調(diào)試與排錯(cuò)1116.4.1錯(cuò)誤類型語法錯(cuò)誤運(yùn)行錯(cuò)誤邏輯錯(cuò)誤112語法錯(cuò)誤語法錯(cuò)誤由不正確的代碼引起,如多寫、漏寫、拼錯(cuò)關(guān)鍵字的字母,多寫、少寫關(guān)鍵字,漏寫、誤用一些符號(hào)等。例如使用了塊狀的If…Then語句卻沒有EndIf,有DoWhile沒有Loop,將forI=1To10與NextJ配對(duì),使用
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年私人房產(chǎn)買賣合同環(huán)保要求與執(zhí)行標(biāo)準(zhǔn)3篇
- 2025年度路演展示廳清潔維護(hù)服務(wù)租賃合同4篇
- 二零二五版水利工程開工合同范例2篇
- 2025年度多功能培訓(xùn)學(xué)校教室租賃合同范本3篇
- 2025年度廚師行業(yè)人才引進(jìn)與培養(yǎng)服務(wù)協(xié)議3篇
- 2025年度文化藝術(shù)品樣品展覽與上樣合作協(xié)議3篇
- 2024綜藝節(jié)目拍攝基地租賃合同
- 2025年物業(yè)保潔外包服務(wù)合同(含節(jié)能環(huán)保服務(wù))3篇
- 2025年度智能電網(wǎng)建設(shè)采購戰(zhàn)略合作協(xié)議合同范本3篇
- 2025年消防給排水系統(tǒng)節(jié)能改造與優(yōu)化合同3篇
- 企業(yè)年會(huì)攝影服務(wù)合同
- 電商運(yùn)營管理制度
- 二零二五年度一手房購房協(xié)議書(共有產(chǎn)權(quán)房購房協(xié)議)3篇
- 2025年上半年上半年重慶三峽融資擔(dān)保集團(tuán)股份限公司招聘6人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 城市公共交通運(yùn)營協(xié)議
- 內(nèi)燃副司機(jī)晉升司機(jī)理論知識(shí)考試題及答案
- 2024北京東城初二(上)期末語文試卷及答案
- 2024設(shè)計(jì)院與職工勞動(dòng)合同書樣本
- 2024年貴州公務(wù)員考試申論試題(B卷)
- 電工高級(jí)工練習(xí)題庫(附參考答案)
- 村里干零工協(xié)議書
評(píng)論
0/150
提交評(píng)論