設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 49625|回復: 129
打印 上一主題 下一主題

[轉(zhuǎn)帖]Access數(shù)據(jù)庫開發(fā)技巧(一)(二)(三)(四)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2006-3-23 19:46:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  在當前數(shù)據(jù)庫領(lǐng)域,已有越來越多的人開始采用ACCESS。它是一個功能強大的數(shù)據(jù)庫管理系統(tǒng)和MIS系統(tǒng)開發(fā)工具,具有界面友好、易學易用、開發(fā)簡單、接口靈活等特點。現(xiàn)將本人在使用Access時體會到的一些經(jīng)驗在此與大家交流。

  1. 統(tǒng)一規(guī)劃
  
  所謂數(shù)據(jù)庫設(shè)計是指從對現(xiàn)行非計算機管理的數(shù)據(jù)庫系統(tǒng)的分析到最終實現(xiàn)由計算機管理的數(shù)據(jù)庫系統(tǒng)的全過程。它包括表、查詢、報表等的設(shè)計?偟脑瓌t應(yīng)從提高數(shù)據(jù)處理效率及便于數(shù)據(jù)處理兩方面考慮。
  
  以設(shè)計學生成績管理系統(tǒng)為例,在表的設(shè)計中,是將全校學生成績設(shè)計成一個表,還是分年級設(shè)表,經(jīng)分析按年級設(shè)表將提高數(shù)據(jù)處理速度且便于數(shù)據(jù)的處理,相應(yīng)須設(shè)置一個參數(shù)表以描述各年級的一些情況,這樣以后在進行數(shù)據(jù)處理時可從參數(shù)表中提取有關(guān)參數(shù)?紤]到在輸入學生成績時可能出錯,故應(yīng)設(shè)計相應(yīng)的副成績表,這樣每一成績分二次輸入,然后再建立相應(yīng)的主副查詢來核對主副表中的成績是否一致,不一致則進行修改。再比如要進行十分段、單科每分段、總分每分段等數(shù)據(jù)的統(tǒng)計,可設(shè)計相應(yīng)的表用Visual Basic程序來進行處理并將統(tǒng)計數(shù)據(jù)自動填入相應(yīng)的表中。在字段的設(shè)計中要盡量減少字段數(shù),比如,學生名次有班級名次與年級名次,我們可以將這兩個名次用一個字段來表示,如用“m/ n”表示,“m“表示班級名次,“n“表示年級名次,這同樣可用Visual Basic程序來實現(xiàn)。在設(shè)計報表時是以表為基礎(chǔ)來建立報表還是以查詢?yōu)榛A(chǔ)來建立報表,顯然以查詢?yōu)榛A(chǔ)來建立報表靈活方便,可以方便地通過修改查詢及查詢中的有關(guān)條件從而打印出所需要的報表?傊谶M行數(shù)據(jù)庫設(shè)計時要全盤考慮才能設(shè)計出合理的數(shù)據(jù)庫對象。

  2. 設(shè)置好關(guān)鍵字和表間關(guān)系
  
  表的設(shè)計中關(guān)鍵字的設(shè)置很重要,設(shè)置關(guān)鍵字可以提高查詢等操作的速度。有時可以用多字段作關(guān)鍵字。兩個表的關(guān)系也很重要,比如主成績表與副成績表間若沒有建立正確的關(guān)系,則主副查詢將得不到正確的結(jié)果。

  3. 設(shè)計好字段的缺省值

  字段的缺省值有時也需引起注意。比如,在數(shù)字型字段中,因有些記錄中可能沒有輸入過數(shù)據(jù),在用Visual Basic程序處理時可能會出現(xiàn)一些不正確的結(jié)果(不知這是否是Access 97的Bug),但當將其缺省值設(shè)置為“0”后一切正常。

[此貼子已經(jīng)被作者于2006-6-2 22:44:38編輯過]

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享分享 分享淘帖 訂閱訂閱
2#
 樓主| 發(fā)表于 2006-3-23 19:48:00 | 只看該作者

[轉(zhuǎn)帖]Access數(shù)據(jù)庫開發(fā)技巧(二)

 將窗體、查詢、報表、宏聯(lián)合使用可以解決許多問題,是一項重要的技巧。

  1、從窗體中獲得查詢中的條件
  對于這個問題這里以成績表的打印為例來說明。我們要打印不同班級的成績表,首先建立相應(yīng)報表的查詢,在查詢中的班級字段下的條件中輸入條件:Between [forms]![打印表格]![開始班號] And [forms]![打印表格]![結(jié)束班號]。然后再建立一個“打印表格”窗體,在窗體中添加兩個組合框控件,即“開始班號”、“結(jié)束班號”兩個組合框控件,并且通過“打印表格”窗體中的命令按鈕來執(zhí)行報表的打印,則報表所依賴的查詢中的班級條件可以從“打印表格” 窗體中的“開始班號”、“結(jié)束班號”兩個組合框中所輸入的數(shù)據(jù)而獲得。
 
  2、從窗體中獲得宏中所需要的條件
  對于這個問題現(xiàn)以主副成績比較查詢?yōu)槔齺碚f明。我們可以為不同的科目建立不同的主副成績比較查詢,然后再建立相應(yīng)的宏,在宏中根據(jù)不同的條件如 [選擇科目]=“語文”來打開相應(yīng)科目的查詢。然后再建立一個“主副比較”窗體,在窗體中添加一個組合框控件,即 “選擇科目”組合框控件,并且通過“主副比較”窗體中的命令按鈕來執(zhí)行相應(yīng)的宏,則宏所依賴的條件可以從“主副比較” 窗體中的“選擇科目”組合框中所輸入的數(shù)據(jù)而獲得。

  報表的生成技巧
 
  1、運用查詢生成報表  
  如何產(chǎn)生報表在前面已經(jīng)講過,應(yīng)以查詢?yōu)榛A(chǔ)來建立報表,這樣靈活方便。具體來說就是先由基表生成一個查詢,將條件設(shè)置好,再用報表生成器以該查詢?yōu)榛A(chǔ)生成報表,不需要的字段可以從報表中刪去,若以后需要可再在報表中添上,報表中需要的表頭信息若經(jīng)常變動,也可從窗體中來獲得表頭中所需的信息,可參見前面所述。

  2、表格線的制作
  報表中若需要表格線,不能再用制表符來構(gòu)造,可以在報表的設(shè)計視圖中用畫線工具來制作,程序中不便畫表格線。
3#
 樓主| 發(fā)表于 2006-3-23 19:51:00 | 只看該作者

[轉(zhuǎn)帖]Access數(shù)據(jù)庫開發(fā)技巧(三)

  ACCESS最重要的特征就是一般不必去寫程序,然而可能因為要執(zhí)行復雜或?qū)I(yè)的操作而必須在模塊中用Visual Basic編寫程序,然后通過窗體中的命令按鈕來執(zhí)行相應(yīng)的程序完成相應(yīng)的任務(wù)。比如排名次、分段統(tǒng)計等。在編寫Visual Basic程序時要注意以下一些問題和技巧。

  1、變量的運用
  
 、賹ο笞兞康倪\用
  在Access中運用Visual Basic編寫程序,需要運用其數(shù)據(jù)訪問對象。它包括數(shù)據(jù)庫引擎(DBEngine)、工作空間(Workspace)、數(shù)據(jù)庫以及數(shù)據(jù)庫對象中的表、查詢、記錄集等對象。如缺省工作空間:DBEngine.Workspaces(0),當前數(shù)據(jù)庫:DBEngine.Workspaces(0).Databases(0)。我們可以用一個對象變量來表示一個對象,這樣將為編程帶來很大方便。為對象變量賦值要用Set語句,而不要直接賦值。例如:
  Dim thedb As Database
  Set thedb = DBEngine.Workspaces(0).Databases(0)
  
 、赩ariant 數(shù)據(jù)類型的運用
  Variant 數(shù)據(jù)類型是所有沒被顯示聲明(如 Dim、Private、Public 或 Static等語句)為其他類型變量的數(shù)據(jù)類型。Variant 是一種特殊的數(shù)據(jù)類型,除了定長 String 數(shù)據(jù)及用戶定義類型外,可以包含任何種類的數(shù)據(jù)。Variant 也可以包含 Empty、Error、Nothing 及 Null特殊值。Empty 值用來標記尚未初始化(給定初始值)的 Variant 變量。內(nèi)含 Empty 的 Variant 在數(shù)值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。Null 表示未知數(shù)據(jù)或丟失的數(shù)據(jù),即無效數(shù)據(jù)。不應(yīng)將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數(shù)據(jù)。
  當有些量可能出現(xiàn)Null值時,可將該變量定義為Variant 數(shù)據(jù)類型。Variant 數(shù)據(jù)類型為編程者提供很大的靈活性,但犧牲了代碼的速度和長度。

 、弁ㄟ^變量來間接引用數(shù)據(jù)庫對象及限定條件
  為了增加靈活性,提高控制能力,減少代碼的重復和運用循環(huán)語句,在程序中應(yīng)充分運用變量來間接引用數(shù)據(jù)庫對象和限定條件。比如各個年級學生成績排名次的處理程序,只是各年級的成績表名不同,我們可以將程序中的成績表名用一個變量如“bzcjb”來表示,具體處理時再替換為具體的表名,如替換為高一年級的成績表名“g1cjb”。

  在具體運用中有一些問題要注意,如:
  Dim thedb As Database
  Set thedb = DBEngine.Workspaces(0).Databases(0)
  Dim thecsb As Recordset
  Set thecsb = thedb.OpenRecordset(bzcjb, DB_OPEN_DYNASET)
  這里“bzcjb”可代表任意一個成績表,若“bzcjb”本身就是一個已存在的數(shù)表名,則上述最后一個語句中的“bzcjb”應(yīng)加上引號,如下所示:
  Set thecsb = thedb.OpenRecordset("bzcjb", DB_OPEN_DYNASET)

  再比如Dcount 函數(shù)可用于確定特定記錄集中的記錄數(shù)。可以在 Visual Basic、宏、查詢表達式,或計算控件中使用 DCount 函數(shù)。
  語法是:DCount(expr, domain[, criteria])
  其參數(shù)如下:
  expr 表達式,用于標識將統(tǒng)計其記錄數(shù)的字段。可以是一個標識表或查詢中字段的字符串表達式。 Expr可為字段的名稱或“*”,除非是“*”, Dcount 函數(shù)對包含空字段的記錄不記數(shù),若為“*”,Dcount 函數(shù)計算記錄總數(shù)。domain字符串表達式,代表組成域的記錄集,可以是表的名稱或查詢的名稱。criteria 可選的字符串表達式,用于限制 DCount 函數(shù)執(zhí)行的數(shù)據(jù)范圍。對于其限制條件criteria 可用一個變量來代替,比如要統(tǒng)計表“g1cjb”中字段“語文”分數(shù)大于等于80分的人數(shù),可用下式來完成:
  DCount("*", "g1cjb", " [班級]>=80")
  假若用數(shù)字型變量“n”來替換“80”則如下:
  DCount("*", "g1cjb", " [班級]>=" & n)
  假若用字符型變量“n”來替換“80”則如下:
  DCount("*", "g1cjb", " [班級]>='" & n & "'")
  要注意替代的形式是不同的。上面的符號“&”是連接運算符。

  2、如何產(chǎn)生程序運行進度框

  若在程序運行時能產(chǎn)生一個程序運行進度框?qū)黾硬簧贅啡,ACCESS可以實現(xiàn)這一要求。本人在實踐中摸索出一種簡單的方法,就是通過在窗體中建兩個文本框,一個大一點的長條形文本框(填充色為白色),作為外框,一個窄一點的長條形文本框(填充色為其他彩色,長度取為0.011厘米),作為產(chǎn)生程序運行流水線用,它們的初始狀態(tài)均為不可見。然后在程序中控制其屬性為可見的且修改進度流水線文本框的寬度來顯示程序的進展情況。要注意的是為了讓進度框在程序運行時能及時顯示出來必須用SetFocus 方法將焦點移動到進度框上,并且要調(diào)整好流水線文本框與外框文本框的初始位置。注意,在用Width 屬性改變控件寬度時其單位為“Twip”,1Twip=1/1440英寸,約為1/567厘米。

[此貼子已經(jīng)被作者于2006-3-23 11:52:08編輯過]

4#
 樓主| 發(fā)表于 2006-3-23 19:55:00 | 只看該作者

[轉(zhuǎn)帖]Access數(shù)據(jù)庫開發(fā)技巧(四)

 各子系統(tǒng)集成的技巧

  1、選項組、開關(guān)按鈕、組合框等控件的運用
  在窗體上將這些控件巧妙地加以運用可以有機地將有關(guān)系統(tǒng)通過一個窗體來控制,這些控件選擇值可以傳遞到查詢、報表及宏中的條件中去,從而使得對查詢、報表及宏的控制顯得靈活方便。

  2、選項卡控件的運用
  在 ACCESS97 版中新增加了“選項卡”控件,這更使Access可以在有限的窗體中集成更多的子系統(tǒng)。比如在“打印表格”窗體中就可集成“成績表”、“十分段統(tǒng)計表”、單科每分段統(tǒng)計表“等子系統(tǒng)”,每個子系統(tǒng)對應(yīng)一個標簽頁。

  3、開關(guān)面板窗體的運用
  運用開關(guān)面板窗體可以將所有的子窗體集成到一起。開關(guān)面板窗體可以運用新建一個窗體并在其上放置各命令按鈕來集成各子系統(tǒng)窗體的方法來建立。開關(guān)面板窗體可以說就是一個系統(tǒng)主窗體,它可以指引用戶選擇所需進行的操作。我們也可以運用Access中的“開關(guān)面板管理器”來建立開關(guān)面板窗體。具體方法如下:
 、賳螕簟肮ぞ摺、“加載項”,然后單擊“開關(guān)面板管理器”命令。
 、谌绻 Microsoft Access 詢問是否要新建開關(guān)面板時,請單擊“是”按鈕。
 、墼凇伴_關(guān)面板管理器”對話框中,單擊“編輯”按鈕。
 、茉凇熬庉嬮_關(guān)面板頁面”對話框中的“開關(guān)面板名”框中輸入開關(guān)面板的名稱,然后單擊“新建”按鈕。
  ⑤在“編輯開關(guān)面板項目”對話框的“文本”框中,為第一個開關(guān)面板按鈕輸入相應(yīng)的文本,然后在“命令”框中單擊所需的命令。如在“文本”框中輸入“打印表格”,然后單擊“命令”框中的“以編輯方式打開窗體”命令。
 、轒icrosoft Access 是否會在“命令”框下顯示另一方框取決于單擊的命令。如果有必要,請單擊該方框中的項目。例如,如果在步驟 5 的“命令”框中單擊了“以編輯方式打開窗體”命令,可以在“窗體”框中單擊要打開的窗體名稱,例如“打印表格”,然后單擊“確定”按鈕。
  ⑦重復步驟 4 至 6,直到已經(jīng)在開關(guān)面板中添加了所有要添加的項目。如果要編輯或刪除項目,可以在“開關(guān)面板上的項目”框中單擊該項目,然后單擊“編輯”或“刪除”按鈕。如果要重新安排項目,可以在框中單擊項目,然后單擊“往上移”或“往下移”按鈕。
 、鄦螕簟瓣P(guān)閉”按鈕。

  其它技巧

  1、經(jīng)常壓縮數(shù)據(jù)庫
  當對數(shù)據(jù)庫進行了不斷的增加、刪除對象等修改工作后,數(shù)據(jù)庫可能會變成碎片保存,并且不能有效地使用磁盤空間。定期壓縮數(shù)據(jù)庫可以重組文件并釋放磁盤空間,提高效率。方法:單擊“工具”、“數(shù)據(jù)庫實用工具”、“壓縮數(shù)據(jù)庫”命令。據(jù)有關(guān)資料介紹,新版ACCESS 2000能在每次關(guān)閉數(shù)據(jù)庫文件時自動完成這項工作,這將給我們帶來很大的方便。

  2、多用戶下的設(shè)置
  如果想讓數(shù)據(jù)庫在網(wǎng)絡(luò)上共享,比如在網(wǎng)絡(luò)上同時由幾個人輸入、或者修改數(shù)據(jù),則必須設(shè)置好多用戶選項。
設(shè)置多用戶選項的方法是:
 、僭凇肮ぞ摺辈藛紊蠁螕簟斑x項”命令。
 、趩螕簟案呒墶边x項卡即可進行設(shè)置。

  3、加密及生成“.mde”文件
  為使數(shù)據(jù)庫系統(tǒng)不被它人破壞,可以加密數(shù)據(jù)庫或?qū)?shù)據(jù)庫生成為“.mde”文件。將數(shù)據(jù)庫保存為 “.mde” 文件將編譯所有模塊、刪除所有可編輯的源代碼并且壓縮目標數(shù)據(jù)庫。Visual Basic 程序代碼將繼續(xù)執(zhí)行,但是不能進行查看或編輯,并且數(shù)據(jù)庫的大小將因程序代碼的刪除而減少。除此之外,內(nèi)存將優(yōu)化使用,這將有助于提高性能。將數(shù)據(jù)庫保存為 “.mde” 文件可防止下列操作:在“設(shè)計”視圖中查看、修改或創(chuàng)建窗體、報表或模塊,不能進行查看或編輯Visual Basic 程序代碼。生成 “.mde” 文件的方法是:
  ①關(guān)閉數(shù)據(jù)庫。如果正在多用戶環(huán)境中工作,請確保所有其他用戶已經(jīng)關(guān)閉數(shù)據(jù)庫。
  ②在“工具”菜單上,指向“數(shù)據(jù)庫實用工具”,然后單擊“生成 MDE 文件”命令。
 、墼凇氨4鏀(shù)據(jù)庫為 MDE”對話框上,指定要另存為 MDE 文件的數(shù)據(jù)庫,并且單擊“生成 MDE”按鈕。
 、茉凇氨4 MDE 為”對話框上,指定數(shù)據(jù)庫的名稱、驅(qū)動器以及文件夾。

  結(jié)束語

  Access是一個功能強大的數(shù)據(jù)庫管理系統(tǒng),由于篇幅所限本文就談到這里,愿這點經(jīng)驗體會能對有興趣的朋友提供一點幫助。
5#
發(fā)表于 2006-4-16 11:53:00 | 只看該作者
辛苦了

6#
發(fā)表于 2006-4-17 02:29:00 | 只看該作者
敬禮。
7#
發(fā)表于 2006-4-17 21:41:00 | 只看該作者
先看一下
8#
發(fā)表于 2006-5-11 19:38:00 | 只看該作者
支持一下!
9#
發(fā)表于 2006-5-19 22:18:00 | 只看該作者
可以
10#
發(fā)表于 2006-5-22 06:42:00 | 只看該作者
不錯,我正在找.謝謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 08:37 , Processed in 0.174574 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表