版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CHAPTER16功能表與多表單的應用
學習目標讓讀者了解1.功能表的作用2.功能表的製作方法3.功能表的操作方法4.多表單的應用並能實際運用功能表與多表單規劃設計更實用的程式16-1功能表的作用其中的「功能表編輯器(M)…Ctrl+E」,就可以用來製作像上圖有分類的功能表。要執行功能表中的某項功能時,除了將滑鼠指標移到該位置,再按一下滑鼠左鍵外,也可以用鍵盤按鍵;其中(M)代表直接按鍵盤上的M鍵,Ctrl+E代表直接按組合鍵,都可以執行該項功能。
右邊有符號的,
表示還有下一層
子功能供你選用
,如將滑鼠指標
移到「發行」項
,就會出現其子
功能表。
16-2製作功能表要製作功能表,必須使用功能表編輯器,執行【工具/功能表編輯器】指令,便可出現其方塊。顯示設定結果的清單方塊【說明】1.標題(P):輸入功能表列或功能表中選項的標題文字。如要顯示「功能(F)」,則要在此輸入「功能(&F)」;要顯示「今天日期(D)」,則要輸入「今天日期(&D)」;要出現分隔線,則要輸入「-」(一個減號)。2.名稱(M):輸入功能項目的控制項名稱(相當於命令鈕名稱,即Name屬性)。如配合「今天日期(D)」功能,在此輸入mnuDate,則在程式碼中啟動此功能的程序名稱為mnuDate_Click。3.快速鍵(S):拉下清單方塊後,可選擇適用快速鍵(組合鍵)。如配合「今天日期(D)」功能,可在此選用「Ctrl+D」。捲動捲軸,還有三鍵的組合4.核取式(C):設定此項功能前面是否要出現打勾符號ˇ,預設值為False(不打勾)。程式碼中可以使用Checked屬性值為True或False,來偵測該選項功能前面有否ˇ符號。5.啟用(E):設定此項功能是否有效用,預設值為True有效),此項功能會以清晰字顯示。如果未勾選則為「無效」(False),會以模糊字顯示。程式碼中可以使用Enabled屬性來偵測它為True或False。6.顯示(V):設定要顯示或隱藏此項功能,預設值為True(顯現),如果未勾選(False),則會「隱藏」。程式碼中可以使用Visible屬性來偵測它為True或False。7.
:完成一項控制功能的設定後,按此鈕,設定的結果就會出現在下半部的清單方塊中,讓你再設定下一項控制功能。8.
:按此鈕,會在清單方塊的反白列上插入一空白列(原有項目往下順移),供你設定一項控制功能。
9.:按此鈕,會將反白列的項目刪除掉。10.
:反白列位置調整鍵:將反白列的項目上移一列(與上一列調換):將反白列的項目下移一列(與下一列調換):將反白列的項目向右降低一層(變為上一列的
子功能項目):將反白列的項目向左上升一層(變為與原來的
上一層功能同級)16-3功能表的應用實例
【實例一】設計如下面有兩項主功能的功能表:
開啟功能表編輯器後,輸入如下:
2.按鈕後,反白列移到下一個空白列,再輸入及選用控制鍵如下:3.按鈕後,再輸入及選用控制鍵如下:
4.按鈕後,再在「標題(P)」的方塊輸入一個減號如下:
5.按鈕後,再輸入及選用控制鍵如下:
6.再依序設定下面的功能項目:
關於(&A)mnuAbout
作者(&U)mnuAuthorCtrl+A
本程式(&P)mnuProgramCtrl+P
7.點選「今天日期(&D)」項目,呈現反白列,再按鈕,將它往右下降一層。再依序處理其他要往右下降一層的各項目,如下:
8.
完成全部設定後,按鈕,就會關閉功能表編輯器,並在表單上出現主功能表項目「功能(F)」與「關於(A)」,如下:
【實例二】繼續上一實例,設計表單與程式碼。
1.在表單上再增加一個顯示資料的標籤lblDisplay,如下:(BorderStyle的屬性值為「1-單線固定」,Font為「標楷體」「12點」,
WordWrap為「True」)
2.在程式碼視窗拉下「物件」清單方塊,會出現已設定的各物件。
3.編輯各項功能對應的程式碼,如下:
PrivateSubmnuDate_Click()lblDisplay="今天日期是"&DateEndSubPrivateSubmnuTime_Click()lblDisplay="現在時間是"&TimeEndSubPrivateSubmnuEnd_Click()EndEndSub
PrivateSubmnuAuthor_Click()lblDisplay="許慶芳先生原任榮民工程公司資訊處處長,"lblDisplay=lblDisplay+_
“目前轉至北台科學技術學院資訊管理系任教"EndSubPrivateSubmnuProgram_Click()lblDisplay="此程式是設定功能表與設計“+_
"各項對應功能的程式碼之範例"EndSub
【執行情況】執行【功能(F)/結束(X)】,會結束程式執行。執行其它不同功能項目,輸出的畫面分別如下:16-4多個表單的應用
剛開啟VB時,系統會自動出現一個表單,其預設的名稱為Form1,事後可以執行【專案(P)/新增表單(F)】指令來增加可用的表單,預設的名稱依序為Form2、Form3…。使用者可以在屬性視窗的Name屬性欄修改表單名稱,通常以frm為字首。16-4.1新增表單1.執行【專案(P)/新增表單(F)】指令,會出現下面的方塊:2.按鈕,就會增加一個表單Form2,如下:【說明】再重覆步驟1與2,又會增加表單,依序為Form3、Form4…。
16-4.2設定啟動表單VB系統預設Form1為程式執行時,要啟動的表單。在使用多表單時,如果要將Form1以外的表單設定為啟動表單,其步驟如下:1.執行【專案(P)/Project1屬性(E)】指令。2.在出現的「專案屬性」視窗中的「啟動物件」方塊,點選要設定的表單(如Form2)後,再按「確定」鈕,如下:
16-4.3常用的方法與應用實例設定多個表單及顯示與隱藏表單的方法,有下列幾個:方法常用格式說明
Load表單名稱.Load將表單載入主記憶體Unload表單名稱.Unload將表單自主記憶體中釋放掉Show表單名稱.Show顯示表單(會同時將表單載入主記憶體)Hide表單名稱.Hide隱藏表單(不會顯示出來),但仍佔主記憶體空間。事後再Show或Load該表單時,不會載入該表單(即不會驅動Form_Load事件)
通常在程式碼中的用法是:1.利用Show方法,就可以將表單載入及顯示。2.暫時不用表單時,利用Hide方法將表單隱藏,等到要用到時再Show出來。3.確定不會再使用表單時,可以用Unload方法將它釋放掉。
【例1】利用Form1輸入資料,Form2顯示結果。【程式碼】1.在專案總管的Project1下點選Form1,再在其
程式碼視窗編輯如下:
【說明】這是Form1的Command1被Click時,要執行的程序,因此第3列的Form1.Text1也可以減省為Text1。
2.在專案總管的Project1下點選Form2,再在其程式碼視窗編輯如下:【執行情況】17-5資料庫與資料庫管理員
資料庫(DataBase)是儲存資料的倉庫,由一群相關的檔案組合而成的,而且由一套專業的軟體來管理。管理資料庫的軟體稱為資料庫管理系統(DataBaseManagementSystem,簡稱DBMS)。目前比較方便有效與流行的資料庫管理系統,屬於關連型資料庫(RelationalDataBase)如微軟公司的Access與SQLServer、IBM公司的DB2、Oracle公司的Oracle及Sybase公司的Sybase等。17-5-1資料庫與資料表一個Access資料庫(DataBase)是由一個或多個資料表(Table)所組成。而每個資料表又由一些相關的資料欄(DataField)組成,每個資料欄都配合要存放的資料性質與大小,而有其資料型態(DataType),如下:
17-5-2建立資料庫1.執行【增益集/資料庫管理員】指令。
2.出現「資料庫管理員」視窗,再執行【檔案/新增/MicrosoftAccess/Version7.0MDB】指令。3.出現下圖的對話方塊,再在「儲存於」方塊選取(或新增)要建立資料庫的資料夾,及在「檔案名稱」方塊輸入要建立的資料庫名稱,如下:4.按鈕,就在指定的資料夾內建立了student.mdb,出現如下的視窗:
5.如果不要馬上建立資料表,可執行【檔案/離開】指令,關閉上面的視窗。如果要馬上建立資料表,可直接跳到下一節的步驟4。
17-5-3建立資料表
假設要利用VB,在上一節建立的student.mdb資料庫中建立資料表basic,其步驟如下:執行【增益集/資料庫管理員】指令,出現「資料庫管理員」視窗,再執行【檔案/開啟資料庫/MicrosoftAccess】指令。2.開啟如下的對話方塊,選取資料庫所在的資料夾與資料庫名稱後,再按鈕。
3.開啟如下的對話方塊,在「資料庫視窗」內按滑鼠右鍵,再執行快顯功能表中的「新增資料表」指令。4.出現如下的「資料表結構」對話方塊,就可建立資料表。假如要建立資料表basic,可在「資料表名稱」方塊輸入basic後,再按鈕。
5.出現如下的「新增資料欄」對話方塊,再輸入第一個資料欄的名稱、型態與大小,然後按
「確定」鈕。【說明】拉下「型態」的列示方塊,便可選用所要的資料型態,如下:6.再如上一步驟,依序輸入如下表的第2、3、4個資料欄的名稱、型態與大小:
項目資料欄名稱資料型態大小資料欄1:學號numberText5Bytes資料欄2:姓名nameText8Bytes資料欄3:地址addressText30Bytes資料欄4:電話號碼telText8Bytes最後按鈕,就關閉新增資料欄方塊,回到「資料表結構」方塊,如下:
7.按鈕,就完成資料表basic的建立,再回到「資料庫管理員」視窗。8.重覆步驟3~7,再新增資料表score及其內的資料欄如下:
項目資料欄名稱資料型態大小資料欄1:學號numberText5Bytes資料欄2:國文成績chineseInteger2Bytes資料欄3:英文成績englishInteger2Bytes完成後,「資料庫視窗」的內容如下:
17-5-4在資料表輸入資料記錄建立資料表後,就可以輸入資料記錄(DataRecord)的內容,其方法有二:一、直接利用資料管理員來輸入資料記錄。
(不必設計程式)二、另外設計程式,用來輸入資料記錄的內容。本節先介紹第一種方法,利用資料管理員輸入basic資料表的資料記錄(如下表),其步驟如下:
Number(學號)Name(姓名)Address(地址)Tel(電話號碼)92001許一台北市北投區一德街100號9292000192002陳二永和市二水路78號2F9292000292003張三三重市三重路167號5F9292000392004李四中和市四平街67號3F9292000492005王五台北市五常街60號2F929200051.在「資料庫視窗」的資料表名稱basic上,連按兩下滑鼠左鍵,開啟其對話方塊,如下:2.按鈕後,就出現如下的方塊,輸入第一筆記錄的各項資料後,再按鈕。3.仿照上一步驟,再依序輸入第2~5筆記錄的資料,完成後再按鈕,結束資料記錄的輸入工作。17-6ADO與資料庫ADO是ActiveDataObjects的縮寫,是Microsoft公司制定的資料庫連結架構,作為應用程式與資料來源之間的溝通橋樑,可提供應用程式存取資料庫中的資料之介面,其情況如下圖:17-6-1資料控制項(DataControl)VB的工具箱中有個資料(Data)控制項,可用來連結資料庫中的資料表,以便於顯示或修改其中的資料。建立資料控制項的步驟如下:1.將滑鼠指標移到工具箱的「資料控制項」工具上,再按一下左鍵。2.將指標移到表單上
(變成十字型)。3.在要設定的資料控制
項之開始位置,按住滑
鼠左鍵拖曳,達到適當的大小後,再放開左鍵。【說明】一個表單上可以安置多個資料控制項,其預設的物件名稱與標題都依序為Data1、Data2、Data3、…。也可以在屬性視窗中的Name屬性更改物件名稱(標準字首為ado),及在Caption屬性更改標題,如更改標題為「基本資料檔」,如下:資料控制項常用的屬性屬性說明預設值Caption(標題)資料控制項的標題,是預設的屬性Data1DatabaseName(資料庫名稱)設定資料控制項所連結的資料庫之路徑與名稱
RecordSource(記錄來源)設定資料控制項所連結的資料表之名稱
ReadOnly(唯讀)設定資料表內的資料是否不能修改:True-只能讀取,不能修改False-可以讀取,也可以修改FalseConnect(連接)設定要連結的資料庫種類(含版次)AccessExclusive(封閉)設定連結的資料庫是否不能被同時共用:True-不能被同時共用(只能有一個使用者)False-可有多個使用者同時共用False17-6-2資料感知(DataAware)控制項與
資料表內容的連結可以安排在表單中,具有資料連結功能的控制項,就稱為「資料感知(DataAware)控制項」,如文字方塊、標籤、核取方塊、清單方塊、下拉式清單方塊、圖片方塊及影像…等都是。
通常利用資料控制項連結資料庫時,要同時在表單中安排「資料感知控制項」,來顯示資料表中對應記錄的資料欄之內容。此時,要注意其DataSource與DataField兩個屬性的設定,如下:
茲舉實例說明其步驟如下:在表單中安排控制項如下:(Text1~Text4就是資料感知控制項,Data1為資料控制項)
2.選取資料控制項,然後在屬性視窗中點選DatabaseName視窗,再在屬性值欄按一下
鈕。3.出現「資料庫名稱」對話方塊,再在「搜尋位置」方塊選取資料庫所在的資料夾db,及資料庫名稱清單中點選student,然後按「開啟」鈕,如下:4.回到VB視窗後,在屬性視窗中點選RecordsetType屬性,再在屬性值欄按一下鈕,選取「0-資料表(Table)」,如下圖:5.在屬性視窗中點選RecordSource屬性,再在屬性值欄按一下鈕,選取「basic」。
6.在表單上選取Text1物件,然後在屬性視窗中點選DataSource屬性,再在屬性值欄按一下鈕,選取「Data1。
7.在屬性視窗中點選DataField屬性,再在屬性值欄按一下鈕,選取「number」。8.仿照步驟6與7,依序選取Text2、Text3、Text4,並設定其DataSource屬性的屬性值均為「Data1」,及DataField屬性的屬性值依序為「name」、「address」、「tel」。【執行實例】1.上述表單設計完成後(不必設計程式碼),開始執行程式,就會在對應的文字方塊顯示第一筆記錄的內容,如下:2.再按資料控制項的鈕,會顯示下一筆記錄的內容;按鈕,會顯示上一筆記錄的內容;按鈕,會顯示最後一筆記錄的內容;按鈕,會顯示第一筆記錄的內容。17-7資料控制項常用的方法使用一般資料檔或資料庫時,基本的功能要包括新增(Insert)、更新(Update)、修改(Replace)與刪除(Delete)。本節要介紹達成上述基本功能的「方法」,可直接存取資料庫,自資料表讀出資料,及將資料寫入資料表中。
一、新增資料記錄用法:資料控制項名稱.Recordset.AddNew功能:將記錄指標移到資料庫的最後,並新增一筆空白記錄。說明:1.
使用此方法後,該記錄是空白的。要接著將資料放置到資料控制項中對應的資料欄,然後利用Update方法,將資料寫入新增的記錄中。2.
要將資料放置到資料控制項中對應的資料欄,就像針對一般的變數一樣,但是其格式為:
資料控制項名稱.Recordset("資料欄名稱")例如,要將文字方塊Text1的內容放置到資料控制項Data1的資料欄number中,其用法如下:
Data1.Recordset("number")=Text1.Text
二、
編輯資料記錄用法:資料控制項名稱.Recordset.Edit功能:編輯(修改)目前記錄指標所在的記錄之內容。說明:使用此方法後,要接著將資料放置到資料控制項中對應的資料欄,然後利用Update方法(如上一項的說明2),將資料寫入該筆記錄中。三、更新資料記錄用法:資料控制項名稱.Recordset.Update功能:將新增或修改的資料實際寫進資料庫中的對應記錄。說明:1.要執行此方法,資料控制項的ReadOnly屬性必須設定為False。2.如果執行此方法後,要取消更新功能(即回復更新前的狀況),可使用UpdateControls方法,其用法如下:
資料控制項名稱.Recordset.UpdateControls例1.新增記錄到學生基本資料【表單設計】PrivateSubcmdAdd_Click()Data1.Recordset.AddNew'新增一筆空白記錄Data1.Recordset("number")=Left(Text1,5)'取左邊5個字元Data1.Recordset("name")=Text2Data1.Recordset("address")=Text3Data1.Recordset("tel")=Left(Text4,8)'取左邊8個字元Data1.Recordset.Update'將資料寫進新增的記錄中MsgBox"已完成新增紀錄",vbOKOnly,"新增紀錄"Text1="":Text2="":Text3="":Text4=""_
'將文字方塊清成空白Text1.SetFocus'設定Text1為輸入焦點,準備再輸入下一筆資料EndSubPrivateSubcmdEnd_Click()EndEndSub【程式碼】【執行情況】假如要在基本資料的最後新增如下的一筆記錄:在各文字方塊輸入要新增的資料後,按鈕,就會在資料表的最後新增一筆記錄,並出現成功的訊息。2.按「確定」鈕後,會將各文字方塊清成空白,並將插入點設定在Text1(如表單設計的畫面)。可重覆上一步驟,再接著輸入下一筆資料,最後「結束」按鈕結束執行此程式。四、
刪除資料記錄用法:資料控制項名稱.Recordset.Delete功能:直接刪除資料表中目前記錄指標所在的一筆記錄。說明:使用此方法,會直接刪除掉,不必再用Update方法來更新。(實例參看例8)五、查詢資料記錄用法:資料控制項名稱.Recordset.Find方法"條件式"功能:1.Find方法」包括下列四種:
FindFirst找出符合條件的第一筆記錄
FindPrevious找出符合條件的前一筆記錄
FindNext找出符合條件的下一筆記錄
FindLast找出符合條件的最後一筆記錄2.「條件式」一定要加前後的雙引號,其中用到字串常數的前後要加單引號。3.找到時,記錄指標會停在該筆記錄上。如果找不到,Nomatch屬性會傳回True值。4.如果資料表中有多筆記錄符合條件,可利用迴圈來處理。【例2】在資料控制項Data1所連結的資料表中,找尋學號為92003的第一筆記錄,其用法如下:
Data1.Recordset.FindFirst"number='92003'"如果找不到該記錄,Data1.Recordset.Nomatch會傳回True值,所以可接著做如下的判斷與動作:IfData1.Recordset.NomatchthenMsgBox"找不到資料"ElseMsgBox"找到資料了"EndIf【例3】如果條件式中的欄位值用變數來表示,可使用如下:
六、移動記錄指標用法:資料控制項名稱.Recordset.Move方法功能:「Move方法」包括下列四種:
MoveFirst將指標移到第一筆記錄
MovePrevious將指標移到前一筆記錄
MoveNext將指標移到下一筆記錄
MoveLast將指標移到最後一筆記錄【說明】1.資料集(Recordset)由資料記錄(Record)組成,最前面有個「檔案開始」標記(BOF,BeginOfFile),最後面有個「檔案結束」標記(EOF,EndOfFile),如有n筆記錄的情況如下圖:
2.要修改或刪除某一筆記錄的內容時,可先利用Find或Move方法,將記錄指標移到該筆記錄的位置。3.如果記錄指標已經在EOF,就不能再往後移動(不能用MoveNext)。同樣,如果記錄指標已經在BOF,就不能再往前移動(不能用MovePrevious)。4.BOF與EOF也是Recordset的屬性,其屬性值為True或False,組合情況如下:【例4】假如記錄指標不在BOF,就往前移動一筆記錄。IfNotData1.Recordset.BOFThen_
Data1.Recordset.MovePrevious【例5】假如記錄指標不在EOF,就往後移動一筆記錄。
IfNotData1.Recordset.EOFThen_
Data1.Recordset.MoveNext【例6】資料集中沒有資料IfData1.Recordset.BOFAnd_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 万能补充协议
- 足底发麻病因介绍
- (2024)高速吹膜机项目可行性研究报告备案申请模板(一)
- 云南省曲靖市沾益区2024-2025学年七年级9月月考道德与法治试题(原卷版)-A4
- 2024秋新沪科版物理8年级上册教学课件 第6章 熟悉而陌生的力 第4节 探究:滑动摩擦力大小与哪里因素有关
- 2023年智能电能表及配件项目融资计划书
- 2023年原料药机械及设备项目融资计划书
- 《OJT推进与实施》课件
- 《珠心算基本功训练》课件
- 湖北省黄石市大冶市2023-2024学年七年级上学期期末考试数学试卷(含答案)
- 《更换压力表操作》课件
- 家具厂编码规则(新)
- 部编版语文八年级下册第三单元知识点梳理
- 2023届中职语文专题复习《现代文阅读答题技巧》课件
- 安全物资培训
- pep人教版英语六年级上册:英语作文汇集
- 茶叶机械化采摘技术规程
- 云南省昆明市盘龙区2022-2023学年九年级上学期期末英语试题
- 《无机功能材料》课件
- 混凝土售后服务承诺书
- 规范权力运行方面存在问题及整改措施范文(五篇)
评论
0/150
提交评论