Server應(yīng)用程序開(kāi)發(fā)課件_第1頁(yè)
Server應(yīng)用程序開(kāi)發(fā)課件_第2頁(yè)
Server應(yīng)用程序開(kāi)發(fā)課件_第3頁(yè)
Server應(yīng)用程序開(kāi)發(fā)課件_第4頁(yè)
Server應(yīng)用程序開(kāi)發(fā)課件_第5頁(yè)
已閱讀5頁(yè),還剩112頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第12章

SQLServer應(yīng)用程序開(kāi)發(fā)12.1使用Access開(kāi)發(fā)

SQLServer應(yīng)用程序在Access2000或更高版本中,可以使用Access項(xiàng)目對(duì)SQLServer數(shù)據(jù)庫(kù)高效、方便的訪問(wèn)。使用Access項(xiàng)目可以輕松地創(chuàng)建客戶/服務(wù)器應(yīng)用程序。操作Access項(xiàng)目與操作Access數(shù)據(jù)庫(kù)非常相似。除了要連接到SQLServer數(shù)據(jù)庫(kù)外,在Access項(xiàng)目中創(chuàng)建和應(yīng)用窗體、報(bào)表、數(shù)據(jù)訪問(wèn)頁(yè)、宏和模塊的方法,與在Access數(shù)據(jù)庫(kù)中所用的方法是相同的。下面以Access2000為例來(lái)介紹如何使用Access來(lái)開(kāi)發(fā)SQLServer應(yīng)用程序。12.1.1創(chuàng)建Access項(xiàng)目Access項(xiàng)目是一種Access數(shù)據(jù)文件,它能通過(guò)OLEDB組件結(jié)構(gòu)有效地以本地模式訪問(wèn)SQLServer數(shù)據(jù)庫(kù)。OLEDB是一種組件數(shù)據(jù)庫(kù)體系,它對(duì)多種類型數(shù)據(jù)源實(shí)現(xiàn)有效的網(wǎng)絡(luò)和Internet訪問(wèn)。使用Access項(xiàng)目可以輕松地創(chuàng)建一個(gè)客戶/服務(wù)器應(yīng)用程序,既可以是基于窗體、報(bào)表的傳統(tǒng)解決方案,也可以是通過(guò)數(shù)據(jù)訪問(wèn)頁(yè)實(shí)現(xiàn)的基于Web的解決方案,或是兩者的結(jié)合。1.創(chuàng)建Access項(xiàng)目并將其與現(xiàn)有SQLServer數(shù)據(jù)庫(kù)連接啟動(dòng)Access2002,然后從“文件”選單中選擇“新建”命令。在“新建文件”任務(wù)窗格中,單擊“項(xiàng)目(現(xiàn)有數(shù)據(jù))”,在“文件新建數(shù)據(jù)庫(kù)”對(duì)話框中,單擊“保存位置”框中的一個(gè)地址,并在“文件名”框中鍵入項(xiàng)目文件名,確?!癕icrosoftAccess項(xiàng)目”出現(xiàn)在“保存類型”框中,之后,單擊“創(chuàng)建”按鈕。當(dāng)出現(xiàn)“數(shù)據(jù)鏈接屬性”對(duì)話框時(shí),選擇“連接”選項(xiàng)卡,然后選擇或輸入要登錄的服務(wù)器名稱。提供登錄到服務(wù)器上所需的信息,為此應(yīng)執(zhí)行下列操作之一:若要使用Windows賬戶登錄到SQLServer服務(wù)器,請(qǐng)單擊“使用WindowsNT集成安全設(shè)置”選項(xiàng)。若要使用指定的登錄ID和密碼登錄到SQLServer服務(wù)器,請(qǐng)單擊“使用指定的用戶名稱和密碼”選項(xiàng),并輸入相應(yīng)的用戶名稱和密碼。選中“在服務(wù)器上選擇數(shù)據(jù)庫(kù)”選項(xiàng),然后在該選項(xiàng)下面的下拉式列表中選擇要連接的SQLServer數(shù)據(jù)庫(kù)(如示例數(shù)據(jù)庫(kù)Northwind)。單擊“確定”按鈕,完成到指定數(shù)據(jù)庫(kù)的連接,此時(shí)該數(shù)據(jù)庫(kù)中包含的各個(gè)對(duì)象將顯示在“項(xiàng)目”窗口中,如圖12.4所示。在如圖12.6所示的“MicrosoftSQLServer數(shù)據(jù)庫(kù)向?qū)А睂?duì)話框中,鍵入要使用的服務(wù)器的名稱、在服務(wù)器上具有CREATEDATABASE權(quán)限的賬戶的登錄ID和密碼以及新SQLServer數(shù)據(jù)庫(kù)的名稱,然后單擊“下一步”按鈕。注意如果正在創(chuàng)建一個(gè)SQLServer6.5數(shù)據(jù)庫(kù),請(qǐng)輸入數(shù)據(jù)庫(kù)設(shè)備和大小、事務(wù)處理日志設(shè)備和大小、數(shù)據(jù)庫(kù)的大小和日志的大小。無(wú)需為SQLServer7.0或更高版本指定設(shè)備和大小。在Access2000中,可以使用MicrosoftSQLServer數(shù)據(jù)庫(kù)向?qū)?chuàng)建SQLServer6.5或SQLServer7.0數(shù)據(jù)庫(kù)。若要MicrosoftSQLServer數(shù)據(jù)庫(kù)向?qū)?chuàng)建SQLServer2000數(shù)據(jù)庫(kù),則應(yīng)使用Access2002。在如圖12.7所示的對(duì)話框中,單擊“完成”按鈕。12.1.2打開(kāi)Access項(xiàng)目步驟(1)在“文件”選單中選擇“打開(kāi)”命令。(2)單擊“打開(kāi)”對(duì)話框左側(cè)的快捷方式,或者在“查找范圍”框中單擊包含要打開(kāi)的Access項(xiàng)目的驅(qū)動(dòng)器或文件夾。若要查看以前打開(kāi)過(guò)的Access項(xiàng)目的快捷方式列表,請(qǐng)單擊“打開(kāi)”對(duì)話框左側(cè)的“歷史”。(3)在文件夾列表中雙擊文件夾,直到打開(kāi)包含Access項(xiàng)目的文件夾。如果找不到想要打開(kāi)的Access對(duì)象,請(qǐng)單擊“打開(kāi)”對(duì)話框右上角的“工具”,然后單擊“查找”,并在“查找”對(duì)話框中輸入搜索條件。(4)單擊打開(kāi)的Access項(xiàng)目文件,然后執(zhí)行下列操作之一:若要打開(kāi)Access項(xiàng)目,請(qǐng)單擊“打開(kāi)”按鈕。若要以只讀訪問(wèn)方式打開(kāi)Access項(xiàng)目,請(qǐng)單擊“打開(kāi)”箭頭,然后選擇“以只讀方式打開(kāi)”命令。在Access2002中,可以只以獨(dú)占模式打開(kāi)Access項(xiàng)目。如果試圖打開(kāi)一個(gè)其他用戶已經(jīng)打開(kāi)的Access項(xiàng)目,則Access會(huì)提示用戶打開(kāi)了該文件的一個(gè)只讀副本。需要說(shuō)明的是,當(dāng)以只讀模式打開(kāi)Access項(xiàng)目時(shí),仍然可以添加或修改數(shù)據(jù),創(chuàng)建或修改表、視圖、數(shù)據(jù)庫(kù)圖表或存儲(chǔ)過(guò)程,因?yàn)閿?shù)據(jù)和這些對(duì)象是駐留在SQLServer數(shù)據(jù)庫(kù)中。然而,不能創(chuàng)建或修改窗體、報(bào)表、宏或模塊,因?yàn)檫@些對(duì)象是駐留在Access項(xiàng)目中的。12.1.3連接到SQLServer數(shù)據(jù)庫(kù)下面介紹將Access項(xiàng)目連接到SQLServer數(shù)據(jù)庫(kù),或者更改Access項(xiàng)目與SQLServer數(shù)據(jù)庫(kù)的連接方法。在Access2002在,打開(kāi)要連接到SQLServer數(shù)據(jù)庫(kù)的Access項(xiàng)目。(1)從“文件”選單中選擇“連接”命令。(2)在如圖12.8所示的“數(shù)據(jù)鏈接屬性”對(duì)話框中,選擇“連接”選項(xiàng)卡。從下拉列表中選擇一個(gè)服務(wù)器名,或鍵入想要訪問(wèn)數(shù)據(jù)庫(kù)所在的服務(wù)器位置。單擊“刷新”按鈕,可以刷新服務(wù)器列表。(4)輸入登錄到服務(wù)器所需的信息,可以使用WindowsNT集成安全機(jī)制,也可以使用指定的用戶名和密碼。(5)從所選服務(wù)器上,選擇要連接的SQLServer數(shù)據(jù)庫(kù)。若要測(cè)試所做的設(shè)置是否正確,請(qǐng)單擊“測(cè)試連接”按鈕。此時(shí),將嘗試連接到指定的SQLServer數(shù)據(jù)庫(kù)。如果連接失敗,請(qǐng)確保設(shè)置是正確的。(6)單擊“確定”按鈕。12.1.4使用數(shù)據(jù)庫(kù)表在Access2002中,既可以創(chuàng)建一個(gè)Access項(xiàng)目并將其與現(xiàn)有SQLServer數(shù)據(jù)庫(kù)連接,也可以創(chuàng)建一個(gè)SQLServer數(shù)據(jù)庫(kù)并將其與Access項(xiàng)目連接。無(wú)論是哪一種情況,只要打開(kāi)了Access數(shù)據(jù)庫(kù)中使用表設(shè)計(jì)器一樣。所不同的是,對(duì)于Access項(xiàng)目來(lái)說(shuō),表存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中;對(duì)于Access數(shù)據(jù)庫(kù)來(lái)說(shuō),表即存儲(chǔ)在該數(shù)據(jù)庫(kù)中。下面介紹通過(guò)Access項(xiàng)目在SQLServer數(shù)據(jù)庫(kù)創(chuàng)建表的方法。步驟啟動(dòng)Access2002,然后從“文件”選單中選擇“新建”命令。在“新建文件”窗格中,單擊“項(xiàng)目(新數(shù)據(jù))”。在“文件新建數(shù)據(jù)庫(kù)”對(duì)話框中,單擊“保存位置”框中的一個(gè)地址,并在“文件名”框中鍵入一個(gè)名稱(例中為Students),然后單擊“創(chuàng)建”按鈕。當(dāng)出現(xiàn)“MicrosoftSQLServer數(shù)據(jù)庫(kù)向?qū)А睂?duì)話框時(shí),鍵入要使用的服務(wù)器的名稱、在服務(wù)器上具有CREATEDATABASE權(quán)限的賬戶的登錄ID和密碼以及新SQLServer數(shù)據(jù)庫(kù)的名稱(例中為StudentsSQL),然后單擊“下一步”按鈕.單擊項(xiàng)目窗口工具欄上的“新建”按鈕。在項(xiàng)目窗口中雙擊“使用設(shè)計(jì)器創(chuàng)建表”。此時(shí)出現(xiàn)如圖12.11所示的表設(shè)計(jì)器窗口,該窗口與SQLServer2000的表設(shè)計(jì)器基本相同。表設(shè)計(jì)器上部網(wǎng)格中的每一行對(duì)應(yīng)表中的一列。

創(chuàng)建表時(shí),需要對(duì)表中的每一列進(jìn)行定義:在上部網(wǎng)格中指定列名稱、選擇數(shù)據(jù)類型并鍵入列說(shuō)明文本,然后在窗口下部的“列”選項(xiàng)卡中對(duì)列的各種屬性進(jìn)行設(shè)置。按照要求,完成Students表結(jié)構(gòu)的定義,并將student_id列設(shè)置為表的主鍵,然后單擊工具欄中的“保存”按鈕。當(dāng)出現(xiàn)如圖12.12所示的“選擇名稱”對(duì)話框時(shí),在“輸入表名稱”框中輸入Students,然后單擊“確定”按鈕。按照要求,完成Courses表結(jié)構(gòu)的定義。按照要求,完成Scores表結(jié)構(gòu)的定義。完成數(shù)據(jù)庫(kù)表結(jié)構(gòu)定義后,若要向表中輸入數(shù)據(jù)或查看表中的數(shù)據(jù),請(qǐng)單擊該表,然后單擊項(xiàng)目窗口工具欄上的“打開(kāi)”按鈕;若要修改表結(jié)構(gòu),請(qǐng)單擊項(xiàng)目窗口工具欄上的“設(shè)計(jì)”按鈕;若要?jiǎng)h除一個(gè)表,請(qǐng)?jiān)陧?xiàng)目窗口中單擊該表,然后單擊項(xiàng)目窗口工具欄上的“刪除”按鈕。步驟(1)在Access2002中打開(kāi)項(xiàng)目Students.adp。在如圖12.13所示的項(xiàng)目窗口中,單擊對(duì)象欄下方的“數(shù)據(jù)庫(kù)圖表”,然后執(zhí)行下列操作之一:(2)單擊項(xiàng)目窗口工具欄上的“新建”按鈕。在項(xiàng)目窗口中雙擊“使用設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫(kù)圖表”。(3)當(dāng)出現(xiàn)如圖12.14所示的“添加表”對(duì)話框時(shí),按住Ctrl鍵依次單擊要添加到數(shù)據(jù)庫(kù)圖表中的表,然后單擊“添加”按鈕,再單擊“關(guān)閉”按鈕。在本例中向圖表中添加了三個(gè)表,即Students表、Courses表和Scores表。(6)重復(fù)步驟(4)和(5),通過(guò)course_id列在Scores表和courses表之間建立關(guān)系。(7)單擊工具欄上的“保存”按鈕,并在“另存為”對(duì)話框中指定圖表名稱,然后關(guān)閉數(shù)據(jù)庫(kù)圖表設(shè)計(jì)器窗口。創(chuàng)建數(shù)據(jù)庫(kù)圖表后,若要修改該圖表的設(shè)置,請(qǐng)單擊該圖表,然后單擊項(xiàng)目窗口工具欄上的“設(shè)計(jì)”按鈕;若要?jiǎng)h除該圖表,請(qǐng)單擊該圖表,然后單擊項(xiàng)目窗口工具欄上的“刪除”按鈕。12.1.6使用查詢項(xiàng)目中的查詢對(duì)應(yīng)于SQLServer數(shù)據(jù)庫(kù)中的視圖,這種數(shù)據(jù)庫(kù)對(duì)象存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中,可以使用與表相同的方式在SQL查詢語(yǔ)句中引用。在Access2002中,可以使用查詢?cè)O(shè)計(jì)器來(lái)創(chuàng)建視圖。[例12.3]本例說(shuō)明如何使用查詢?cè)O(shè)計(jì)器創(chuàng)建視圖對(duì)象。在項(xiàng)目文件Students.adp中創(chuàng)建一個(gè)名為“學(xué)生成績(jī)”的視圖,其結(jié)果集內(nèi)的數(shù)據(jù)分別來(lái)自Students表、Courses表和Scores表,所顯示的輸出列包括Students表中的student_num列、student_name列、Courses表中的course_name列以及Scores表中的score,要求按student_name列升序排列記錄。步驟在Access2002中打開(kāi)項(xiàng)目文件Students.adp。在如圖12.17所示的項(xiàng)目窗口中單擊對(duì)象欄下方的“查詢”,然后單擊項(xiàng)目窗口工具欄上的“新建”按鈕,或者在項(xiàng)目窗口中雙擊“使用設(shè)計(jì)器創(chuàng)建視圖”,以打開(kāi)查詢?cè)O(shè)計(jì)器窗口。向視圖中添加所需表。當(dāng)出現(xiàn)“添加表”對(duì)話框時(shí),將Students表、Courses表和Scores表添加視圖中,然后關(guān)閉“添加表”對(duì)話框,并進(jìn)入查詢?cè)O(shè)計(jì)器窗口.向視圖中添加所需表列。在查詢?cè)O(shè)計(jì)器窗口上部的“圖表”窗格中,單擊要輸出的表列左側(cè)的輸出復(fù)選框,使這些列出現(xiàn)在下方的設(shè)計(jì)網(wǎng)格中。在本例中,通過(guò)視圖輸出的列包括Students表中的student_num列和student_name列、Courses表中的course_name列以及Scores表中的score列。指定輸出列的別名。在設(shè)計(jì)網(wǎng)格中,分別在student_num,student_name,course_name和score列的“別名”框中鍵入中文名稱,即“學(xué)號(hào)”、“姓名”、“課程名稱”和“成績(jī)”。

設(shè)置排序選項(xiàng)。在設(shè)計(jì)網(wǎng)格中,單擊student_name列的“排序”單元格,然后選擇“升序”選項(xiàng),如圖12.19所示。單擊工具欄上的“保存”按鈕,并在“另存為”對(duì)話框中將視圖名稱指定為“學(xué)生成績(jī)”,然后單擊“確定”按鈕。從“視圖”選單中選擇“數(shù)據(jù)表視圖”命令,或者單擊工具欄上的“視圖”按鈕,或者單擊工具欄的“運(yùn)行”按鈕,以瀏覽視圖的運(yùn)行結(jié)果,如圖12.20所示。若要查看視圖中的SQL語(yǔ)句,單擊工具欄的“SQL”按鈕即可。此時(shí)將在SQL窗格中看到以下SELECT查詢語(yǔ)句:SELECTTOP100PERCENTdbo.Students.student_numAS學(xué)號(hào),dbo.Students.student_numAS姓名,dbo.Courses.course_nameAS課程名稱,dbo.Score.scoreAS成績(jī)FROMdbo.CoursesINNERJOINdbo.ScoreONdbo.Courses.course_idINNERJOINdbo.StudentsONdbo.Scores.student_id=dbo.Students.student_idORDERBYdbo.Students.student_name由于事先已經(jīng)使用圖表設(shè)計(jì)器分別在Students表和Scores表以及Courses表和Scores表之間建立了關(guān)系,故在上述語(yǔ)句的FROM子句中自動(dòng)出現(xiàn)了INNERJOIN運(yùn)算符,通過(guò)內(nèi)連接返回到在連接列中具有相等值的行。此外,在上述語(yǔ)句中還自動(dòng)出現(xiàn)了TOP100PERCENT選項(xiàng),如果不想使用該選項(xiàng),可以單擊工具欄上的“屬性”按鈕,然后在“屬性”對(duì)話框的“視圖”選項(xiàng)卡中清除“頂端”復(fù)選框。在Access項(xiàng)目中創(chuàng)建一個(gè)視圖之后,若要在數(shù)據(jù)表視圖中查看結(jié)果集的內(nèi)容,請(qǐng)單擊該視圖,然后單擊項(xiàng)目窗口工具欄上的“打開(kāi)”按鈕;若要在設(shè)計(jì)視圖中修改該視圖的定義,請(qǐng)單擊該視圖,然后單擊項(xiàng)目窗口工具欄上的“設(shè)計(jì)”按鈕;若從項(xiàng)目中要?jiǎng)h除該視圖,請(qǐng)單擊該視圖,然后單擊項(xiàng)目窗口工具欄上的“刪除”按鈕。12.1.7使用窗體通過(guò)Access項(xiàng)目中的窗體可以輸入和顯示數(shù)據(jù),這種窗體存儲(chǔ)在Access項(xiàng)目中,數(shù)據(jù)本身則存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中。在Access2002中,既可以在設(shè)計(jì)視圖中創(chuàng)建窗體,也可以使用向?qū)?chuàng)建窗體。[例12.4]本例說(shuō)明如何使用向?qū)?chuàng)建窗體。在項(xiàng)目文件Student.adp中創(chuàng)建一個(gè)名為“學(xué)生資料”的窗體,通過(guò)該窗體可以查看或修改Student表中的數(shù)據(jù)。步驟在Access2002中打開(kāi)項(xiàng)目文件Student.adp。啟動(dòng)窗體向?qū)АT谌鐖D12.21所示的項(xiàng)目窗口中單擊對(duì)象欄下方的“窗體”,然后雙擊“使用向?qū)?chuàng)建窗體”。確定在窗體上使用哪些字段。當(dāng)出現(xiàn)如圖12.22所示的對(duì)話框時(shí),首先從“表/查詢”列表框中選擇將要作用窗體數(shù)據(jù)源的表或視圖,然后在“可用字段”列表框中依次雙擊所需要的每個(gè)字段,將它們添加到“選定的字段”列表框中。也可以從多個(gè)表或視圖中選擇字段。若要?jiǎng)h除某個(gè)已經(jīng)選定的字段,請(qǐng)?jiān)凇斑x定的字段”列表框中雙擊該字段。在本例中,為窗體選擇的字段均來(lái)自Student表,包括student_num,student_name,student_sex,birthdate,department,speciality,grade以及class字段。確定窗體上所需字段后,單擊“下一步”按鈕。確定窗體布局。當(dāng)出現(xiàn)如圖12.23所示的“窗體向?qū)А睂?duì)話框時(shí),為窗體選擇一種適當(dāng)?shù)牟季址绞健?/p>

每當(dāng)選擇一種布局方式時(shí),可以在該對(duì)話框的左半部分查看相應(yīng)的布局效果。例如,若要使每個(gè)表列都顯示在一個(gè)獨(dú)立的行上,并且左邊帶有一個(gè)標(biāo)簽,請(qǐng)選擇“縱欄式”選項(xiàng);若要使每一行的所有表列都顯示在一行,標(biāo)簽顯示在窗體的頂端,請(qǐng)選擇“表格”選項(xiàng)。在本例中選擇了“縱欄式”布局,單擊“下一步”按鈕。確定窗體樣式。當(dāng)出現(xiàn)如圖12.24所示的“窗體向?qū)А睂?duì)話框時(shí),選擇窗體所用的樣式,可供選擇的樣式有“Sumi畫”、“國(guó)際”、“宣紙”、“工業(yè)”、“標(biāo)準(zhǔn)”、“沙巖”、“混合”、“石頭”、“藍(lán)圖”和“遠(yuǎn)征”。在本例中選擇了“標(biāo)準(zhǔn)”樣式,然后單擊“下一步”按鈕。在如圖12.25所示的“窗體向?qū)А睂?duì)話框中,將窗體的標(biāo)題指定為“學(xué)生資料”,并選取“修改窗體設(shè)計(jì)”選項(xiàng),然后單擊“完成”按鈕。在窗體設(shè)計(jì)器窗口中打開(kāi)窗體之后,在窗體頁(yè)眉區(qū)中添加一個(gè)標(biāo)簽,其文本內(nèi)容為“學(xué)生資料”,并設(shè)置字體和字號(hào);將每個(gè)文本框左側(cè)的標(biāo)簽內(nèi)容改為中文,例如將student_num改為“學(xué)號(hào)”,將student_name改為“姓名”,等等。經(jīng)過(guò)修改后的窗體布局如圖12.26所示。

從“視圖”選單中選擇“窗體視圖”命令,或者單擊工具欄上的“視圖”按鈕,以查看窗體的運(yùn)行效果,如圖12.27所示。在“窗體”視圖中查看學(xué)生資料的情形如圖12.27所示,此時(shí)可以通過(guò)單擊窗體底部的瀏覽按鈕在不同學(xué)生記錄之間移動(dòng)。在項(xiàng)目中創(chuàng)建一個(gè)窗體之后,若要在窗體視圖中查看該窗體,請(qǐng)單擊該窗體,然后單擊項(xiàng)目窗口工具欄上的“打開(kāi)”按鈕;若要修改該窗體的布局,請(qǐng)單擊該窗體,然后單擊項(xiàng)目窗口工具欄上的“設(shè)計(jì)”按鈕;若要?jiǎng)h除該窗體,請(qǐng)單擊該窗體,然后單擊項(xiàng)目窗口工具欄上的“刪除”按鈕。12.1.8使用報(bào)表使用Access項(xiàng)目中的報(bào)表可以對(duì)數(shù)據(jù)進(jìn)行計(jì)算、分組、匯總和打印,報(bào)表存儲(chǔ)在Access項(xiàng)目中,數(shù)據(jù)本身則存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中。在Access2002中,既可以使用報(bào)表設(shè)計(jì)器創(chuàng)建報(bào)表,也可以使用向?qū)?chuàng)建報(bào)表。[例12.5]本例說(shuō)明如何使用向?qū)?chuàng)建報(bào)表。在項(xiàng)目Student.adp中創(chuàng)建一個(gè)名為“學(xué)生資料”的報(bào)表,按照學(xué)號(hào)升序顯示所有學(xué)生的部分信息,并要求按照班級(jí)分組顯示。步驟在Access2002中打開(kāi)項(xiàng)目文件Student.adp。啟動(dòng)報(bào)表向?qū)?。在如圖12.28所示的項(xiàng)目窗口中單擊對(duì)象欄下方的“報(bào)表”,然后雙擊使用向?qū)?chuàng)建報(bào)表。確定報(bào)表上使用哪些字段。當(dāng)出現(xiàn)如圖12.29所示的“報(bào)表向?qū)А睂?duì)話框時(shí),從“表/查詢”列表框中選擇“表:Students”,然后在“可用字段”列表框中依次雙擊所需字段,將它們添加到“選定的字段”列表框中.在本例中選定student_num,student_name,student_sex,birthdate,department,speciality,grade以及class字段。然后單擊“下一步”按鈕。確定分組級(jí)別。當(dāng)出現(xiàn)如圖12.30所示的“報(bào)表向?qū)А睂?duì)話框時(shí),在左邊的列表框中雙擊要作為分組依據(jù)的字段。在本例中選擇class字段作為分組依據(jù),然后單擊“下一步”按鈕確定排序次序。當(dāng)出現(xiàn)如圖12.31所示的“報(bào)表向?qū)А睂?duì)話框時(shí),確定明細(xì)信息使用的排序次序,最多可以選擇四個(gè)字段對(duì)記錄排序,既可以是升序也可以是降序。單擊“升序”按鈕,則它變?yōu)椤敖敌颉保粗嗳?。在本例中選擇student_num字段作為排序依據(jù),然后單擊“下一步”按鈕。

確定報(bào)表的布局方式和打印方向。在如圖12.32所示的“報(bào)表向?qū)А睂?duì)話框中,為報(bào)表選擇一種適當(dāng)?shù)牟季址绞?,可供選擇的布局方式有“遞階”、“塊”、“分級(jí)顯示1”、“分級(jí)顯示2”、“左對(duì)齊1”以及“左對(duì)齊2”,每當(dāng)選擇一種布局方式時(shí),都可以在對(duì)話框左邊查看相應(yīng)的布局效果;選擇報(bào)表的打印方向,根據(jù)表中使用字段的多少可以選擇“縱向”或者“橫向”。在本例中,為報(bào)表選擇的布局方式為“左對(duì)齊1”,打印方式為“縱向”,并選定“調(diào)整字段寬度使所有字段都能顯示在一頁(yè)中”復(fù)選框,然后單擊“下一步”按扭.確定報(bào)表所用樣式。在如圖12.33所示的“報(bào)表向?qū)А睂?duì)話框中,為報(bào)表選擇一種樣式,可供選擇的樣式有“大膽”、“正式”、“淡灰”、“緊湊”、“組織”和“隨意”。在本例中為報(bào)表選擇“組織”樣式,然后單擊“下一步”按鈕。指定報(bào)表標(biāo)題。在如圖12.34所示的“報(bào)表向?qū)А睂?duì)話框中,為報(bào)表指定標(biāo)題(本例中為“學(xué)生資料”)。并選擇“修改報(bào)表設(shè)計(jì)”選項(xiàng),然后單擊“下一步”按鈕。在報(bào)表設(shè)計(jì)器窗口中打開(kāi)報(bào)表之后,將報(bào)表中所有標(biāo)簽中的字段名改為中文,例如將“student_num”改為“學(xué)號(hào)”等,如圖12.35所示。從“視圖”選單中選擇“打印預(yù)覽”命令,或者單擊工具欄上的“打印預(yù)覽”按鈕,以查看報(bào)表的布局效果。在項(xiàng)目中創(chuàng)建一個(gè)報(bào)表之后,若要在打印預(yù)覽視圖中查看該報(bào)表,請(qǐng)單擊該報(bào)表,然后單擊項(xiàng)目窗口工具欄上的“打印預(yù)覽”按鈕;若要修改該報(bào)表的布局,請(qǐng)單擊該報(bào)表,然后單擊項(xiàng)目窗口工具欄上的“設(shè)計(jì)”按鈕;若要?jiǎng)h除該報(bào)表,請(qǐng)單擊該報(bào)表,然后單擊項(xiàng)目窗口工具欄上的“刪除”按鈕。12.1.9通過(guò)項(xiàng)目管理SQLServer數(shù)據(jù)庫(kù)通過(guò)Access項(xiàng)目中不僅可以管理存儲(chǔ)在項(xiàng)目中的數(shù)據(jù)庫(kù)對(duì)象(例如窗體和報(bào)表等),也可以管理存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)對(duì)象(例如表、視圖和數(shù)據(jù)庫(kù)圖表等),還可以對(duì)SQLServer數(shù)據(jù)庫(kù)本身進(jìn)行管理。1.顯示SQLServer服務(wù)器屬性步驟在Access2002中打開(kāi)一個(gè)已與SQLServer建立連接的Access項(xiàng)目。在“視圖”選單中選擇“服務(wù)器屬性”命令。此時(shí)出現(xiàn)如圖12.37所示的“服務(wù)器屬性”對(duì)話框,包含了以下信息:數(shù)據(jù)庫(kù)產(chǎn)品(MicrosoftSQLServer);數(shù)據(jù)庫(kù)版本號(hào)(8.0即為SQLServer2000版);數(shù)據(jù)庫(kù)服務(wù)器的名稱;Access項(xiàng)目連接到的當(dāng)前SQLServer數(shù)據(jù)庫(kù)的名稱。

注意當(dāng)前SQLServer數(shù)據(jù)庫(kù)名稱以及其文件格式(Access2000或Access2002)也顯示在“項(xiàng)目”窗口的標(biāo)題欄中,出現(xiàn)在Access項(xiàng)目文件名稱的右側(cè)。2.備份和還原數(shù)據(jù)庫(kù)使用Access項(xiàng)目可以對(duì)SQLServer2000數(shù)據(jù)庫(kù)進(jìn)行備份和還原。應(yīng)該經(jīng)常定期備份數(shù)據(jù)庫(kù),以保護(hù)在硬件故障或意外損失時(shí)數(shù)據(jù)的安全。利用創(chuàng)建數(shù)據(jù)時(shí)制作的備份,可以還原這些數(shù)據(jù)。若要備份并還原SQLServer數(shù)據(jù)庫(kù),請(qǐng)使用SQLServer企業(yè)管理器。下面介紹通過(guò)Access項(xiàng)目來(lái)備份SQLServer數(shù)據(jù)庫(kù)的方法。步驟打開(kāi)一個(gè)連接到SQLServer2000的Access項(xiàng)目。選擇“工具→數(shù)據(jù)庫(kù)實(shí)用工具→備份SQL數(shù)據(jù)庫(kù)”命令。當(dāng)出現(xiàn)如圖12.38所示的“備份”對(duì)話框時(shí),在“文件名”框中輸入備份文件的名稱(.dat),或使用Access輸入的默認(rèn)名稱。單擊“確定”按鈕。需要注意的是,上述操作不備份Access項(xiàng)目(.adp),該項(xiàng)目文件獨(dú)立于所連接的SQLServer數(shù)據(jù)庫(kù)。若要制作Access項(xiàng)目文件的備份,請(qǐng)使用Windows資源管理器,將該文件復(fù)制到安全的位置。若要還原數(shù)據(jù)庫(kù),必須斷開(kāi)所有用戶與該數(shù)據(jù)庫(kù)的連接,并關(guān)閉除“數(shù)據(jù)庫(kù)”窗口外的所有窗口,然后執(zhí)行以下操作。步驟打開(kāi)一個(gè)連接到SQLServer2000的Access項(xiàng)目。選擇“工具→數(shù)據(jù)庫(kù)實(shí)用工具→還原SQL數(shù)據(jù)庫(kù)”命令,當(dāng)出現(xiàn)如圖12.39所示的對(duì)話框時(shí),單擊“是”按鈕。當(dāng)出現(xiàn)如圖12.40所示的“恢復(fù)”對(duì)話框時(shí),在“查找范圍”框中選擇一個(gè)地址,然后找到所需要數(shù)據(jù)庫(kù)備份文件(.dat)。單擊數(shù)據(jù)庫(kù)備份文件,然后單擊“確定”按鈕。3.刪除數(shù)據(jù)庫(kù)下面介紹從Access項(xiàng)目中刪除SQLServer2000數(shù)據(jù)庫(kù)的方法。

步驟斷開(kāi)所有用戶與該數(shù)據(jù)庫(kù)的連接,并關(guān)閉除“數(shù)據(jù)庫(kù)”窗口外的全部窗口。打開(kāi)連接到SQLServer2000的Access項(xiàng)目。選擇“工具→數(shù)據(jù)庫(kù)實(shí)用工具→刪除SQL數(shù)據(jù)庫(kù)”命令。單擊“是”按鈕,確認(rèn)數(shù)據(jù)庫(kù)刪除操作。12.2使用VisualBasic開(kāi)發(fā)

SQLServer應(yīng)用程序VisualBasic是目前流行的可視化開(kāi)發(fā)工具之一,它以簡(jiǎn)單易用而著稱,不僅可以用于開(kāi)發(fā)各種類型的桌面應(yīng)用程序,也可以用于開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。下面介紹如何使用VisualBasic6.0開(kāi)發(fā)SQLServer應(yīng)用程序,主要講述通過(guò)數(shù)據(jù)控件、ADO數(shù)據(jù)控件以及數(shù)據(jù)環(huán)境訪問(wèn)SQLServer數(shù)據(jù)庫(kù)的方法和步驟。12.21使用數(shù)據(jù)控件數(shù)據(jù)控件是VisualBasic的標(biāo)準(zhǔn)控件之一。在應(yīng)用程序中,可以使用數(shù)據(jù)控件和各種數(shù)據(jù)綁定控件來(lái)顯示和更新數(shù)據(jù)庫(kù)中的信息。使用數(shù)據(jù)控件時(shí),不用編寫代碼就能夠創(chuàng)建簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用程序。如果將數(shù)據(jù)控件與VisualBasic代碼結(jié)合起來(lái),則可以為數(shù)據(jù)處理提供高級(jí)的編程控件,從而設(shè)計(jì)出功能完備的數(shù)據(jù)庫(kù)應(yīng)用程序。1.數(shù)據(jù)控件概述

在VisualBasic中,使用數(shù)據(jù)控件能夠?qū)⒋绑w與數(shù)據(jù)庫(kù)連接起來(lái),只需要編寫少量代碼甚至不用編寫代碼就能夠完成下列任務(wù)。與本地?cái)?shù)據(jù)庫(kù)或遠(yuǎn)程數(shù)據(jù)庫(kù)連接?;赟QL查詢打開(kāi)指定的數(shù)據(jù)庫(kù)表或定義記錄集。將數(shù)據(jù)字段傳送到各種綁定控件,并在這些控件中顯示或更新字段值。根據(jù)綁定控件中顯示的數(shù)據(jù)變化來(lái)添加新記錄或更新數(shù)據(jù)庫(kù)。捕獲訪問(wèn)數(shù)據(jù)時(shí)出現(xiàn)的錯(cuò)誤。關(guān)閉數(shù)據(jù)庫(kù)。2.在窗體上添加數(shù)據(jù)控件用數(shù)據(jù)控件訪問(wèn)數(shù)據(jù)庫(kù)時(shí),首先要在工具箱中單擊數(shù)據(jù)控件按鈕,并在窗體上添加一個(gè)數(shù)據(jù)控件。數(shù)據(jù)控件的大小和位置都可以重新設(shè)置,不過(guò),習(xí)慣上是把該控件放在窗體的底部,并使其寬度與窗體的ScaleWidth

屬性值相等。為此,請(qǐng)?jiān)趯傩源翱谥邪褦?shù)據(jù)控件的Align屬性設(shè)置為2,使數(shù)據(jù)控件大小將與窗體的尺寸同步變化,如圖12.42所示。從圖中可以看到,數(shù)據(jù)控件中間的空折區(qū)域中顯示著Data1字樣,這是數(shù)據(jù)控件的Caption屬性所指定的文本。在運(yùn)行時(shí)可以用該屬性來(lái)顯示當(dāng)前記錄號(hào)。3.設(shè)置數(shù)據(jù)控件連接的數(shù)據(jù)庫(kù)使用數(shù)據(jù)控件時(shí),首先指定要連接的數(shù)據(jù)類型,這可以通過(guò)在屬性窗口中設(shè)置數(shù)據(jù)控件的Connect屬性來(lái)實(shí)現(xiàn)。Connect屬性的默認(rèn)值是Access。如果要連接的不是Access數(shù)據(jù)庫(kù),而是其他類型的數(shù)據(jù)庫(kù),就必須對(duì)Connect屬性進(jìn)行設(shè)置,操作方法如下:在屬性窗口中選定數(shù)據(jù)控件,然后單擊Connect屬性框并選擇要連接的數(shù)據(jù)庫(kù)類型。若要使用數(shù)據(jù)控件連接到指定的SQLServer數(shù)據(jù)庫(kù),則應(yīng)當(dāng)用手工方式在Connect屬性框中輸入以下字符串:ODBC;Driver={SQLserver};Server=ServerName;UID=UserID;PWD=Password;Database=DatabaseName

在上述連接字符串中,ODBC表示通過(guò)ODBC驅(qū)動(dòng)程序建立與數(shù)據(jù)庫(kù)的連接;Server指定要連接的SQLServer服務(wù)器;UID和PWD分別指定SQLServer登錄名和密碼;Database指定要連接的SQLServer數(shù)據(jù)庫(kù)。例如,設(shè)SQLServer實(shí)例運(yùn)行在計(jì)算機(jī)ABC上,有一個(gè)用戶ID為hegels,相應(yīng)的密碼為123456,若要連接的數(shù)據(jù)庫(kù)為StudentSQL,則連接字符串內(nèi)容應(yīng)為:ODBC;Driver={SQLserver};Server=ABC;UID=hegels;PWD=123456;Database=StudentSQL4.設(shè)置數(shù)據(jù)控件的記錄來(lái)源設(shè)置要通過(guò)數(shù)據(jù)控件連接的SQLServer數(shù)據(jù)庫(kù)之后,還需要設(shè)置該控件的RecordSource屬性,以指定在數(shù)據(jù)綁定控件中顯示的記錄來(lái)源。數(shù)據(jù)控件的RecordSource屬性的值是一個(gè)字符串表達(dá)式,其值可以是一個(gè)表名稱,也可以是一個(gè)合法的SQL查詢語(yǔ)句。一旦通過(guò)Connect屬性指定要連接的SQLServer數(shù)據(jù)庫(kù)文件,VisualBasic就會(huì)自動(dòng)檢索該數(shù)據(jù)庫(kù)中的所有表和有效查詢的名稱,并將它們顯示在RecordSource屬性列表中.5.使用數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件是數(shù)據(jù)識(shí)別控件,通過(guò)它來(lái)訪問(wèn)數(shù)據(jù)庫(kù)中的信息。當(dāng)一個(gè)控件被綁到數(shù)據(jù)控件時(shí),VisualBasic將當(dāng)前記錄中的字段值應(yīng)用于該控件,在該控件中顯示數(shù)據(jù),并允許進(jìn)行修改。如果在綁定控件里改變了字段值,當(dāng)移動(dòng)到另一條記錄時(shí),所做的修改會(huì)自動(dòng)地寫入到數(shù)據(jù)庫(kù)。在VisualBasic6.0中,可用做綁定控件的標(biāo)準(zhǔn)控件包括復(fù)選框、圖像控件、標(biāo)簽、圖片框、文本框、列表框以及組合框等;可用做綁定控件ActiveX控件包括DBList,DBCombo,DataList,DataCombo,MSFlexGrid,DBGrid以及MaskedEdit等。在使用任何ActiveX控件之前,都需要從“工程”選單中選擇“部件”命令,然后在“部件”對(duì)話框中添加該控件。此外,還必須從“工程”選單中選擇“引用”命令,然后在“引用”對(duì)話框中注冊(cè)數(shù)據(jù)訪問(wèn)對(duì)象(DAO)庫(kù)。下面介紹在應(yīng)用程序中使用綁定控件的方法。步驟在窗體上添加數(shù)據(jù)控件,并設(shè)置與數(shù)據(jù)訪問(wèn)有關(guān)的一些基本屬性,例如Connect和RecordSource屬性等,以指定要訪問(wèn)的SQLServer數(shù)據(jù)。在同一窗體上添加綁定控件,并將其DataSource屬性設(shè)置為數(shù)據(jù)控件的名稱,從而將該控件綁定到數(shù)據(jù)庫(kù)。將綁定控件的DataField屬性設(shè)置為一個(gè)字段名稱,從而將該控件綁定到當(dāng)前記錄的一個(gè)字段。注意設(shè)置DataSource屬性后,VisualBasic會(huì)自動(dòng)檢索所有可用字段并顯示在DataField屬性的下拉式列表框中,如果在設(shè)計(jì)時(shí)數(shù)據(jù)庫(kù)不可用,則在數(shù)據(jù)值從數(shù)據(jù)庫(kù)中發(fā)送給控件之前,需要在運(yùn)行時(shí)用代碼提供一個(gè)有效的字段名稱。例如,若要將文本框Text1綁定到student_num字段上,可以通過(guò)下面的語(yǔ)句來(lái)實(shí)現(xiàn):

Text1.DataField=“student_num”對(duì)于個(gè)別字段也可以有多個(gè)綁定控件,但不必為表中的每個(gè)字段都提供一個(gè)綁定控件。數(shù)據(jù)控件和綁定控件并不一定要設(shè)為可視的。如果把數(shù)據(jù)訪問(wèn)的能力合并到設(shè)計(jì)的窗體中,便能夠利用程序代碼在后臺(tái)進(jìn)行數(shù)據(jù)處理。在程序運(yùn)行時(shí),數(shù)據(jù)控件、綁定控件與數(shù)據(jù)庫(kù)一起工作,以訪問(wèn)當(dāng)前記錄集內(nèi)的數(shù)據(jù)。使用數(shù)據(jù)控件的箭頭按鈕可以在不同的記錄之間移動(dòng),而用綁定控件則可以查看或編輯從每個(gè)字段里顯示出來(lái)的數(shù)據(jù)。無(wú)論何時(shí),只要單擊數(shù)據(jù)控件的箭頭按鈕,VisualBasic就會(huì)自動(dòng)地更新對(duì)記錄集所做的任何改變。6.用數(shù)據(jù)控件創(chuàng)建簡(jiǎn)單

的數(shù)據(jù)庫(kù)應(yīng)用程序[例12.6]本例演示如何使用數(shù)據(jù)控件和文本框創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)瀏覽程序。

步驟在VisualBasic6.0中創(chuàng)建一個(gè)標(biāo)準(zhǔn)EXE工程。在窗體上添加一個(gè)數(shù)據(jù)控件、五個(gè)文本框控件和五個(gè)標(biāo)簽控件,其中數(shù)據(jù)控件用于連接數(shù)據(jù)庫(kù),文本框控件用于顯示字段值,標(biāo)簽控件用于提示字段標(biāo)題。按照表12.4中的數(shù)據(jù)對(duì)窗體和控件的屬性進(jìn)行設(shè)置。在代碼窗口中,編寫數(shù)據(jù)控件Data1的Reposition事件過(guò)程:‘當(dāng)移動(dòng)記錄指針時(shí)觸發(fā)數(shù)據(jù)控件的Reposition事件PrivateSubData1_Reposition()‘因?yàn)橛涗浖腁bsolutePosition屬性總比記錄號(hào)小1Data1.Caption=“當(dāng)前記錄號(hào):”&Data1.Recordset.AbsolutePosition+1EndSub在上述代碼中,用到了記錄集對(duì)象的AbsolutePosition屬性,該屬性用于返回記錄集內(nèi)記錄的相對(duì)記錄號(hào),而且第一條記錄的記錄號(hào)為0。為了用數(shù)據(jù)控件的Caption屬性來(lái)顯示當(dāng)前記錄號(hào),應(yīng)將數(shù)據(jù)控件Data1的RecordsetType屬性設(shè)置為1(動(dòng)態(tài)集)或2(快照型記錄集)。按下F5鍵,運(yùn)行程序。單擊數(shù)據(jù)控件上的箭頭按鈕,可以在不同的記錄之間移動(dòng),而且在數(shù)據(jù)控件中間顯示出當(dāng)前的記錄號(hào).12.2.2添加ADO數(shù)據(jù)控件ADO數(shù)據(jù)控件使用ActiveX數(shù)據(jù)對(duì)象(ADO)來(lái)快速建立數(shù)據(jù)綁定控件與數(shù)據(jù)源之間的聯(lián)系,使用該控件可以快速創(chuàng)建記錄集并通過(guò)數(shù)據(jù)綁定控件將數(shù)據(jù)提供給用戶。1.添加ADO數(shù)據(jù)控件步驟在“工程”選單中選擇“部件”。在“部件”對(duì)話框的“控件”選項(xiàng)卡中,選擇MicrosoftADODataControl6.0(OLEDB)復(fù)選框。單擊“確定”按鈕,將ADO數(shù)據(jù)控件添加到VisualBasic的工具箱中,如圖12.49所示。在工具箱中雙擊Adodc控件按鈕,在窗體上添加一個(gè)ADO數(shù)據(jù)控件,如圖12.50所示。2.設(shè)置ADO數(shù)據(jù)控件連接的數(shù)據(jù)庫(kù)在窗體上添加ADO數(shù)據(jù)控件后,通過(guò)設(shè)置該控件的ConnectionString屬性可以指定所要連接的SQLServer數(shù)據(jù)庫(kù),這種連接可以通過(guò)OLEDB提供程序或ODBC驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。OLEDB(ObejctLinking&EmbeddingDatabase)是一種基于COM訪問(wèn)數(shù)據(jù)的應(yīng)用程序接口,它支持可以使用OLEDB提供程序的任意數(shù)據(jù)源的訪問(wèn)。ODBC(OpenDatabaseConnectivity)是一種數(shù)據(jù)訪問(wèn)應(yīng)用程序接口,它支持可以使用ODBC驅(qū)動(dòng)程序的任意數(shù)據(jù)源的訪問(wèn)。ConnectionString屬性值是一個(gè)字符串,給出建立數(shù)據(jù)庫(kù)連接所需要的所有信息,因此也稱為連接字符串。該字符串的主要內(nèi)容包括訪問(wèn)數(shù)據(jù)所用的提供程序或驅(qū)動(dòng)程序、服務(wù)器名稱、用戶標(biāo)識(shí)和登錄密碼以及要連接的默認(rèn)數(shù)據(jù)庫(kù)等。若要通過(guò)OLEDB提供程序來(lái)訪問(wèn)SQLServer數(shù)據(jù)庫(kù),應(yīng)按照以下語(yǔ)法格式來(lái)設(shè)置ADO數(shù)據(jù)控件的ConnectionString屬性值:Adodc1.ConnectionString=”PROVIDER=SQLOLEDB;DATASOURCE=ServerName;”&_”UID=User;PWD=Password;DATABASE=DatabaseName”若要通過(guò)ODBC驅(qū)動(dòng)程序來(lái)訪問(wèn)SQLServer數(shù)據(jù)庫(kù),應(yīng)按照以下語(yǔ)法格式來(lái)設(shè)置ADO數(shù)據(jù)控件的ConnectionString屬性值:Adodc1.ConnectionString=”DRIVER={SQLServer};”&_”UID=UserID;PWD=Password;DATABASE=DatabaseName”3.設(shè)置ADO數(shù)據(jù)控件的記錄來(lái)源在設(shè)置ADO數(shù)據(jù)控件所要連接的SQLServer數(shù)據(jù)庫(kù)之后,還需要通過(guò)設(shè)置該控件的RecordSource屬性來(lái)指定來(lái)源。

步驟在屬性窗口中選擇ADO數(shù)據(jù)控件。單擊RecordSource屬性框右邊的對(duì)話按鈕。當(dāng)出現(xiàn)如圖12.51所示的“屬性頁(yè)”對(duì)話框時(shí),從“命令類型”列表框中選擇所需命令類型:若要通過(guò)執(zhí)行一個(gè)SQL語(yǔ)句來(lái)生成記錄集,請(qǐng)選擇“1-adCmdText”。若要從一個(gè)數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)庫(kù),請(qǐng)選擇“2-adCmdTable”。若要通過(guò)執(zhí)行一個(gè)存儲(chǔ)過(guò)程來(lái)生成記錄集,請(qǐng)選擇“4-adCmdStoredPro根據(jù)步驟(3)完成的操作不同,執(zhí)行下列操作之一:若在步驟(3)中選擇的命令類型為2或4,請(qǐng)?jiān)凇氨砘虼鎯?chǔ)過(guò)程名稱”框中選擇所需的表名稱或存儲(chǔ)過(guò)程名稱。若在步驟(3)中選擇的命令類型為1,請(qǐng)?jiān)凇懊钗谋荆⊿QL)”框中輸入一個(gè)SQL查詢語(yǔ)句。單擊“確定”按鈕,完成RecordSource屬性的設(shè)置。4.設(shè)置ADO數(shù)據(jù)控件的其他屬性除了設(shè)置ConnectionString和RecordSource屬性之外,使用ADO數(shù)據(jù)控件時(shí)經(jīng)常需要設(shè)置以下屬性。ConnectionTimeout屬性:設(shè)置在中止前等待打開(kāi)連接的時(shí)間量(單位為秒)。CursorLocation屬性:指定所使用的游標(biāo)引擎,其取值為2-adUseServer(服務(wù)器端游標(biāo))或3-adUseClient(客戶端游標(biāo))。CursorType屬性:設(shè)置用于下一級(jí)記錄集的游標(biāo)類型,其取值為1-adOpenKeyset(鍵集游標(biāo))、2-adOpenDynamic(動(dòng)態(tài)游標(biāo))或3-adOpenStatic(靜態(tài)游標(biāo))。5.使用ADO數(shù)據(jù)控件

開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序下面給出通過(guò)ADO數(shù)據(jù)控件訪問(wèn)數(shù)據(jù)庫(kù)的例子。[例12.8]使用ADO數(shù)據(jù)控件和列表框控件設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序,其功能是根據(jù)學(xué)號(hào)查詢成績(jī)。在VisualBasic6.0中創(chuàng)建一個(gè)標(biāo)準(zhǔn)EXE工程。在工具箱中添加ADO數(shù)據(jù)控件,為此應(yīng)在“部件”對(duì)話框的“控件”選項(xiàng)卡中選擇MicrosoftDataGridControl6.0(OLEDB)。在窗體上添加ADO數(shù)據(jù)控件Adodc1.在窗體上添加其他控件,包括標(biāo)簽Label1和Label2、文本框Text1、命令按鈕Command1、線段Line1以及列表框List1。按照表12.6中的數(shù)據(jù)設(shè)置窗體和控件的屬性,設(shè)計(jì)好的窗體布局如圖12.52所示。在窗體上雙擊命令按鈕Command1,然后在代碼窗口中編寫該控件的Click事件過(guò)程,程序代碼如下:PrivateSubCommand1_Click()ConstREC_SRC=”SELECTStudents.student_numAS學(xué)號(hào),”&_“Students.student_nameAS課程,”&_“Scores.scoreAS成績(jī)”&_“FROMCoursesINNERJOIN“&_“ScoresONCourses.course_id=Scores.course_idINNERJOIN“&_“StudentsONScores.student_id=Students.student_id“DimsNumAsString,Ssqlasstring,sfldnameasstring,sfldvalueasstringSnum=text1.text‘從文本框中取得輸入的學(xué)號(hào)并存入變量snumIfsnum=””thenMsgbox“請(qǐng)指定學(xué)號(hào)!”,vbokonly+vbinformation,”學(xué)生成績(jī)查詢系統(tǒng)”ExitsubElse‘動(dòng)態(tài)生成查詢語(yǔ)句ssql=rec_src&”wherestudent_num=”&“‘“&snum&“‘“endifadodc1.recordsource=ssql‘動(dòng)態(tài)設(shè)置ADO數(shù)據(jù)控件的記錄來(lái)源adodc1.refresh‘打開(kāi)或重新打開(kāi)數(shù)據(jù)庫(kù)內(nèi)容‘recordset表示通過(guò)ADO數(shù)據(jù)控件打開(kāi)的記錄集,EOF屬性為真表明記錄為空ifadodc1.recordset.EOFthenmsgbox“查無(wú)此人。請(qǐng)核實(shí)后重新輸入!”,vbokonly+vbinformation,”學(xué)生成績(jī)查詢系統(tǒng)”exitsubendifLabel2.Caption=adodc1.recordset.fields(“姓名”)&“同學(xué)的成績(jī)?nèi)缦拢骸盠ist1.Clear‘清空列表框Sfldname=adodc1.recordset.fields(2).name&vbtab&vbtab&vbtab&_Adodc1.recordset.fields(3).nameList1.additemsfldname‘

將字段名添加到列表框List1.additem““Whilenotadodc1.recordset.eofSfldvalue=adodc1.recordset.fields(2).valud&vbtab&vbtab&_Adodc1.recordset.fields(3).valueList1.additemsfldvalue‘將課程和成績(jī)添加到列表框Adodc1.receorset.movenext‘將記錄指針移到下一條記錄WendEndsub(7)按F5鍵,運(yùn)行程序。在文本框中輸入一個(gè)學(xué)號(hào),然后單擊“查看成績(jī)”,如果指定的學(xué)生存在于數(shù)據(jù)庫(kù)中,則會(huì)在列表框中顯示該生各門課程的成績(jī).12.2.3使用數(shù)據(jù)環(huán)境設(shè)計(jì)器數(shù)據(jù)環(huán)境設(shè)計(jì)器為創(chuàng)建編程運(yùn)行時(shí)數(shù)據(jù)訪問(wèn)提供了一個(gè)交互的設(shè)計(jì)時(shí)環(huán)境。在設(shè)計(jì)時(shí),可以對(duì)Connection和Command對(duì)象設(shè)置適當(dāng)?shù)闹?、編寫代碼響應(yīng)ADO事件、執(zhí)行命令、創(chuàng)建合計(jì)與層次結(jié)構(gòu),也可以拖動(dòng)DataEnvironment對(duì)象到窗體來(lái)創(chuàng)建數(shù)據(jù)綁定的控件。使用數(shù)據(jù)環(huán)境設(shè)計(jì)器可以完成下面的工作:添加一個(gè)數(shù)據(jù)環(huán)境設(shè)計(jì)器到一個(gè)VisualBasic工程中:創(chuàng)建Connection對(duì)象;基于表、視圖、SQL語(yǔ)句或存儲(chǔ)過(guò)程等創(chuàng)建Command對(duì)象;基于Command對(duì)象的一個(gè)分組,或通過(guò)與一個(gè)或多個(gè)Command對(duì)象相關(guān)來(lái)創(chuàng)建命令對(duì)象的層次結(jié)構(gòu);為Connection和Recordset對(duì)象編寫和運(yùn)行代碼;從數(shù)據(jù)環(huán)境設(shè)計(jì)器中拖動(dòng)一個(gè)Command對(duì)象中的字段到一個(gè)VisualBasic窗體或數(shù)據(jù)報(bào)表設(shè)計(jì)器。1.添加數(shù)據(jù)環(huán)境設(shè)計(jì)器

若要添加一個(gè)數(shù)據(jù)環(huán)境設(shè)計(jì)器對(duì)象到一個(gè)新的VisualBasic工程,請(qǐng)執(zhí)行以下操作。

步驟從“文件”選單中選擇“新建工程”命令。在“新建工程”對(duì)話框的“新建”選項(xiàng)卡中,選擇“標(biāo)準(zhǔn)EXE”工程,然后單擊“打開(kāi)”按鈕。從“工程”選單中選擇“添加DataEnvironment”命令。一旦數(shù)據(jù)環(huán)境設(shè)計(jì)器被添加到VisualBasic工程中,數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口出現(xiàn),并且將一個(gè)Connection對(duì)象添加到數(shù)據(jù)環(huán)境,同時(shí)在工程窗口中出現(xiàn)一個(gè)DataEnvironment對(duì)象。2.創(chuàng)建Connection對(duì)象

若要通過(guò)數(shù)據(jù)環(huán)境訪問(wèn)數(shù)據(jù),就必須創(chuàng)建一個(gè)Connection對(duì)象。因此,每一個(gè)數(shù)據(jù)環(huán)境應(yīng)當(dāng)最少包括一個(gè)Connection對(duì)象。一個(gè)Connection對(duì)象表示一個(gè)到遠(yuǎn)程數(shù)據(jù)庫(kù)的連接,該數(shù)據(jù)庫(kù)被用做一個(gè)數(shù)據(jù)源。一旦在VisualBasic工程中添加了一個(gè)數(shù)據(jù)環(huán)境,數(shù)據(jù)環(huán)境設(shè)計(jì)器就自動(dòng)地包括一個(gè)新的連接,稱為Connection1。在設(shè)計(jì)時(shí),數(shù)據(jù)環(huán)境打開(kāi)連接并從該連接中獲得元數(shù)據(jù),包括數(shù)據(jù)庫(kù)對(duì)象、表結(jié)構(gòu)和過(guò)程參數(shù)。若要?jiǎng)?chuàng)建新的Connection對(duì)象,請(qǐng)執(zhí)行下列操作之一:在數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口工具欄上單擊“添加連接”按鈕。右擊數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口,然后從快捷選單中選擇“添加連接”命令。在數(shù)據(jù)環(huán)境中創(chuàng)建Connection對(duì)象之后,還必須設(shè)置它的連接屬性,以指定所用的OLEDB提供程序以及要訪問(wèn)的數(shù)據(jù)庫(kù)等。

步驟在數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口中,單擊相應(yīng)的Connection對(duì)象。單擊工具欄上的“屬性”按鈕,或者右擊數(shù)據(jù)環(huán)境設(shè)計(jì)器窗口,然后從快捷選單中選擇“屬性”命令。在“數(shù)據(jù)鏈接屬性”對(duì)話框的“提供者”選項(xiàng)卡中,選擇MicrosoftOLEDBProviderforSQLServer作為OLEDB提供程序.在“數(shù)據(jù)鏈接屬性”對(duì)話框的“連接”選項(xiàng)卡中,選擇或輸入運(yùn)行SQLServer實(shí)例的服務(wù)器名稱,輸入登錄該服務(wù)器的信息,在該服務(wù)器上選擇所要訪問(wèn)的數(shù)據(jù)庫(kù),然后單擊“確定”按鈕,將所設(shè)置的屬性應(yīng)用于Connection對(duì)象,并關(guān)閉對(duì)話框.3.創(chuàng)建Command對(duì)象Command對(duì)象定義了從一個(gè)數(shù)據(jù)庫(kù)連接中獲取何種數(shù)據(jù)的詳細(xì)信息。Command對(duì)象既可以基于一個(gè)數(shù)據(jù)庫(kù)對(duì)象(例如一個(gè)表、視圖或存儲(chǔ)過(guò)程),也可以基于一個(gè)SQL查詢。此外,還可以創(chuàng)建Command對(duì)象之間的關(guān)系來(lái)以層次結(jié)構(gòu)的形式獲取一組相關(guān)的數(shù)據(jù)。但要注意的是,要想使一個(gè)Command對(duì)象有效,必須和一個(gè)Connection對(duì)象相關(guān)聯(lián)。如果一個(gè)Command對(duì)象返回?cái)?shù)據(jù),則它是“記錄集返回”,返回的結(jié)果可以通過(guò)使用DataEnvironment對(duì)象中的一個(gè)Recordset對(duì)象進(jìn)行訪問(wèn)。然而,如果一個(gè)Command對(duì)象不返回?cái)?shù)據(jù)(例如執(zhí)行一個(gè)更新的存儲(chǔ)過(guò)程或SQL文本),則它是“非記錄集返回”。數(shù)據(jù)環(huán)境設(shè)計(jì)器自動(dòng)地識(shí)別Command是否是記錄集返回??梢酝ㄟ^(guò)使用“Command屬性”對(duì)話框中“高級(jí)”選項(xiàng)卡的“返回的記錄集”復(fù)選框覆蓋這個(gè)設(shè)置。在運(yùn)行時(shí)如何訪問(wèn)Command對(duì)象取決Command對(duì)象是否是記錄集返回。如果Command對(duì)象是記錄集返回,既可以將Command對(duì)象作為DataEnvironment對(duì)象的一個(gè)屬性,也可以作為它的一個(gè)方法來(lái)進(jìn)行訪問(wèn)。如果它是非記錄集返回,則Command對(duì)象只能作為一個(gè)方法來(lái)訪問(wèn)。任何時(shí)候都可以使用AddCommand函數(shù),并且它與其他對(duì)象的存在與否無(wú)關(guān)。然而,一個(gè)沒(méi)有與Connection對(duì)象關(guān)聯(lián)的Command對(duì)象是無(wú)效的。如果一個(gè)Connection對(duì)象在添加過(guò)程中可以被從當(dāng)前焦點(diǎn)中標(biāo)識(shí)出來(lái),則Command對(duì)象的ActiveConnection屬性就被設(shè)置到這個(gè)Connection對(duì)象。如果一個(gè)Connection對(duì)象不能被標(biāo)識(shí),在將它與一個(gè)連接關(guān)聯(lián)之前,Command對(duì)象是無(wú)效的。若要添加一個(gè)Command對(duì)象,請(qǐng)執(zhí)行下列操作之一:在數(shù)據(jù)環(huán)境設(shè)計(jì)器工具欄中單擊“添加命令”按鈕。鼠標(biāo)右鍵單擊一個(gè)Connection對(duì)象或您的數(shù)據(jù)環(huán)境設(shè)計(jì)器,并從快捷方式選單中選擇“添加命令”。添加一個(gè)Command對(duì)象之后,數(shù)據(jù)環(huán)境的“概要型”視圖就顯示新的Command對(duì)象,該對(duì)象的默認(rèn)名稱為“Command”和加在后面的一個(gè)數(shù)字,例如Command1。若要指定Command對(duì)象的屬性,請(qǐng)執(zhí)行以下操作。步驟右擊Command對(duì)象,然后從快捷選單中選擇“屬性”命令,以訪問(wèn)“Command屬性”對(duì)話框。選擇“通用”選項(xiàng)卡,然后進(jìn)行如下設(shè)置:命令名稱:將數(shù)據(jù)庫(kù)對(duì)象的默認(rèn)“命令名稱”改為一個(gè)更有意義的名字。例如,如果Command對(duì)象是基于一個(gè)叫做Customers的數(shù)據(jù)庫(kù)表,可能想將Command1改為Customers。連接:如果Command對(duì)象是從一個(gè)Connection對(duì)象的快捷方式選單中創(chuàng)建的,Connection名稱被自動(dòng)地設(shè)置。但也可以更改這個(gè)Connection。數(shù)據(jù)庫(kù)對(duì)象:從下拉列表中選擇一個(gè)對(duì)象的名字。列出的對(duì)象來(lái)自連接,并且與選擇的“數(shù)據(jù)庫(kù)對(duì)象”類型匹配。SQL語(yǔ)句:如果選擇該項(xiàng)作為數(shù)據(jù)源,在“SQL語(yǔ)句”框中輸入一個(gè)對(duì)您數(shù)據(jù)庫(kù)有效的SQL查詢。若要建立此查詢,可以單擊“SQL生成器”按鈕,以啟動(dòng)查詢?cè)O(shè)計(jì)器如果Command對(duì)象是基于一個(gè)參數(shù)化的查詢或一個(gè)存儲(chǔ)過(guò)程,它可能有一個(gè)參數(shù)集合。若要設(shè)置參數(shù)屬性,請(qǐng)?jiān)凇癈ommand屬性”對(duì)話框中選擇“參數(shù)”選項(xiàng)卡。(4)使用“關(guān)聯(lián)”、“分組”和“合計(jì)”選項(xiàng)卡定義關(guān)系,并組織Recordset中包含的數(shù)據(jù)。(5)在“Command屬性”對(duì)話框中選擇“高級(jí)”選項(xiàng)卡,在該選項(xiàng)卡中設(shè)置高級(jí)屬性,使數(shù)據(jù)環(huán)境可以對(duì)Command對(duì)象屬性和它產(chǎn)生的Recordset對(duì)象進(jìn)行控制。(6)單擊“確定”按鈕,將此屬性應(yīng)用于新的Command對(duì)象,并關(guān)閉對(duì)話框。12.3使用ASP開(kāi)發(fā)

SQLServer應(yīng)用程序ASP(ActiveServerPages)是一種服務(wù)器端腳本編寫環(huán)境,可以用來(lái)創(chuàng)建和運(yùn)行動(dòng)態(tài)網(wǎng)頁(yè)或Web應(yīng)用程序。ASP頁(yè)可以包含HTML標(biāo)記、普通文本、腳本命令以及COM組件等。為了擴(kuò)展ASP應(yīng)用程序的功能,必須通過(guò)數(shù)據(jù)庫(kù)訪問(wèn)組件實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。數(shù)據(jù)庫(kù)訪問(wèn)組件提供ADO對(duì)象(ActiveDataObjects)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。下面主要介紹ADO對(duì)象模型中的三個(gè)主要對(duì)象,即Connection對(duì)象、Recordset對(duì)象和Command對(duì)象,使用這些對(duì)象可以在ASP頁(yè)面上實(shí)現(xiàn)對(duì)SQLServer數(shù)據(jù)庫(kù)的訪問(wèn)。12.3.1使用Connection對(duì)象

Connection對(duì)象代表了打開(kāi)的、與數(shù)據(jù)源的連接,該對(duì)象代表與數(shù)據(jù)源進(jìn)行的惟一會(huì)話。如果是客戶端/服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng),該對(duì)象等價(jià)于到服務(wù)器的實(shí)際網(wǎng)絡(luò)連接。使用該對(duì)象可以實(shí)現(xiàn)與SQLServer數(shù)據(jù)庫(kù)的連接,也可以通過(guò)SQL語(yǔ)句對(duì)所連接的數(shù)據(jù)庫(kù)進(jìn)行各種操作。1.創(chuàng)建數(shù)據(jù)庫(kù)連接

如果計(jì)劃在ASP應(yīng)用程序中對(duì)Web服務(wù)器上的數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),就要建立一個(gè)數(shù)據(jù)庫(kù)連接。沒(méi)有數(shù)據(jù)庫(kù)連接,應(yīng)用程序就無(wú)法知道在哪里找到數(shù)據(jù)庫(kù),也不知道如何連接到數(shù)據(jù)庫(kù)。下面介紹使用Connection對(duì)象建立數(shù)據(jù)庫(kù)連接時(shí)用到的一些屬性和方法。在使用Connection對(duì)象之前,應(yīng)使用Server.CreateObject方法創(chuàng)建該對(duì)象的實(shí)例,語(yǔ)法格式如下:<%DimcnnSetcnn=Server.CreateObject(“ADODB.Connection”)%>2.使用Connection對(duì)象執(zhí)行SQL查詢Connection對(duì)象主要用于打開(kāi)與指定數(shù)據(jù)庫(kù)的連接。也可以使用該對(duì)象的execute方法還能夠執(zhí)行指定的查詢、SQL語(yǔ)句、存儲(chǔ)過(guò)程或特定提供程序的文本等內(nèi)容。Execute方法的語(yǔ)法格式有下列兩種形式。對(duì)于不按行返回的命令字符串:connection.executecommandtext,recordsaffected,options對(duì)于按行返回的命令字符串:setrec

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論