羅斯文數(shù)據(jù)庫講解_第1頁
羅斯文數(shù)據(jù)庫講解_第2頁
羅斯文數(shù)據(jù)庫講解_第3頁
羅斯文數(shù)據(jù)庫講解_第4頁
羅斯文數(shù)據(jù)庫講解_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.羅斯文庫是Access自帶的示例數(shù)據(jù)庫,也是一個很好學(xué)習(xí)教程。讓我們一起來學(xué)習(xí)一下吧。通過羅斯文數(shù)據(jù)庫的學(xué)習(xí),能對數(shù)據(jù)庫的表、關(guān)系、查詢、報表、窗體、切換面板等內(nèi)容有個全面的了解。我們做數(shù)據(jù)庫開發(fā),應(yīng)該來講是現(xiàn)實生活中一種管理思路的體現(xiàn)與高度概括。那么要構(gòu)思之前肯定要對整個流程有個清晰的了解。那我們就先來了解一下這個羅斯文公司的業(yè)務(wù)流程吧。羅斯文公司是一個虛構(gòu)的商貿(mào)公司,該公司進行世界范圍的食品的采購與銷售,就是通常所講的買進來再賣出去,賺取中間的差價。羅斯文公司銷售的食品分為幾大類,每類食品又細(xì)分出各類具體的食品。這些食品由多個供應(yīng)商提供,然后再由銷售人員售給客戶。銷售時需要填寫訂單,并由

2、貨運公司將產(chǎn)品運送給客戶。要打開“羅斯文數(shù)據(jù)庫”,先啟動Access,從“幫助”菜單選擇“示例數(shù)據(jù)庫”“羅斯文數(shù)據(jù)庫”即可。如你所安裝的是精簡版不帶有示例數(shù)據(jù)庫,那就從網(wǎng)上下載一個吧。羅斯文數(shù)據(jù)庫示例下載: 圖一注:本教程著重在實例講解,不含最基本的一些概念及操作說明,如需學(xué)習(xí)基礎(chǔ)教程請自己看書或參考其他教程。首先要做的事是設(shè)計表,表的設(shè)計思路就是將數(shù)據(jù)分類,同一類的數(shù)據(jù)放在一個表中,并且有一個字段與其他表之間建立聯(lián)系。而且要盡可能的細(xì)分,以最大限度的保證每個表中不存在重復(fù)的數(shù)據(jù)資料。比如說銷售訂單吧,肯定要記錄客戶的具體資料如名稱、地址、電話等方便聯(lián)系;還要記錄訂單的日期,運費等;以及每張訂

3、單中都有哪些具體的產(chǎn)品、數(shù)量、價格等信息。如果我們把這么多信息記錄在一張表里的話,那就要錄入許多重復(fù)的信息,比如客戶的資料,不僅很麻煩還很容易出錯。所以應(yīng)該細(xì)分為客戶表專門維護客戶的信息;訂單表記錄訂單的日期,運費;訂單名細(xì)表記錄具體的產(chǎn)品數(shù)量及價格;另外還需要產(chǎn)品表、供應(yīng)商表、雇員表、運貨商表及類別表。“羅斯文數(shù)據(jù)庫”中共有個表,選中表,以詳細(xì)信息的視圖來查看各個表的說明,見圖二。 圖二 關(guān)于數(shù)據(jù)庫的基本組成表,查詢,窗體等及表的基本組成字段,記錄等概念就不用再講了吧。其中一些常用的知識將在示例中一起講解。在表設(shè)計中重點要掌握的是數(shù)據(jù)類型、字段屬性的設(shè)置與應(yīng)用。一、 數(shù)據(jù)類型的用法文本用于存

4、儲不需要計算的數(shù)字,文本、其他字符或組合內(nèi)容。最多可存儲255個漢字,英文或字符。備注用于存儲長文本和數(shù)字。如注釋或說明。最多可存儲65536個漢字,英文或字符。數(shù)字用于存儲要進行計算的數(shù)據(jù)。如庫存量,銷售數(shù)量等。日期/時間用于存儲日期和時間,如出生日期,發(fā)貨日期等。要注意日期型數(shù)據(jù)要注意分隔符的正確使用。以“-”,“/”分隔年月日,如“2007-01-10”,而“2007.01.10”這種格式是錯誤的。貨幣用于存儲貨幣值,計算期間禁止四舍五入,精度較高。如單價。自動編號用于在添加記錄時自動插入一個唯一不重復(fù)的編號,如員工編號等。一般用作主鍵。是/否用于存儲二選一的數(shù)據(jù),如“是/否”,“真/假

5、”,“開/關(guān)”等。OLE對象用于存儲一些用其他應(yīng)用程序創(chuàng)建的對象,如WORD文檔,EXCEL表格,圖片等。如員工照片。超鏈接用于存儲超鏈接。如網(wǎng)址,EMAIL地址。10查閱向?qū)Р殚喯驅(qū)г试S用戶使用組合框或列表框選擇來自其他表或來自值列表的數(shù)據(jù)。在表設(shè)計視圖新增該數(shù)據(jù)類型的字段會啟動向?qū)нM行定義。二、 字段屬性字段屬性是指字段擁有的一些特點,不同數(shù)據(jù)類型的字段,屬性也不盡相同,常用的屬性如下:字段大小文本型字段,默認(rèn)的大小為50;數(shù)字型字段,默認(rèn)大小為長整型;自動編號的字段,默認(rèn)大小也是長整型。格式格式屬性決定了單元格中數(shù)據(jù)的顯示和打印方式,所看到的并不一定就是表中所存儲的。小數(shù)位數(shù)小數(shù)位數(shù)屬性

6、決定了在單元格中顯示幾位小數(shù)。如設(shè)為0,將不顯示小數(shù)。輸入掩碼輸入掩碼屬性決定了數(shù)據(jù)輸入和保存的方式。標(biāo)題標(biāo)題屬性影響著字段的顯示名稱,默認(rèn)情況下,標(biāo)題與字段名相同,也可以輸入不同內(nèi)容,在數(shù)據(jù)表視圖中打開表時,將看到字段的列標(biāo)題與標(biāo)題屬性相同。默認(rèn)值在默認(rèn)值中填入數(shù)據(jù)時,在新增記錄時將自動將該值添加到相應(yīng)的字段中。有效性規(guī)則有效性規(guī)則用于限制在字段中輸入的數(shù)據(jù),在數(shù)據(jù)錄入后,自動檢查是否滿足有效性規(guī)則,如不滿足則發(fā)出警告,不接受錄入值。如在單價字段的在效性規(guī)則中填入:0,即可防止忘記填寫該數(shù)據(jù),或誤填入負(fù)數(shù)。有效性文本在用戶錄入時如違反有效性規(guī)則時,系統(tǒng)會發(fā)出警告,而如果有效性文本中填入了內(nèi)容

7、,則在提示時,對話框中會顯示有效性文本中的內(nèi)容,替代系統(tǒng)的提示內(nèi)容。必填字段必填字段如果設(shè)為是,那么在錄入數(shù)據(jù)時必須在該字段填入相應(yīng)的數(shù)據(jù)。10允許空字符串字符串的概念是以字符形式存儲的數(shù)據(jù),一般要在字符串的兩端加上英文的雙引號,如”abc”等,而在文本和備注型的字段中,無需加入英文雙引號,錄入數(shù)據(jù)會直接作為字符串處理。如果允許空字符串設(shè)為否,將不允許輸入空字符串。這里要注意的是空字符中”與空格字符串是不同的” ”,前者雙引號中沒有空格。11輸入法模式輸入法模式可以設(shè)為開啟或關(guān)閉,根據(jù)字段中是否要輸入中文字,做好設(shè)置,可以避免錄入人員在中英文輸入法之間做切換。12索引索引用于加快排序,查詢和分

8、組操作的速度。索引的值有3種,如果字段為主鍵,將自動設(shè)索引的屬性為有(無重復(fù)),另外兩種是有(有重復(fù))和無。索引屬性中只能設(shè)置單一字段的索引,如果要設(shè)置多字段索引,可在設(shè)計視圖中,點擊工具欄的索引(或菜單視圖索引),在索引框中設(shè)置。圖三具體的用法及示例將結(jié)合羅斯文示例進行說明。表的具體分析:一、“供應(yīng)商”表 供應(yīng)商表記錄的是為羅斯文公司提供貨源的廠商記錄圖四 選擇 “供應(yīng)商”表,單擊“設(shè)計”按鈕,進入表設(shè)計視圖,表中的字段包括了常用的聯(lián)系信息。圖五 我們重點來關(guān)注一下“供應(yīng)商ID”字段。這是一個自動編號類型的字段,在表中具有唯一性,一般的我們設(shè)計的表中都需要一個唯一的不重復(fù)的字段,我們可以把該

9、字段設(shè)為主鍵,該字段將會用于與其他表之間建立關(guān)系。 表中的大部分字段都是文本類型,大小可以根據(jù)實際要輸入的內(nèi)容來設(shè)置,比如城市,地區(qū)的字段設(shè)為,而地址的字段大小是。采用合適的大小會盡可能的減少存儲空間的占用。一般不需要進行數(shù)據(jù)計算的字段我們都用文本類型來存儲。 主頁和Email之類的可以采用起超鏈接類型。 查看該表中的索引圖六 可以發(fā)現(xiàn)公司名稱和郵政編碼字段的索引屬性為有(有重復(fù))也即唯一索引為否,主要是為了通過索引加快對這兩個字段的查詢等操作,有重復(fù)說明該字段中的數(shù)據(jù)是有可能重復(fù)的,比如兩個公司在同一地區(qū),那郵政編碼就是一樣的。 另外我們在常規(guī)屬性中除了字段大小屬性以外,還有其他的一些屬性,

10、可以在相應(yīng)的欄內(nèi)點,查看相應(yīng)的幫助。二、“類別”表 劃分類別是表設(shè)計時的必須要考慮的,因為不同類別的產(chǎn)品可能由不同的部門負(fù)責(zé)銷售,為了方便統(tǒng)計出各類產(chǎn)品或部門的銷售情況,須將產(chǎn)品進行分類。類別表中將產(chǎn)品分為8大類。圖七 選擇類別表,點設(shè)計,進入設(shè)計計視圖圖八 可以看到“類別ID”是自動編號類型,用作主鍵; 說明字段,數(shù)據(jù)類型為備注,在實際操作中如果要說明的字?jǐn)?shù)不會超過255個字符,可以采用文本類型,這樣更節(jié)省空間。 圖片字段的數(shù)據(jù)類型是OLE對象,OLE對象在表中不能直觀地看到圖片,如果要查看圖片可以在字段上雙擊,如需插入,則在圖片字段上單擊右鍵,選擇“插入對象”,再從對話框中選擇“由文件創(chuàng)建

11、”,瀏覽到所需圖片,也可以鏈接對象,這樣只是保存了鏈接地址,不會直接把文件插入數(shù)據(jù)庫。三、“產(chǎn)品”表 產(chǎn)品表中保存了羅斯文公司銷售的各種產(chǎn)品的明細(xì)數(shù)據(jù)。這個表清楚的記載了每個產(chǎn)品是屬于什么類別,供應(yīng)商是誰,庫存量,單價等信息,是填寫訂貨單時的重要依據(jù)。圖九 選中“產(chǎn)品”表,點設(shè)計,進入設(shè)計視圖 “產(chǎn)品ID”是自動編號類型的主鍵; 單價,庫存量,訂購量,再訂購量字段中設(shè)置的有效性規(guī)則與有效文本性文本屬性,可以學(xué)習(xí)一下; “中止”字段的數(shù)據(jù)類型是“是/否”型,這對于處理兩選一的結(jié)果最為合適; 重點來關(guān)注一下“供應(yīng)商ID”和“類別ID”,這兩個字段都是數(shù)字類型,分別對應(yīng)“供應(yīng)商”表中主鍵和“類別”表

12、中的主鍵。先來看下“供應(yīng)商ID”,這個字段的標(biāo)題屬性中填的是“供應(yīng)商”,這樣在數(shù)據(jù)表視圖中,看到的字段標(biāo)題就會是“供應(yīng)商”,而不是默認(rèn)的“供應(yīng)商ID”。另外這兩個字段都是查閱列,這是一個很有用的屬性,我們對“供應(yīng)商ID”作一下詳細(xì)的講解,“類別ID”與“供應(yīng)商ID”的設(shè)置方法相同。查閱列我們在表中輸入數(shù)據(jù)時,經(jīng)常會遇到需要重復(fù)輸入的內(nèi)容,比如人員的性別為“男”或“女”,這是單表中的重復(fù)錄入;比如產(chǎn)品表中需要輸入“供應(yīng)商”,而“供應(yīng)商”字段在“供應(yīng)商”表中已經(jīng)錄入過了,這屬于跨表的重復(fù)錄入。這些內(nèi)容如果直接錄入不僅花費了用戶較多的時間,而且極容易出錯。為了方便用戶錄入重復(fù)性的數(shù)據(jù),可以借助ACC

13、ESS提供的查閱列的功能。圖首先來看下查閱列中的各項具體屬性顯示控件圖從顯示控件右側(cè)的下拉框中可以看到該屬性可以設(shè)為文本框,列表框或組合框。如果設(shè)為文本框,那數(shù)據(jù)就只有接受從文本框中的錄入,查閱的其他屬性都不可用。我們主要要掌掘的是列表框和組合框的使用。組合框和列表框的使用基本相同,只是列表框除了可以從列表中選擇還可以接受錄入,相當(dāng)于是列表框各文本框的組合。行來源類型圖行來源類型是指控件中的數(shù)據(jù)來自于何處。共有三處選擇,表/查詢,值列表,字段列表。如果選擇“表/查詢”,則列表框或組合框中的數(shù)據(jù)將來源于其他表或查詢中的結(jié)果。如果要錄入其他表中已經(jīng)存在的數(shù)據(jù),或錄入從幾個表中查詢得到的結(jié)果,用這個

14、選項最為方便。如果選擇“值列表”,只需在行來源中直接輸入列表中的數(shù)據(jù),并用英文分號隔開即可。這種類型只適合于輸入的內(nèi)容固定在某幾個值之間,如性別的值可以是“男”或“女”。如果選擇“字段列表”,該字段中將填入某個表中的字段名稱信息。這種類型較少用到, “表/查詢”的使用就包含了這種簡單的用法。行來源“行來源”中是列表框或組合框中將要列出的數(shù)據(jù)。如果“行來源類型”是“表/查詢”,可單擊“行來源”右側(cè)的下拉箭頭,選擇某個表或查詢,以該表或查詢中的數(shù)據(jù)作為列表框或組合框中的數(shù)據(jù)。如果沒有直接的查詢可用,也可以單擊右側(cè)的生成器 ,在查詢生成器中直接創(chuàng)建SQL語句。如果“行來源類型”是“值列表”,直接輸入

15、即可,如“男;女;”如果“行來源類型”是“字段列表”,可單擊右側(cè)的下攔箭頭,選擇某個表,以該表中的字段名稱作為列表框或組合框中的數(shù)據(jù)。綁定列在列表框或組合框中進行選擇時,所顯示出來的數(shù)據(jù)并不一定就是存儲在該字段中的內(nèi)容。在“綁定列”中設(shè)置的列中的值才是表中真正存儲的值。列數(shù)在列表框或組合框中所顯示的列數(shù),可以同時顯示表中的多列。列標(biāo)題用字段名稱,字段標(biāo)題或首行數(shù)據(jù)作為列表框或組合框中列的標(biāo)題。如果在列表框或組合框中同時顯示多列時,加上標(biāo)題方便識別各列的內(nèi)容。列寬列表框或組合框中有多列時,可指定每列的寬度,每列寬度之間以英文分號分隔。如列數(shù)為3列,則可設(shè)列寬為:2;2;2,系統(tǒng)會自動加上cm單位

16、;如果某一列無需顯示,則列寬設(shè)為0即可。如:0;2;2。列表行數(shù)是指在組合框中一次最多可以顯示的行數(shù),其余的數(shù)據(jù)需拖動滾動條查看。列表寬度在組合框中,列表框部分的寬度,可以設(shè)為“自動”,也可以設(shè)為數(shù)值。10限于列表在組合框中,如果允許輸入除列表框中值以外的數(shù)據(jù),則選擇“否”。如果值必須為列表中的一項時,則選擇“是”。示例:在“產(chǎn)品”表中,設(shè)置“供應(yīng)商ID”字段的查閱列屬性在數(shù)據(jù)庫窗口中,選擇“產(chǎn)品”表,單擊設(shè)計,進入設(shè)計視圖??梢栽谧詈笠粋€字段的下面的第一個空白行,輸入新字段名稱“供應(yīng)商2”,設(shè)置完相關(guān)屬性后,可以與“供應(yīng)商ID”字段進行比較。數(shù)據(jù)類型改為數(shù)字,在這里說明一下,在表中相關(guān)聯(lián)的兩

17、個字段的數(shù)據(jù)類型必須相同,而且字段大小也要相同。在本例中因為在“供商表”,“供應(yīng)商ID”字段是自動編號類型,自動編號的字段默認(rèn)大小是長整型,所以在這里“供應(yīng)商2”的數(shù)據(jù)類型必須為數(shù)字,字段大小為長整型。在下半部分窗口中選擇“查閱”選項卡,將顯示控件改為組合框。圖在行來源類型中選擇“表/查詢”。點擊行來源右側(cè)的生成器 按鈕,在顯示表中,選中“供應(yīng)商”表,點添加后關(guān)閉。從表中選擇字段供應(yīng)商ID,公司名稱,可以雙擊,也可以拖入下方的字段中。設(shè)置公司名稱字段的排序為升序,代表組合框中的供應(yīng)商按名稱進行排序。圖點關(guān)閉按鈕,跳出提示窗口圖點“是”在綁定列中填入1,代表該字段存儲的值是查詢結(jié)果中第一列“供應(yīng)

18、商ID”中的值。要求這兩者的數(shù)據(jù)類型必須相同,本例中都為長整型。在列數(shù)中填入2,代表有兩列。列標(biāo)題選“否”。列寬中填入0;2。羅斯文示例中,第2列的寬并沒有填入,這是因為列表寬度設(shè)為了自動,不隱藏的寬度都會根據(jù)字段的大小自動顯示出來。列表行數(shù)默認(rèn)為8。10列表寬度為自動,限于列表選“是”。圖11關(guān)閉設(shè)計視圖并保存修改,切換到數(shù)據(jù)表視圖,體會查閱列的用法??蛻舯砑斑\貨商表 “客戶”表記錄的是羅斯文公司的客戶信息,類似于“供應(yīng)商”表。 通過對“客戶”表設(shè)計視圖的查看可以發(fā)現(xiàn)表中的“客戶ID”字段與前幾個表中的ID字段不同,沒有采用自動編號的數(shù)據(jù)類型,而是用了文本類型,長度為。這個“客戶ID”字段也

19、是作為主鍵的,也就是說不允許在該表中輸入重復(fù)的客戶代碼。在“客戶ID”字段中還設(shè)置了“輸入掩碼”的屬性,“LLLLL”,“”是將所有輸入的字符自動轉(zhuǎn)為大寫,這樣在輸入時就不用理會大小寫,“L”代表字母A-Z,是必選項。這樣設(shè)置的意思就是在“客戶ID”字段中必須輸入5個字母,不能輸入其他的字符或者少一位。 “輸入掩碼”可以幫助客戶準(zhǔn)確地輸入數(shù)據(jù),避免不必要的錯誤。比如可以用“0000999”來作為身份證的輸入掩碼,既可以輸入15位數(shù)字,也可以輸入18位數(shù)字,這里的和9都是輸入掩碼的常用控制字符,0代表必選的數(shù)字項,9代表可選的數(shù)字和空格。如果想了解有關(guān)更多的輸入掩碼,可以把光標(biāo)放在這一屬性欄里,

20、按F1查看幫助,學(xué)會用幫助可是個好習(xí)慣哦。 另外“格式”屬性也是對字段的格式作的規(guī)范,要注意兩者的區(qū)分?!拜斎胙诖a”是控制輸入和保存方式的,而“格式”屬性是控制輸出和打印方式的,如在“輸入掩碼”中使用“”代表的是不管輸入字符是大寫還是小寫,在數(shù)據(jù)庫中保存的都會是大寫的字符,而如果在“格式”中使用“”代表的是在該字段中顯示為大寫,而不管實際存在數(shù)據(jù)庫中字符的大小寫。如果一個字段既定義了“格式”屬性又定義的“輸入掩碼”屬性,則在顯示數(shù)據(jù)時,“格式”屬性優(yōu)先于“輸入掩碼”屬性,而在保存數(shù)據(jù)時則相反。 “客戶”表中其他字段都采用文本類型。 “運貨商”表記錄的是幫助羅斯文公司運送貨物的公司的聯(lián)系信息。這

21、個表中沒有新的知識點,不再進行細(xì)講。雇員表 “雇員”表記錄的是羅斯文公司的雇員信息。 雇員的姓氏和名字分別用兩個字段來代表,這樣設(shè)計是考慮到能把信息拆分的更細(xì),方便對更細(xì)的信息進行處理,比如可以按照姓氏來進行統(tǒng)計等等,當(dāng)然如果沒有這種必要的話,完全可以用姓名一個字段來處理。本例中對地址和電話都進行了拆分的處理方法。 選中“雇員”表,單擊設(shè)計按鈕,進入表設(shè)計視圖?!肮蛦TID”是自動編號的主鍵,“出生日期”是“日期/時間”類型,它的“格式”屬性是“yyyy-mm-dd”,表示顯示時的格式,“有效性規(guī)則”屬性是“”,“=”,“=”,“”,“=”;邏輯運算符“and”,“or”,“not”;連接運算符

22、“&”,“+”;及常用的!和.(點)運算符。常見的操作數(shù)如字符串,日期/時間值,常量,變量,函數(shù)及引用窗體或報表中的字段值,控件值或?qū)傩缘?。常見表達式示例:數(shù)學(xué)及比較運算表達式表達式說明=數(shù)量*價格計算數(shù)量與價格的乘積,可以得出總價=到貨日期-發(fā)貨日期計算兩個日期之間的天數(shù)2500比2500大的數(shù)日期表達式表達式說明Between #1997-01-01# And #1997-12-31#在1997-01-01各1997-12-31之間的數(shù)據(jù)#2007-12-30#2007-12-30以前的數(shù)據(jù)30大于30歲的男性數(shù)據(jù)= “中國” & “北京”值為 “中國北京”通配符表達式表達式說明Like

23、“張*”以張開頭的數(shù)據(jù)Like “張?”以張開頭后面還有一個字的數(shù)據(jù)聚合函數(shù)表達式表達式說明Sum(數(shù)量*價格)求數(shù)量和價格相乘后的和Avg(費用)求費用的平均值Count(*)計算記錄條數(shù)“當(dāng)前產(chǎn)品列表”查詢當(dāng)前產(chǎn)品列表統(tǒng)計出未被中止的產(chǎn)品。 在數(shù)據(jù)庫的查詢對象窗口,雙擊“在設(shè)計視圖中創(chuàng)建查詢”或單擊“新建”按鈕,在跳出的“新建查詢”的窗口中選擇“設(shè)計視圖”,進入設(shè)計視圖界面,從顯示表中添加“產(chǎn)品”表。選中“產(chǎn)品ID”,“產(chǎn)品名稱”,“中止”三個字段(注:選中字段可以把字段從設(shè)計視圖界面的上方拖到下方,也可以雙擊字段名稱),去掉“中止”下面“顯示”的勾,在條件一欄輸入“no”,代表只查詢出未

24、被中止的產(chǎn)品,但只要顯示產(chǎn)品的ID和名稱就行了,是否中止的狀態(tài)不用顯示出來。我們還想將輸出的結(jié)果按照產(chǎn)品名稱進行排序,在“產(chǎn)品名稱”下面的“排序”欄里選中升序。這樣查詢就完成了,點保存,給查詢起個名字就可以了。 我們打開羅斯文數(shù)據(jù)庫中的當(dāng)前產(chǎn)品列表查詢,會發(fā)現(xiàn)數(shù)據(jù)源是“產(chǎn)品列表”,不是“產(chǎn)品”表,這里是用到了表的別名,一般的我們在查詢中為了方便,經(jīng)常會給比較長的表名取個短一些的名稱,更方便引用表。方法是在顯示的表上點擊鼠標(biāo)右鍵,選擇屬性,在別名中填上合適的別名就行了。本例中其實完全沒有這個必要,可能只是想讓大家了解這樣一個用法而已“各類產(chǎn)品”查詢 各類產(chǎn)品查詢?yōu)楦黝惍a(chǎn)品報表提供數(shù)據(jù)源,在查詢對

25、象中選中“各類產(chǎn)品”,單擊“設(shè)計”按鈕, 我們發(fā)現(xiàn)默認(rèn)的是按SQL視圖顯示的,這時從“視圖”中選擇“設(shè)計視圖”即可顯示設(shè)計視圖,當(dāng)然要再切換到SQL視圖,再從“視圖”中選擇“SQL視圖”即可。通過在“設(shè)計視圖”中設(shè)計查詢,再切換到“SQL視圖”中查看SQL語句也是我們學(xué)習(xí)SQL語句的方法。 查詢的數(shù)據(jù)來自“類別”表和“產(chǎn)品”表,“類別名稱”字段和“產(chǎn)品名稱”字段的“排序”都是升序,查詢結(jié)果將先按類別名稱排序,當(dāng)類別名稱相同時再按照產(chǎn)品名稱排序。中止條件為“no”,結(jié)果只包含未被中止的產(chǎn)品?!鞍礉h語拼音順序的產(chǎn)品列表”查詢 這個查詢是為“按漢語拼音順序的產(chǎn)品列表”報表提供數(shù)據(jù)源的。雙擊查詢即可運

26、行并顯示查詢的結(jié)果,在查詢結(jié)果中并未按拼音順序來排列,這個功能是在報表中實現(xiàn)的。進入設(shè)計視圖 這個查詢的數(shù)據(jù)來自兩個表,“類別”表和“產(chǎn)品”表。查詢的結(jié)果中只包含未被中止的產(chǎn)品,因此在產(chǎn)品字段上設(shè)置了條件,這里代表“否”,在ACCESS中用代表“否”,F(xiàn)ALSE,“假”,而用-1代表“是”,TRUE,“真”十種最貴的產(chǎn)品 進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于表“產(chǎn)品”,選用的字段只有產(chǎn)品名稱和單價兩個,如果要給選擇的字段另外取個名稱,可以給這個字段前面添加名稱,中間用英文狀態(tài)的冒號“:”隔開,如上圖。 要查詢出十種最貴的產(chǎn)品,只要將產(chǎn)品按產(chǎn)品單價降序來排列再取前十種即可。在單價字段上設(shè)好“降序”排

27、列,在工具欄上的上限值列表框中輸入10即可。雙擊查詢查看運行結(jié)果,體會在設(shè)計視圖中設(shè)置的作用。季度訂單 這個查詢列出了在1997年度有訂單的客戶,不是某個季節(jié)的記錄,而是含蓋了全年度的記錄,這個結(jié)果用于給“季度訂單”窗體提供數(shù)據(jù)源,在窗體中再具體實現(xiàn)按四個季度顯示統(tǒng)計結(jié)果。 進入設(shè)計視圖: 這個查詢的數(shù)據(jù)來自于“客戶”表和“訂單”表,“訂單”表中用到的訂購日期只是作為一個條件項,不用被顯示出來,條件里是一個表達式,代表的含義是訂購日期介于1997年1月1日到12月31日之間的,這里用到“betweenand”這種語法。日期型的數(shù)據(jù)應(yīng)該在兩側(cè)加上“#”號。接下來我們還要考慮到有些客戶可能在199

28、7年度有多次訂貨,而我們希望的結(jié)果是每個客戶只出現(xiàn)一次。這時可以在查詢視圖的上半部分窗口的空白處右擊鼠標(biāo),從浮動菜單中選擇“屬性”,也可直接在工具欄上選擇“屬性”設(shè)置查詢屬性中的“唯一值”屬性為“是”即可。設(shè)置了這個屬性就能保證每組中的重復(fù)數(shù)據(jù)只會列出一個。在這里還要提一下的是要注意一下選擇表的聯(lián)接類型,在聯(lián)接線上雙擊可以顯示聯(lián)接屬性,聯(lián)接屬性分為三種,可以根據(jù)要求選擇。一般默認(rèn)的聯(lián)接類型為,只包含兩個表中聯(lián)接字段相等的行,在本例中改成聯(lián)接類型為,包含訂單表中的所有記錄,在SQL語句方面分別體現(xiàn)為內(nèi)聯(lián)接,左聯(lián)接和右聯(lián)接,這是有區(qū)別的,可以參考運行結(jié)果體會聯(lián)接的作用。擴展訂單明細(xì) 擴展訂單明細(xì)為

29、窗體“客戶訂單子窗體2”提供數(shù)據(jù)源,查詢中帶有計算字段,查詢出每個訂單每種產(chǎn)品的一些明細(xì)信息。 進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“產(chǎn)品”表和“訂單明細(xì)”表,查詢結(jié)果按訂單ID升序排列。 查詢中的字段總價是個計算字段,總價為該字段的名稱,計算表示用“訂單明細(xì)”表中的“單價”乘以“數(shù)量”后再乘以(1-折扣),相當(dāng)于算出了打過折后的總價。字段中用到一個CCur()轉(zhuǎn)換函數(shù),它的作用是將數(shù)據(jù)轉(zhuǎn)換為貨幣類型,另外表達式中用了先除以100,再乘以100,相當(dāng)把數(shù)據(jù)還原,同時小數(shù)點后面保留兩位小數(shù)。不過我試了直接用CCur(訂單明細(xì).單價*數(shù)量*(1-折扣),得到的結(jié)果也是兩位的?歡迎共同討論。訂單小計 訂

30、單小計統(tǒng)計出每個訂單上各種產(chǎn)品的銷售金額的總計金額,為匯總銷售額等多個查詢提供數(shù)據(jù)。 進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“訂單明細(xì)”表,選用的字段只有一個“訂單ID”,小計字段是個計算字段,小計是這個字段的名稱,后面是計算表達式。計算方法同“擴展訂單名細(xì)”查詢中的“總價”字段,這里由于只有一個表,所以訂單明細(xì).單價可以直接寫成單價,該字段為:小計: CCur(單價*數(shù)量*(1-折扣)/100)*100。本例到這里只是計算出了每個訂單ID中每種產(chǎn)品的總價,而我們要統(tǒng)計出的是每個訂單ID中所有產(chǎn)品總價的和,所以我們要對訂單ID進行分組,要用到“總計”行的功能,“總計”行默認(rèn)是不顯示的,可在設(shè)計窗體的

31、下半部分右擊鼠標(biāo),選擇“總計”,或者單擊工具欄上的按鈕,這樣都會多出一行總計來,在總計行,可從下拉框中對每個字段選擇相應(yīng)的操作,可以作為分組依據(jù)或條件字段也可以選擇聚合函數(shù)或其他函數(shù)來對字段進行計算,如果要自己寫表達式,則選擇表達式。在本例可以把“訂單ID”字段設(shè)成分組字段,對“小計”字段要進行求和,只要選成“總計”就可以了。羅斯文的示例中并沒有選用“總計”的功能,而是對“小計”字段設(shè)成了“表達式”,而在表達式中加上了求和函數(shù)Sum(),大家可以比較一下,用這兩種方法生成的查詢運行結(jié)果都是一樣的,而SQL查詢的語句也是一樣的。對于表達式如果一開始覺得寫起來有些困難的話,可以借助于生成器來生成,

32、生成器中有數(shù)據(jù)庫中的各種對象,操作符以及函數(shù),只要進行選擇再修改一下就可以了。方法是在字段上右擊鼠標(biāo),從中選擇“生成器”,在生成器的下方選擇相關(guān)參數(shù),計算符等,表達式生成在上方可進行修改。按年度匯總銷售額“按年度匯總銷售額”查詢?yōu)椤鞍茨甓葏R總銷售額”報表提供數(shù)據(jù),另外“按季度匯總銷售額”查詢與本查詢完全一樣,也就是本查詢也能為“按季度匯總銷售額”報表提供數(shù)據(jù)源,按季度的功能是在報表中實現(xiàn)的。本例要統(tǒng)計出已經(jīng)發(fā)貨的各訂單的計單ID號及各訂單小計金額。進入設(shè)計視圖:查詢的數(shù)據(jù)來自于查詢“訂單小計”及“訂單”表,取“訂單”表中的發(fā)貨日期字段,并按該字段升序排列,另外該字段還設(shè)了條件,為“Is Not

33、 Null”,這個表達式代表數(shù)據(jù)不為空,沒有填寫過發(fā)貨日期的記錄則為空,代表尚未發(fā)貨,并排除在外。10按金額匯總銷售額 “按年度匯總銷售額”查詢統(tǒng)計了1997年訂單的小計金額在2500元以上的訂單,為“按金額匯總銷售額”報表提供數(shù)據(jù)。進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“客戶”,“訂單”表及“訂單小計”查詢。對小計字段另取名稱為“銷售金額”,加上條件“2500”,表示只要訂單小計在2500元以上的記錄;發(fā)貨日期加上條件“Between #1997-1-1#and #1997-12-31# ”表示只要發(fā)貨日期在1997年的記錄。兩個條件在同一行表示要求同求滿足。11各國雇員銷售額 “各國雇員銷售額”

34、查詢統(tǒng)計各國雇員的銷售情況,為“各國雇員銷售額”報表提供數(shù)據(jù)。進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“雇員”,“訂單”表及“訂單小計”查詢,發(fā)貨日期字段的條件為“Between 起始日期 And 終止日期”,因為表中并沒有起始日期字段,所以運行時,ACCESS會將它看作一個參數(shù),并跳出提示框,終止日期同理,在運行時輸入正確的參數(shù),并會得到查詢結(jié)果。12各年銷售額 “各年銷售額”查詢統(tǒng)計某一年的每個訂單的銷售情況,為“各年銷售額”報表提供數(shù)據(jù)。進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“訂單”表及“訂單小計”查詢,年份是個計算字段,用了一個Format()函數(shù),這是一個文本格式函數(shù),具體參數(shù)及用法請查看幫助。重

35、點來看發(fā)貨日期的條件設(shè)置,這個條件由兩部分組成,中間用“And”聯(lián)結(jié),表示要同時滿足前后兩個條件,前面一半為“Is Not Null”代表發(fā)貨日期不能為空,后面一半為“Between Forms!各年銷售額對話框!起始日期 And Forms!各年銷售額對話框!終止日期”,這也是一個“Between and ”的用法,只不過里面引用了兩個窗體中的參數(shù),F(xiàn)orms!各年銷售額對話框!起始日期代表“各年銷售額對話框”窗體中的“起始日期”中的值,終止日期同理,在運行中,如果“各年銷售額對話框”窗體是打開的并能讀取到相關(guān)參數(shù),則直接給出運行結(jié)果,否則象“各國雇員銷售額”查詢中一樣,跳出提示框要求輸入。

36、事實上好多報表都會從窗體或報表中讀取一些數(shù)據(jù)作為報表的計算依據(jù),我們要熟悉這種參數(shù)的設(shè)置方法。13發(fā)貨單“發(fā)貨單”查詢詳細(xì)統(tǒng)計出每個訂貨單的詳細(xì)信息,包括訂單情況,貨主情況等,為“發(fā)貨單”報表提供數(shù)據(jù)。進入設(shè)計視圖: 這個查詢選擇的表很多,其實在設(shè)計時方法還是一樣的,分別選擇如上圖的6個表,根據(jù)需要選擇相應(yīng)的字段,其中銷售人字段是個計算字段,把姓氏和名字聯(lián)在一起顯示,用到一個聯(lián)接運算符,總價字段也是一個計算字段,與前面例中的計算方法相同。對于表中設(shè)置的一些屬性會在查詢中直接帶過來,如在相聯(lián)接的兩個表“客戶”和“訂單”表中有相同的兩個字段“客戶ID”,如選擇“客戶”表中的“客戶ID”顯示的是ID

37、號,而選擇“訂單”表中的“客戶ID”顯示的是客戶名稱,這是由于“訂單”表中的該字段設(shè)了查閱屬性的緣故,不過字段中實際存儲的值都是一樣的,只是影響顯示,可根據(jù)需要從相關(guān)表中選擇相應(yīng)字段。在這個查詢中在“總計”行對每個字段都采用了“分組”,其實這樣的效果和排序是一樣的,如不用“分組”而對每個字段依次進行排序,運行的結(jié)果也是一樣的。當(dāng)然如果需要分組計算時,則是不可替代的。14各類銷售額 “各類銷售額”查詢?yōu)椤案黝愪N售額”報表提供數(shù)據(jù),統(tǒng)計了1997年各類產(chǎn)品的銷售情況。進入設(shè)計視圖: 這個查詢的數(shù)據(jù)來自于個表及一個“擴展訂單明細(xì)”查詢,查詢中對類別及產(chǎn)品名稱進行了多級分類,再對分類后的產(chǎn)品求出銷售總

38、金額。所以在查詢中“類別ID”,“類別名稱”及“產(chǎn)品名稱”字段的“總計”行都設(shè)為分組字段,總價字段是計算字段要進行求和,所以設(shè)成“總計”,另取名稱為“產(chǎn)品銷售額”。在這種多級分類統(tǒng)計的查詢中一樣可以設(shè)置條件,本例中的訂購日期,不要顯示,只是作為條件字段,所以“總計”行設(shè)為“條件”,條件為“Between and ”的名型,查詢出1997年的數(shù)據(jù)。151997年產(chǎn)品銷售額 “1997年產(chǎn)品銷售額”查詢統(tǒng)計出不同類別的產(chǎn)品在不同季度的銷售額,為“1997年各類銷售總額”查詢提供數(shù)據(jù)。進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于上圖中的四個表,其中“發(fā)貨季度”字段是個計算字段,用到了一個日期函數(shù)DatePart

39、(),具體的參數(shù)和用法可以查看幫助,在本例中取日期中的季度,結(jié)果為1-4中的一個值,后面加上一個聯(lián)接字符串,現(xiàn)加上季度,可以形成“季度”這樣的字符串。在“總計”行:需要分組的字段“類別名稱”,“產(chǎn)品名稱”,“發(fā)貨季度”設(shè)成“分組”,而且分類應(yīng)是有先后的,大類放在前面;需要設(shè)置條伯的字段“發(fā)貨日期”設(shè)成“條件”;需要計算的計算的字段“產(chǎn)品銷售額”設(shè)成“表達式”。161997年各類銷售總額 “1997年各類銷售總額”查詢以“1997年的總銷售額”查詢?yōu)閿?shù)據(jù),進一步查詢出每種類別的銷售總額,比較簡單,詳見設(shè)計視圖: 其實本例也不一定非要通過“1997年的總銷售額”查詢來產(chǎn)生。也可以如下圖設(shè)置生成,運

40、行結(jié)果也是完全一樣的。17高于平均價格的產(chǎn)品 “高于平均價格的產(chǎn)品”查詢,以產(chǎn)品平均價格作為衡量依據(jù),統(tǒng)計出比平均價格高的產(chǎn)品。 進入設(shè)計視圖: 這個查詢的數(shù)據(jù)來自于“產(chǎn)品”表,選擇的字段也很簡單,只有兩個“產(chǎn)品名稱”與“單價”,這個查詢的關(guān)鍵在于設(shè)置“單價”字段的條件,并不是所有的產(chǎn)品都顯示出來,單價大于平均價的才顯示出來,條件中用到比較運算符“”,平均價格哪里來呢,在本例中用了一個SQL查詢語句,也叫子查詢。象這種在條件中包含SQL語句的查詢叫嵌套查詢,可以進行多層嵌套。用“Select AVG(單價 From 產(chǎn)品”來求出產(chǎn)品表中所有單價的平均值。本例的條件中如果不用子查詢,改用函數(shù)也是

41、可以的,可以改成“DAvg(單價,產(chǎn)品)”。18各城市的客戶和供應(yīng)商“各城市的客戶和供應(yīng)商”查詢是一個聯(lián)合查詢,它將“客戶”表和“供應(yīng)商”表的信息聯(lián)合在一起,查詢出每個城市的客戶及供應(yīng)商。聯(lián)合查詢由多個Select語句組成,各語句之間用關(guān)鍵字“UNION”聯(lián)接起來。要求在第一個查詢語句中就要列出所有的字段,字段名也以第一個查詢中的為準(zhǔn),后面各查詢語句中所用的字段的個數(shù),數(shù)據(jù)類型,順序都要與第一個查詢中相同。本例中的查詢語句如下:Select 城市, 公司名稱 , 聯(lián)系人姓名, 客戶 AS 關(guān)系 FROM 客戶UNION Select 城市, 公司名稱, 聯(lián)系人姓名, 供應(yīng)商FROM 供應(yīng)商OR

42、DER BY 城市, 公司名稱;前兩行中是第一個查詢語句:從“客戶”表中選擇“城市”、“公司名稱”、“聯(lián)系人姓名”,另加一個字段“關(guān)系”,以字符串“客戶”作為“關(guān)系”字段的值。第三每四行中包含“UNION”關(guān)鍵字及第二個查詢語句:從“供應(yīng)商”表中選擇“城市”、“公司名稱”、“聯(lián)系人姓名”,另加一個字段,以字符串“客戶”作為字段的值,這里字段名省略,因為默認(rèn)會取第一個查詢語句中的字段名。最后一行是個將查詢出來的結(jié)果按照城市和公司名稱的升順來進行排序。19各種產(chǎn)品的季度訂單 “各種產(chǎn)品的季度訂單”查詢是一個交叉表查詢,它以行列交叉的行形列出不同產(chǎn)品,不同客戶在1997年的各個季度中所有的訂購額。為

43、“季度訂單”子窗體提供數(shù)據(jù)。 一般簡單的交叉表查詢可以利用“交叉表查詢向?qū)А眮砩?,不過本例中的數(shù)據(jù)來源于多個表,還有計算字段,因此需要在設(shè)計視圖中創(chuàng)建。進入設(shè)計視圖: 查詢的數(shù)據(jù)來自于“訂單”,“訂單明細(xì)”,“產(chǎn)品”表。要實現(xiàn)交叉表查詢,需要從菜單“查詢”中選擇“交叉表查詢”,這樣就會在設(shè)計視圖的下半部分多出“總計”行及“交叉表”行而少了一行“顯示”。因為交叉表需要在行列的交叉處顯示匯總結(jié)果,而這個結(jié)果則是根據(jù)行列的多重分組計算出來的。然后選擇相應(yīng)的字段,在“交叉表”行及“合計”行中對各字段進行設(shè)置:本例中“產(chǎn)品名稱”,“客戶ID”,“訂購年份”作為行標(biāo)題,其中“訂購年份”字段中用到“Yea

44、r()”函數(shù),代表取訂購日期中的年份的值;訂購年份后面一個字段用來作為列標(biāo)題,該字段也是一個計算字段,用到一個“DatePart()”函數(shù),及“&”聯(lián)合運合符。顯示的結(jié)果為第1季度,第2季度,第3季度,第4季度四個中的一個;“產(chǎn)品金額”設(shè)置為“值”是個計算字段,計算方法同前面的查詢;對于分組計算來說,交叉表中的行與列是分組依據(jù),值是計算結(jié)果,即總計行的設(shè)置是:“產(chǎn)品名稱等前4個字段設(shè)成“分組”,“產(chǎn)品金額”設(shè)為表達式。“訂購日期”是個條件這段,并不顯示,條件為1997年的數(shù)據(jù)??呻p擊查詢查看運行結(jié)果,對照生成的結(jié)果來查看設(shè)置的具體效果。到這里查詢也全部結(jié)束了,只有少數(shù)幾個沒看,沒有新的知識點,所以略過了報表的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論