亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Access?。郑拢恋某煽?jī)查詢與打印系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2009-09-29 08:16:48劉曉娟

        黃 崑 劉曉娟

        摘 要:針對(duì)中小學(xué)成績(jī)管理的現(xiàn)實(shí)需求,本文探討了基于Access查詢對(duì)象和VBA編程進(jìn)行成績(jī)查詢與通知單打印管理的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的方案,并重點(diǎn)介紹了采用VBA ADO方法連接和讀寫數(shù)據(jù)庫的實(shí)現(xiàn)原理,以及基于交叉表查詢和VBA編程的成績(jī)單打印原理。

        關(guān)鍵詞:Access;ADO;成績(jī)查詢;批量打印;郵件合并

        中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-8454(2009)16-0069-03

        一、 問題提出

        隨著計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)技術(shù)的快速發(fā)展,中小學(xué)教務(wù)管理工作的信息化建設(shè)也具備了更廣闊的發(fā)展空間。教務(wù)管理的信息化建設(shè)有助于提高工作效率和管理水平。在中小學(xué)的教務(wù)管理工作中,學(xué)生成績(jī)的管理是非常基礎(chǔ)而又相對(duì)繁瑣的工作之一。為了提高成績(jī)輸入、處理、保存與輸出的效率,可以借助目前流行的軟件和工具實(shí)現(xiàn)。從技術(shù)層面上看,成績(jī)管理的基礎(chǔ)是數(shù)據(jù)庫技術(shù),MS Access就是使用極為普遍的一款桌面型關(guān)系數(shù)據(jù)庫管理系統(tǒng)。

        本系統(tǒng)主要面向中小學(xué)成績(jī)管理的需求,基于Access查詢對(duì)象和VBA編程設(shè)計(jì)并實(shí)現(xiàn)一個(gè)用于增、刪、改、查的成績(jī)管理系統(tǒng),該系統(tǒng)提供以報(bào)表和Word文檔方式的學(xué)生成績(jī)通知單的打印輸出功能。本系統(tǒng)主要應(yīng)用的技術(shù)包括Access 交叉表查詢、VBA程序設(shè)計(jì)以及Word郵件合并技術(shù)。通過這幾種技術(shù)的綜合運(yùn)用,實(shí)現(xiàn)服務(wù)于查詢和打印目的的Access、Excel、Word的集成聯(lián)動(dòng)系統(tǒng)。

        二、 基本思路

        為了實(shí)現(xiàn)本系統(tǒng)的目標(biāo),主要解決以下三方面問題:

        (1)多門課程的一次性輸入問題:根據(jù)成績(jī)關(guān)系模型的特點(diǎn),學(xué)生信息、成績(jī)信息與課程信息會(huì)獨(dú)立分成三張數(shù)據(jù)表進(jìn)行設(shè)計(jì)。如果以Access的交互式設(shè)計(jì)視圖創(chuàng)建成績(jī)登記窗體,只能夠逐科進(jìn)行分?jǐn)?shù)的登記,無法一次性輸入多門課程。為了解決這一問題,可以采用VBA提供的ActiveX Data Object(簡(jiǎn)稱ADO),它是一個(gè)用于存取數(shù)據(jù)源的COM組件,它提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLE DB的一個(gè)中間層。利用ADO可以在代碼級(jí)實(shí)現(xiàn)對(duì)數(shù)據(jù)的批量讀取和寫入操作。

        (2)將關(guān)于成績(jī)的交叉表查詢結(jié)果輸出到報(bào)表的問題:Access提供數(shù)據(jù)的報(bào)表呈現(xiàn)方式,但前提是將查詢結(jié)果指定為報(bào)表的數(shù)據(jù)源。然而,交叉表無法被直接指定為窗體、子窗體、報(bào)表等對(duì)象的數(shù)據(jù)源,需要進(jìn)行動(dòng)態(tài)列到固定列的轉(zhuǎn)換。為了解決這一問題,需要結(jié)合Access提供的交叉表查詢和VBA編程,將交叉表查詢的標(biāo)題屬性設(shè)置為確定的列數(shù),則其查詢結(jié)果將轉(zhuǎn)化為固定列方式,之后就可以將交叉表查詢結(jié)果設(shè)置為報(bào)表的數(shù)據(jù)源。

        (3)將關(guān)于成績(jī)的交叉表查詢結(jié)果自動(dòng)輸出到自定義Word文檔的問題: 鑒于報(bào)表在格式設(shè)計(jì)、文字排版方面不如專門的文字處理軟件Word方便、友好,如果可以根據(jù)成績(jī)查詢結(jié)果,將其作為輸出的數(shù)據(jù)源輸出到Word文檔中,對(duì)于用戶而言會(huì)非常便利。因此,可提前設(shè)計(jì)好成績(jī)通知單的郵件合并文檔,然后將查詢結(jié)果指定為該文檔的數(shù)據(jù)源。但交叉表查詢結(jié)果無法被直接用作Word郵件合并的數(shù)據(jù)源。為了解決這一問題,可以將查詢結(jié)果轉(zhuǎn)化為Excel文件,再將生成的Excel文件指定為Word郵件合并的數(shù)據(jù)源。Access VBA編程中提供了Docmd對(duì)象,它的OutputTo方法可將交叉表查詢結(jié)果輸出為Excel、RTF等若干種輸出格式。然后,再使用Shell函數(shù),啟動(dòng)Word應(yīng)用程序以最終實(shí)現(xiàn)數(shù)據(jù)輸出。

        三、 系統(tǒng)的設(shè)計(jì)

        1. 系統(tǒng)功能設(shè)計(jì)

        根據(jù)設(shè)計(jì)目標(biāo),本系統(tǒng)主要實(shí)現(xiàn)以下功能:

        (1) 成績(jī)管理:按照學(xué)生、按照科目進(jìn)行成績(jī)的登記,按照科目進(jìn)行成績(jī)的修改,對(duì)某科成績(jī)或者某位同學(xué)的成績(jī)進(jìn)行刪除。

        (2) 成績(jī)查詢與打印:按照學(xué)號(hào)、班級(jí)編號(hào)、姓名進(jìn)行查詢,并可以將查詢結(jié)果打印輸出為報(bào)表方式和Word文檔方式的成績(jī)通知單。

        2. 數(shù)據(jù)庫設(shè)計(jì)

        根據(jù)學(xué)生與課程之間多對(duì)多的選課關(guān)系,即一位同學(xué)可以選修多門課程,一門課程也可以被多位學(xué)生選修,可以得到如圖1所示的數(shù)據(jù)庫結(jié)構(gòu)。

        四、 系統(tǒng)的實(shí)現(xiàn)

        1. 成績(jī)管理模塊的實(shí)現(xiàn)

        成績(jī)管理模塊的實(shí)現(xiàn)主要利用VBA ADO編程實(shí)現(xiàn),基于ADO的數(shù)據(jù)訪問流程一般為:首先在VBE的工程菜單中設(shè)置ADO庫的引用;然后,建立數(shù)據(jù)庫連接、打開數(shù)據(jù)集、打開數(shù)據(jù)庫、構(gòu)造SQL語句、執(zhí)行SQL語句并更新數(shù)據(jù)集,最后關(guān)閉數(shù)據(jù)集和數(shù)據(jù)庫完成操作。其中,建立數(shù)據(jù)庫連接的代碼為:

        Dim SQL As String

        Dim connstr As String

        Dim conn As ADODB.Connection‘定義數(shù)據(jù)庫連接對(duì)象conn

        connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "school.mdb" ‘打開指定的數(shù)據(jù)庫文件school.mdb

        Set conn = New ADODB.Connection‘初始化數(shù)據(jù)庫連接對(duì)象conn

        conn.Open connstr ‘打開數(shù)據(jù)庫連接

        以成績(jī)登記為例,操作界面如圖2所示,登記的流程為:

        首先從“班級(jí)”組合框中選擇班級(jí)編號(hào),然后根據(jù)班級(jí)編號(hào)確定學(xué)號(hào)組合框的學(xué)生顯示列表。在“班級(jí)”組合框的單擊事件中添加一段VBA代碼,用于指定“學(xué)生”組合框中的顯示內(nèi)容。這段代碼為:

        學(xué)號(hào).RowSourceType = "Table/Query"‘設(shè)置“學(xué)號(hào)”組合框的行來源類型

        學(xué)號(hào).RowSource = "SELECT 學(xué)號(hào), 姓名 FROM 學(xué)生信息表 WHERE 班級(jí)編號(hào)=班級(jí)"‘設(shè)置“學(xué)號(hào)”組合框的行來源

        然后,針對(duì)所選擇的學(xué)生,在隨后的八個(gè)文本框中輸入各門課程的分?jǐn)?shù),單擊命令按鈕“保存”,將輸入的數(shù)據(jù)寫入數(shù)據(jù)庫。寫入的代碼為:

        For i = 1 To 8

        SQL = "INSERT INTO 學(xué)生成績(jī)表(課程編號(hào),學(xué)號(hào),成績(jī)) VALUES('c10" & i & "','" & 學(xué)號(hào).Value & "'," & Me.Controls("txt" & i) & ")"

        conn.Execute SQL ‘執(zhí)行conn的Execute方法,用于執(zhí)行SQL語句

        Next i

        對(duì)成績(jī)數(shù)據(jù)進(jìn)行修改和刪除操作,只需修改SQL語句部分,應(yīng)分別使用Update命令和Delete命令。

        2. 成績(jī)查詢與打印的實(shí)現(xiàn)

        成績(jī)查詢提供按照班級(jí)和學(xué)號(hào)的成績(jī)查詢。在Access中,可以利用交叉表查詢快速實(shí)現(xiàn)對(duì)某位同學(xué)各科成績(jī)的數(shù)據(jù)顯示。在查看數(shù)據(jù)無誤后,可以將查詢到的一位或者若干位學(xué)生的成績(jī)進(jìn)行打印輸出。下面就交叉表查詢的實(shí)現(xiàn)、單個(gè)學(xué)生成績(jī)查詢與輸出、批量輸出進(jìn)行說明,共計(jì)要設(shè)計(jì)1個(gè)交叉表查詢“按照學(xué)號(hào)查詢學(xué)生成績(jī)”,1個(gè)窗體“學(xué)生成績(jī)打印”。

        (1)交叉表查詢的實(shí)現(xiàn):在交叉表查詢“按照學(xué)號(hào)查詢成績(jī)”的設(shè)計(jì)視圖進(jìn)行行標(biāo)題、列標(biāo)題和值的設(shè)計(jì),如圖3所示。

        鑒于交叉表無法直接用作報(bào)表的數(shù)據(jù)源,需要將交叉表中列標(biāo)題的屬性“列標(biāo)題”設(shè)置為具體的課程名稱,以轉(zhuǎn)化為固定列查詢。然后就可以將該查詢?cè)O(shè)置為輸出報(bào)表的數(shù)據(jù)源,如圖3箭頭指向的屬性表所示。

        為了讓這一查詢可同時(shí)滿足單個(gè)和多個(gè)學(xué)生成績(jī)查詢需求,對(duì)學(xué)號(hào)設(shè)置參數(shù)查詢條件為:

        [Forms]![學(xué)生成績(jī)打印]![學(xué)號(hào)] Or Between [Forms]![學(xué)生成績(jī)打印]![起始學(xué)號(hào)] And [Forms]![學(xué)生成績(jī)打印]![終止學(xué)號(hào)]

        在交叉表中建立參數(shù)查詢,要為條件表達(dá)式中三個(gè)來源于窗體的參數(shù)指定數(shù)據(jù)類型,否則交叉表查詢運(yùn)行時(shí)會(huì)報(bào)錯(cuò)。

        (2)單個(gè)學(xué)生成績(jī)的查詢與打印:首先選擇班級(jí)編號(hào),然后從學(xué)生列表中選擇某個(gè)學(xué)生。當(dāng)僅選班級(jí)而還未選學(xué)生時(shí),在右邊的列表框顯示班級(jí)所有學(xué)生的成績(jī)信息。在選擇了某個(gè)學(xué)生之后,可以對(duì)當(dāng)前選定學(xué)生的各科成績(jī)進(jìn)行打印。

        單擊“報(bào)表打印”命令按鈕,利用Docmd對(duì)象的OpenReport功能打開已經(jīng)設(shè)計(jì)好的報(bào)表。這段代碼為:

        Docmd.OpenReport “學(xué)生成績(jī)通知單“

        單擊“Word文檔打印”命令按鈕,可以打開預(yù)先制作好的郵件合并模板,將當(dāng)前查詢學(xué)生的成績(jī)輸出到Word文檔中。根據(jù)前面的分析,需要將交叉表查詢結(jié)果保存為Excel文件,這段代碼為:

        DoCmd.OutputTo acOutputQuery, "按照學(xué)號(hào)查詢學(xué)生成績(jī)", acFormatXLS, CurrentProject.Path & "學(xué)生成績(jī)查詢結(jié)果.xls", False

        然后,調(diào)用shell函數(shù)自動(dòng)運(yùn)行Word郵件合并文檔,Word郵件合并文檔會(huì)自動(dòng)連接生成的Excel文件。這段代碼為:

        Call Shell("C:Program Files MicrosoftOfficeOffice12winword. exe" & " " & CurrentProject.Path & "星光中學(xué)成績(jī)通知單.doc")

        執(zhí)行后,即可調(diào)用Word打開已經(jīng)制作好的郵件合并文檔“星光中學(xué)成績(jī)通知單.doc”,該文檔的外部數(shù)據(jù)源已預(yù)設(shè)為“學(xué)生成績(jī)查詢結(jié)果.xls”文件。報(bào)表與Word文檔打印的效果如圖5所示。

        (3)批量打印:批量打印允許根據(jù)給定的學(xué)號(hào)范圍進(jìn)行打印,如圖6所示。此前交叉表查詢“按照學(xué)號(hào)查詢學(xué)生成績(jī)”已經(jīng)考慮到批量生成的需求。因此,命令按鈕“批量打印報(bào)表”和 “批量打印Word文檔”只需分別在它們的單擊事件中調(diào)用命令按鈕“報(bào)表打印”和“Word文檔打印”的單擊事件,即可完成批量數(shù)據(jù)的輸出。

        五、 小結(jié)

        本系統(tǒng)綜合考慮了Access VBA編程與交叉表查詢?cè)诓倏v數(shù)據(jù)方面各自的特點(diǎn),并結(jié)合報(bào)表輸出和Word文檔輸出的特色,將其有機(jī)地結(jié)合在查詢與打印系統(tǒng)中。并且,本系統(tǒng)的開發(fā)工具只需要使用Access,相比使用專門的程序開發(fā)工具和后臺(tái)數(shù)據(jù)庫的模式,實(shí)現(xiàn)更為簡(jiǎn)單快捷,滿足中小學(xué)教師日常成績(jī)的管理和打印需求更加經(jīng)濟(jì)有效,提高教師成績(jī)管理工作的效率,促進(jìn)教務(wù)整體的信息化水平。

        參考文獻(xiàn):

        [1] 李春葆, 曾平. Access數(shù)據(jù)庫程序設(shè)計(jì)[M].北京:清華大學(xué)出版社.2007.

        [2] 求是科技.Access信息管理系統(tǒng)開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社.2005.

        [3] 陳可欣.Access VBA數(shù)據(jù)庫高效開發(fā)范例應(yīng)用[M].北京:中國(guó)青年出版社.2005.

        (編輯:隗爽)

        精品久久久久久久久免费午夜福利| 欧美性猛交xxxx乱大交极品| 久久99精品久久水蜜桃| 伴郎粗大的内捧猛烈进出视频观看| 蜜桃在线播放免费一区二区三区 | 视频一区二区三区黄色| 国产精品成人va在线观看| 欧美午夜一区二区福利视频| 精品国产爱在线观看| 一区二区三区av在线| 国产又粗又猛又黄又爽无遮挡 | 色综合久久丁香婷婷| 中文字幕人妻少妇久久| 亚洲乱码av中文一区二区| 激情航班h版在线观看| AV永久天堂网| 精品黄色一区二区三区| 国产精品婷婷久久爽一下| 青青草97国产精品免费观看| 精品九九视频| av国产自拍在线观看| 久人人爽人人爽人人片av| 曰本无码人妻丰满熟妇5g影院| 成人特黄特色毛片免费看| 中文字幕亚洲精品在线| 风流老熟女一区二区三区| 欧美在线资源| 精品国产污黄网站在线观看| 手机在线看片| 国产精品久久久久国产a级| 日本一区二区亚洲三区| 蜜臀av一区二区三区免费观看| 亚洲综合欧美在线一区在线播放| 亚洲偷自拍另类图片二区| 日本免费一区二区在线| 国内免费高清在线观看| 人妻丰满熟妇AV无码区HD| 亚洲视频一区二区蜜桃 | 久久精品99久久香蕉国产| 亚洲男女免费视频| 国产午夜三级精品久久久|