羅斯文數(shù)據庫教程.doc_第1頁
羅斯文數(shù)據庫教程.doc_第2頁
羅斯文數(shù)據庫教程.doc_第3頁
羅斯文數(shù)據庫教程.doc_第4頁
羅斯文數(shù)據庫教程.doc_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

羅斯文數(shù)據庫教程馬麗2009年3月14日羅斯文數(shù)據庫學習連載摘要:羅斯文數(shù)據庫簡介正文: 羅斯文庫是Access自帶的示例數(shù)據庫,也是一個很好學習教程。讓我們一起來學習一下吧。通過羅斯文數(shù)據庫的學習,能對數(shù)據庫的表、關系、查詢、報表、窗體、切換面板等內容有個全面的了解。 我們做數(shù)據庫開發(fā),應該來講是現(xiàn)實生活中一種管理思路的體現(xiàn)與高度概括。那么要構思之前肯定要對整個流程有個清晰的了解。那我們就先來了解一下這個羅斯文公司的業(yè)務流程吧。羅斯文公司是一個虛構的商貿公司,該公司進行世界范圍的食品的采購與銷售,就是通常所講的買進來再賣出去,賺取中間的差價。羅斯文公司銷售的食品分為幾大類,每類食品又細分出各類具體的食品。這些食品由多個供應商提供,然后再由銷售人員售給客戶。銷售時需要填寫訂單,并由貨運公司將產品運送給客戶。 要打開“羅斯文數(shù)據庫”,先啟動Access,從“幫助”菜單選擇“示例數(shù)據庫”“羅斯文數(shù)據庫”即可。如你所安裝的是精簡版不帶有示例數(shù)據庫,那就從網上下載一個吧。圖一注:本教程著重在實例講解,不含最基本的一些概念及操作說明,如需學習基礎教程請自己看書或參考其他教程。如果您沒有注冊這個論壇,請趕快注冊吧,與我在論壇進行交流,共同學習提高。羅斯文數(shù)據庫學習連載(2)摘要:表設計思路及表的數(shù)據類型、字段屬性正文: 首先要做的事是設計表,表的設計思路就是將數(shù)據分類,同一類的數(shù)據放在一個表中,并且有一個字段與其他表之間建立聯(lián)系。而且要盡可能的細分,以最大限度的保證每個表中不存在重復的數(shù)據資料。 比如說銷售訂單吧,肯定要記錄客戶的具體資料如名稱、地址、電話等方便聯(lián)系;還要記錄訂單的日期,運費等;以及每張訂單中都有哪些具體的產品、數(shù)量、價格等信息。如果我們把這么多信息記錄在一張表里的話,那就要錄入許多重復的信息,比如客戶的資料,不僅很麻煩還很容易出錯。 所以應該細分為客戶表專門維護客戶的信息;訂單表記錄訂單的日期,運費;訂單名細表記錄具體的產品數(shù)量及價格;另外還需要產品表、供應商表、雇員表、運貨商表及類別表。 “羅斯文數(shù)據庫”中共有個表,選中表,以詳細信息的視圖來查看各個表的說明,見圖二。 圖二 關于數(shù)據庫的基本組成表,查詢,窗體等及表的基本組成字段,記錄等概念就不用再講了吧。其中一些常用的知識將在示例中一起講解。在表設計中重點要掌握的是數(shù)據類型、字段屬性的設置與應用。羅斯文數(shù)據庫學習連載(3)摘要:數(shù)據類型的用法正文: 一、數(shù)據類型的用法文本用于存儲不需要計算的數(shù)字,文本、其他字符或組合內容。最多可存儲255個漢字,英文或字符。備注用于存儲長文本和數(shù)字。如注釋或說明。最多可存儲65536個漢字,英文或字符。數(shù)字用于存儲要進行計算的數(shù)據。如庫存量,銷售數(shù)量等。日期/時間用于存儲日期和時間,如出生日期,發(fā)貨日期等。要注意日期型數(shù)據要注意分隔符的正確使用。以“-”,“/”分隔年月日,如“2007-01-10”,而“2007.01.10”這種格式是錯誤的。貨幣用于存儲貨幣值,計算期間禁止四舍五入,精度較高。如單價。自動編號用于在添加記錄時自動插入一個唯一不重復的編號,如員工編號等。一般用作主鍵。是/否用于存儲二選一的數(shù)據,如“是/否”,“真/假”,“開/關”等。OLE對象用于存儲一些用其他應用程序創(chuàng)建的對象,如WORD文檔,EXCEL表格,圖片等。如員工照片。超鏈接用于存儲超鏈接。如網址,EMAIL地址。10查閱向導查閱向導允許用戶使用組合框或列表框選擇來自其他表或來自值列表的數(shù)據。在表設計視圖新增該數(shù)據類型的字段會啟動向導進行定義羅斯文數(shù)據庫學習連載(4)摘要:字段屬性正文: 二、字段屬性字段屬性是指字段擁有的一些特點,不同數(shù)據類型的字段,屬性也不盡相同,常用的屬性如下:字段大小文本型字段,默認的大小為50;數(shù)字型字段,默認大小為長整型;自動編號的字段,默認大小也是長整型。格式格式屬性決定了單元格中數(shù)據的顯示和打印方式,所看到的并不一定就是表中所存儲的。小數(shù)位數(shù)小數(shù)位數(shù)屬性決定了在單元格中顯示幾位小數(shù)。如設為0,將不顯示小數(shù)。輸入掩碼輸入掩碼屬性決定了數(shù)據輸入和保存的方式。標題標題屬性影響著字段的顯示名稱,默認情況下,標題與字段名相同,也可以輸入不同內容,在數(shù)據表視圖中打開表時,將看到字段的列標題與標題屬性相同。默認值在默認值中填入數(shù)據時,在新增記錄時將自動將該值添加到相應的字段中。有效性規(guī)則有效性規(guī)則用于限制在字段中輸入的數(shù)據,在數(shù)據錄入后,自動檢查是否滿足有效性規(guī)則,如不滿足則發(fā)出警告,不接受錄入值。如在單價字段的在效性規(guī)則中填入:0,即可防止忘記填寫該數(shù)據,或誤填入負數(shù)。有效性文本在用戶錄入時如違反有效性規(guī)則時,系統(tǒng)會發(fā)出警告,而如果有效性文本中填入了內容,則在提示時,對話框中會顯示有效性文本中的內容,替代系統(tǒng)的提示內容。必填字段必填字段如果設為是,那么在錄入數(shù)據時必須在該字段填入相應的數(shù)據。10允許空字符串字符串的概念是以字符形式存儲的數(shù)據,一般要在字符串的兩端加上英文的雙引號,如”abc”等,而在文本和備注型的字段中,無需加入英文雙引號,錄入數(shù)據會直接作為字符串處理。如果允許空字符串設為否,將不允許輸入空字符串。這里要注意的是空字符中”與空格字符串是不同的” ”,前者雙引號中沒有空格。11輸入法模式輸入法模式可以設為開啟或關閉,根據字段中是否要輸入中文字,做好設置,可以避免錄入人員在中英文輸入法之間做切換。12索引索引用于加快排序,查詢和分組操作的速度。索引的值有3種,如果字段為主鍵,將自動設索引的屬性為有(無重復),另外兩種是有(有重復)和無。索引屬性中只能設置單一字段的索引,如果要設置多字段索引,可在設計視圖中,點擊工具欄的索引(或菜單視圖索引),在索引框中設置。圖三具體的用法及示例將結合羅斯文示例進行說明羅斯文數(shù)據庫學習連載(5)摘要:一、“供應商”表正文: 表的具體分析:一、“供應商”表 供應商表記錄的是為羅斯文公司提供貨源的廠商記錄圖四 選擇 “供應商”表,單擊“設計”按鈕,進入表設計視圖,表中的字段包括了常用的聯(lián)系信息。圖五 我們重點來關注一下“供應商ID”字段。這是一個自動編號類型的字段,在表中具有唯一性,一般的我們設計的表中都需要一個唯一的不重復的字段,我們可以把該字段設為主鍵,該字段將會用于與其他表之間建立關系。 表中的大部分字段都是文本類型,大小可以根據實際要輸入的內容來設置,比如城市,地區(qū)的字段設為,而地址的字段大小是。采用合適的大小會盡可能的減少存儲空間的占用。一般不需要進行數(shù)據計算的字段我們都用文本類型來存儲。 主頁和Email之類的可以采用起超鏈接類型。 查看該表中的索引圖六 可以發(fā)現(xiàn)公司名稱和郵政編碼字段的索引屬性為有(有重復)也即唯一索引為否,主要是為了通過索引加快對這兩個字段的查詢等操作,有重復說明該字段中的數(shù)據是有可能重復的,比如兩個公司在同一地區(qū),那郵政編碼就是一樣的。 另外我們在常規(guī)屬性中除了字段大小屬性以外,還有其他的一些屬性,可以在相應的欄內點,查看相應的幫助羅斯文數(shù)據庫學習連載(6)摘要:“類別”表正文: 二、“類別”表 劃分類別是表設計時的必須要考慮的,因為不同類別的產品可能由不同的部門負責銷售,為了方便統(tǒng)計出各類產品或部門的銷售情況,須將產品進行分類。類別表中將產品分為8大類。圖七 選擇類別表,點設計,進入設計計視圖圖八 可以看到“類別ID”是自動編號類型,用作主鍵; 說明字段,數(shù)據類型為備注,在實際操作中如果要說明的字數(shù)不會超過255個字符,可以采用文本類型,這樣更節(jié)省空間。 圖片字段的數(shù)據類型是OLE對象,OLE對象在表中不能直觀地看到圖片,如果要查看圖片可以在字段上雙擊,如需插入,則在圖片字段上單擊右鍵,選擇“插入對象”,再從對話框中選擇“由文件創(chuàng)建”,瀏覽到所需圖片,也可以鏈接對象,這樣只是保存了鏈接地址,不會直接把文件插入數(shù)據庫。羅斯文數(shù)據庫學習連載(7)摘要:“產品”表正文: 三、“產品”表 產品表中保存了羅斯文公司銷售的各種產品的明細數(shù)據。這個表清楚的記載了每個產品是屬于什么類別,供應商是誰,庫存量,單價等信息,是填寫訂貨單時的重要依據。圖九 選中“產品”表,點設計,進入設計視圖 “產品ID”是自動編號類型的主鍵; 單價,庫存量,訂購量,再訂購量字段中設置的有效性規(guī)則與有效文本性文本屬性,可以學習一下; “中止”字段的數(shù)據類型是“是/否”型,這對于處理兩選一的結果最為合適; 重點來關注一下“供應商ID”和“類別ID”,這兩個字段都是數(shù)字類型,分別對應“供應商”表中主鍵和“類別”表中的主鍵。先來看下“供應商ID”,這個字段的標題屬性中填的是“供應商”,這樣在數(shù)據表視圖中,看到的字段標題就會是“供應商”,而不是默認的“供應商ID”。另外這兩個字段都是查閱列,這是一個很有用的屬性,我們對“供應商ID”作一下詳細的講解,“類別ID”與“供應商ID”的設置方法相同。羅斯文數(shù)據庫學習連載(8)摘要:查閱列正文: 查閱列我們在表中輸入數(shù)據時,經常會遇到需要重復輸入的內容,比如人員的性別為“男”或“女”,這是單表中的重復錄入;比如產品表中需要輸入“供應商”,而“供應商”字段在“供應商”表中已經錄入過了,這屬于跨表的重復錄入。這些內容如果直接錄入不僅花費了用戶較多的時間,而且極容易出錯。為了方便用戶錄入重復性的數(shù)據,可以借助ACCESS提供的查閱列的功能。圖首先來看下查閱列中的各項具體屬性顯示控件圖從顯示控件右側的下拉框中可以看到該屬性可以設為文本框,列表框或組合框。如果設為文本框,那數(shù)據就只有接受從文本框中的錄入,查閱的其他屬性都不可用。我們主要要掌掘的是列表框和組合框的使用。組合框和列表框的使用基本相同,只是列表框除了可以從列表中選擇還可以接受錄入,相當于是列表框各文本框的組合。行來源類型圖行來源類型是指控件中的數(shù)據來自于何處。共有三處選擇,表/查詢,值列表,字段列表。如果選擇“表/查詢”,則列表框或組合框中的數(shù)據將來源于其他表或查詢中的結果。如果要錄入其他表中已經存在的數(shù)據,或錄入從幾個表中查詢得到的結果,用這個選項最為方便。如果選擇“值列表”,只需在行來源中直接輸入列表中的數(shù)據,并用英文分號隔開即可。這種類型只適合于輸入的內容固定在某幾個值之間,如性別的值可以是“男”或“女”。如果選擇“字段列表”,該字段中將填入某個表中的字段名稱信息。這種類型較少用到, “表/查詢”的使用就包含了這種簡單的用法。行來源“行來源”中是列表框或組合框中將要列出的數(shù)據。如果“行來源類型”是“表/查詢”,可單擊“行來源”右側的下拉箭頭,選擇某個表或查詢,以該表或查詢中的數(shù)據作為列表框或組合框中的數(shù)據。如果沒有直接的查詢可用,也可以單擊右側的生成器 ,在查詢生成器中直接創(chuàng)建SQL語句。如果“行來源類型”是“值列表”,直接輸入即可,如“男;女;”如果“行來源類型”是“字段列表”,可單擊右側的下攔箭頭,選擇某個表,以該表中的字段名稱作為列表框或組合框中的數(shù)據。綁定列在列表框或組合框中進行選擇時,所顯示出來的數(shù)據并不一定就是存儲在該字段中的內容。在“綁定列”中設置的列中的值才是表中真正存儲的值。列數(shù)在列表框或組合框中所顯示的列數(shù),可以同時顯示表中的多列。列標題用字段名稱,字段標題或首行數(shù)據作為列表框或組合框中列的標題。如果在列表框或組合框中同時顯示多列時,加上標題方便識別各列的內容。列寬列表框或組合框中有多列時,可指定每列的寬度,每列寬度之間以英文分號分隔。如列數(shù)為3列,則可設列寬為:2;2;2,系統(tǒng)會自動加上cm單位;如果某一列無需顯示,則列寬設為0即可。如:0;2;2。列表行數(shù)是指在組合框中一次最多可以顯示的行數(shù),其余的數(shù)據需拖動滾動條查看。列表寬度在組合框中,列表框部分的寬度,可以設為“自動”,也可以設為數(shù)值。10限于列表在組合框中,如果允許輸入除列表框中值以外的數(shù)據,則選擇“否”。如果值必須為列表中的一項時,則選擇“是”。羅斯文數(shù)據庫學習連載(9)摘要:查閱列示例正文: 示例:在“產品”表中,設置“供應商ID”字段的查閱列屬性在數(shù)據庫窗口中,選擇“產品”表,單擊設計,進入設計視圖??梢栽谧詈笠粋€字段的下面的第一個空白行,輸入新字段名稱“供應商2”,設置完相關屬性后,可以與“供應商ID”字段進行比較。數(shù)據類型改為數(shù)字,在這里說明一下,在表中相關聯(lián)的兩個字段的數(shù)據類型必須相同,而且字段大小也要相同。在本例中因為在“供商表”,“供應商ID”字段是自動編號類型,自動編號的字段默認大小是長整型,所以在這里“供應商2”的數(shù)據類型必須為數(shù)字,字段大小為長整型。在下半部分窗口中選擇“查閱”選項卡,將顯示控件改為組合框。圖在行來源類型中選擇“表/查詢”。點擊行來源右側的生成器 按鈕,在顯示表中,選中“供應商”表,點添加后關閉。從表中選擇字段供應商ID,公司名稱,可以雙擊,也可以拖入下方的字段中。設置公司名稱字段的排序為升序,代表組合框中的供應商按名稱進行排序。圖點關閉按鈕,跳出提示窗口圖點“是”在綁定列中填入1,代表該字段存儲的值是查詢結果中第一列“供應商ID”中的值。要求這兩者的數(shù)據類型必須相同,本例中都為長整型。在列數(shù)中填入2,代表有兩列。列標題選“否”。列寬中填入0;2。羅斯文示例中,第2列的寬并沒有填入,這是因為列表寬度設為了自動,不隱藏的寬度都會根據字段的大小自動顯示出來。列表行數(shù)默認為8。10列表寬度為自動,限于列表選“是”。圖11關閉設計視圖并保存修改,切換到數(shù)據表視圖,體會查閱列的用法。羅斯文數(shù)據庫學習連載(10)摘要:“客戶”表正文: 客戶表及運貨商表 “客戶”表記錄的是羅斯文公司的客戶信息,類似于“供應商”表。 通過對“客戶”表設計視圖的查看可以發(fā)現(xiàn)表中的“客戶ID”字段與前幾個表中的ID字段不同,沒有采用自動編號的數(shù)據類型,而是用了文本類型,長度為。這個“客戶ID”字段也是作為主鍵的,也就是說不允許在該表中輸入重復的客戶代碼。在“客戶ID”字段中還設置了“輸入掩碼”的屬性,“LLLLL”,“”是將所有輸入的字符自動轉為大寫,這樣在輸入時就不用理會大小寫,“L”代表字母A-Z,是必選項。這樣設置的意思就是在“客戶ID”字段中必須輸入5個字母,不能輸入其他的字符或者少一位。 “輸入掩碼”可以幫助客戶準確地輸入數(shù)據,避免不必要的錯誤。比如可以用“000000000000000999”來作為身份證的輸入掩碼,既可以輸入15位數(shù)字,也可以輸入18位數(shù)字,這里的和9都是輸入掩碼的常用控制字符,0代表必選的數(shù)字項,9代表可選的數(shù)字和空格。如果想了解有關更多的輸入掩碼,可以把光標放在這一屬性欄里,按F1查看幫助,學會用幫助可是個好習慣哦。 另外“格式”屬性也是對字段的格式作的規(guī)范,要注意兩者的區(qū)分?!拜斎胙诖a”是控制輸入和保存方式的,而“格式”屬性是控制輸出和打印方式的,如在“輸入掩碼”中使用“”代表的是不管輸入字符是大寫還是小寫,在數(shù)據庫中保存的都會是大寫的字符,而如果在“格式”中使用“”代表的是在該字段中顯示為大寫,而不管實際存在數(shù)據庫中字符的大小寫。如果一個字段既定義了“格式”屬性又定義的“輸入掩碼”屬性,則在顯示數(shù)據時,“格式”屬性優(yōu)先于“輸入掩碼”屬性,而在保存數(shù)據時則相反。 “客戶”表中其他字段都采用文本類型。 “運貨商”表記錄的是幫助羅斯文公司運送貨物的公司的聯(lián)系信息。這個表中沒有新的知識點,不再進行細講。羅斯文數(shù)據庫學習連載(11)摘要:“雇員”表正文: 雇員表 “雇員”表記錄的是羅斯文公司的雇員信息。 雇員的姓氏和名字分別用兩個字段來代表,這樣設計是考慮到能把信息拆分的更細,方便對更細的信息進行處理,比如可以按照姓氏來進行統(tǒng)計等等,當然如果沒有這種必要的話,完全可以用姓名一個字段來處理。本例中對地址和電話都進行了拆分的處理方法。 選中“雇員”表,單擊設計按鈕,進入表設計視圖?!肮蛦TID”是自動編號的主鍵,“出生日期”是“日期/時間”類型,它的“格式”屬性是“yyyy-mm-dd”,表示顯示時的格式,“有效性規(guī)則”屬性是“”,“=”,“=”,“”,“=”;邏輯運算符“and”,“or”,“not”;連接運算符“&”,“+”;及常用的!和.(點)運算符。常見的操作數(shù)如字符串,日期/時間值,常量,變量,函數(shù)及引用窗體或報表中的字段值,控件值或屬性等。常見表達式示例:數(shù)學及比較運算表達式表達式說明=數(shù)量*價格計算數(shù)量與價格的乘積,可以得出總價=到貨日期-發(fā)貨日期計算兩個日期之間的天數(shù)2500比2500大的數(shù)日期表達式表達式說明Between #1997-01-01# And #1997-12-31#在1997-01-01各1997-12-31之間的數(shù)據#2007-12-30#2007-12-30以前的數(shù)據30大于30歲的男性數(shù)據= “中國” & “北京”值為 “中國北京”通配符表達式表達式說明Like “張*”以張開頭的數(shù)據Like “張?”以張開頭后面還有一個字的數(shù)據聚合函數(shù)表達式表達式說明Sum(數(shù)量*價格)求數(shù)量和價格相乘后的和Avg(費用)求費用的平均值Count(*)計算記錄條數(shù)羅斯文數(shù)據庫學習連載(17)摘要:“當前產品列表”查詢正文: “當前產品列表”查詢當前產品列表統(tǒng)計出未被中止的產品。 在數(shù)據庫的查詢對象窗口,雙擊“在設計視圖中創(chuàng)建查詢”或單擊“新建”按鈕,在跳出的“新建查詢”的窗口中選擇“設計視圖”,進入設計視圖界面,從顯示表中添加“產品”表。選中“產品ID”,“產品名稱”,“中止”三個字段(注:選中字段可以把字段從設計視圖界面的上方拖到下方,也可以雙擊字段名稱),去掉“中止”下面“顯示”的勾,在條件一欄輸入“no”,代表只查詢出未被中止的產品,但只要顯示產品的ID和名稱就行了,是否中止的狀態(tài)不用顯示出來。我們還想將輸出的結果按照產品名稱進行排序,在“產品名稱”下面的“排序”欄里選中升序。這樣查詢就完成了,點保存,給查詢起個名字就可以了。 我們打開羅斯文數(shù)據庫中的當前產品列表查詢,會發(fā)現(xiàn)數(shù)據源是“產品列表”,不是“產品”表,這里是用到了表的別名,一般的我們在查詢中為了方便,經常會給比較長的表名取個短一些的名稱,更方便引用表。方法是在顯示的表上點擊鼠標右鍵,選擇屬性,在別名中填上合適的別名就行了。本例中其實完全沒有這個必要,可能只是想讓大家了解這樣一個用法而已羅斯文數(shù)據庫學習連載(18)摘要:“各類產品”查詢正文: “各類產品”查詢 各類產品查詢?yōu)楦黝惍a品報表提供數(shù)據源,在查詢對象中選中“各類產品”,單擊“設計”按鈕, 我們發(fā)現(xiàn)默認的是按SQL視圖顯示的,這時從“視圖”中選擇“設計視圖”即可顯示設計視圖,當然要再切換到SQL視圖,再從“視圖”中選擇“SQL視圖”即可。通過在“設計視圖”中設計查詢,再切換到“SQL視圖”中查看SQL語句也是我們學習SQL語句的方法。 查詢的數(shù)據來自“類別”表和“產品”表,“類別名稱”字段和“產品名稱”字段的“排序”都是升序,查詢結果將先按類別名稱排序,當類別名稱相同時再按照產品名稱排序。中止條件為“no”,結果只包含未被中止的產品。羅斯文數(shù)據庫學習連載(19)摘要:“按漢語拼音順序的產品列表”查詢正文: “按漢語拼音順序的產品列表”查詢 這個查詢是為“按漢語拼音順序的產品列表”報表提供數(shù)據源的。雙擊查詢即可運行并顯示查詢的結果,在查詢結果中并未按拼音順序來排列,這個功能是在報表中實現(xiàn)的。進入設計視圖 這個查詢的數(shù)據來自兩個表,“類別”表和“產品”表。查詢的結果中只包含未被中止的產品,因此在產品字段上設置了條件,這里代表“否”,在ACCESS中用代表“否”,F(xiàn)ALSE,“假”,而用-1代表“是”,TRUE,“真羅斯文數(shù)據庫學習連載(20)摘要:“十種最貴的產品”查詢正文: 十種最貴的產品 進入設計視圖: 查詢的數(shù)據來自于表“產品”,選用的字段只有產品名稱和單價兩個,如果要給選擇的字段另外取個名稱,可以給這個字段前面添加名稱,中間用英文狀態(tài)的冒號“:”隔開,如上圖。 要查詢出十種最貴的產品,只要將產品按產品單價降序來排列再取前十種即可。在單價字段上設好“降序”排列,在工具欄上的上限值列表框中輸入10即可。雙擊查詢查看運行結果,體會在設計視圖中設置的作用。羅斯文數(shù)據庫學習連載(21)摘要:“季度訂單”查詢正文: 季度訂單 這個查詢列出了在1997年度有訂單的客戶,不是某個季節(jié)的記錄,而是含蓋了全年度的記錄,這個結果用于給“季度訂單”窗體提供數(shù)據源,在窗體中再具體實現(xiàn)按四個季度顯示統(tǒng)計結果。 進入設計視圖: 這個查詢的數(shù)據來自于“客戶”表和“訂單”表,“訂單”表中用到的訂購日期只是作為一個條件項,不用被顯示出來,條件里是一個表達式,代表的含義是訂購日期介于1997年1月1日到12月31日之間的,這里用到“betweenand”這種語法。日期型的數(shù)據應該在兩側加上“#”號。接下來我們還要考慮到有些客戶可能在1997年度有多次訂貨,而我們希望的結果是每個客戶只出現(xiàn)一次。這時可以在查詢視圖的上半部分窗口的空白處右擊鼠標,從浮動菜單中選擇“屬性”,也可直接在工具欄上選擇“屬性”設置查詢屬性中的“唯一值”屬性為“是”即可。設置了這個屬性就能保證每組中的重復數(shù)據只會列出一個。在這里還要提一下的是要注意一下選擇表的聯(lián)接類型,在聯(lián)接線上雙擊可以顯示聯(lián)接屬性,聯(lián)接屬性分為三種,可以根據要求選擇。一般默認的聯(lián)接類型為,只包含兩個表中聯(lián)接字段相等的行,在本例中改成聯(lián)接類型為,包含訂單表中的所有記錄,在SQL語句方面分別體現(xiàn)為內聯(lián)接,左聯(lián)接和右聯(lián)接,這是有區(qū)別的,可以參考運行結果體會聯(lián)接的作用。羅斯文數(shù)據庫學習連載(22)摘要:“擴展訂單明細”查詢正文: 擴展訂單明細 擴展訂單明細為窗體“客戶訂單子窗體2”提供數(shù)據源,查詢中帶有計算字段,查詢出每個訂單每種產品的一些明細信息。 進入設計視圖: 查詢的數(shù)據來自于“產品”表和“訂單明細”表,查詢結果按訂單ID升序排列。 查詢中的字段總價是個計算字段,總價為該字段的名稱,計算表示用“訂單明細”表中的“單價”乘以“數(shù)量”后再乘以(1-折扣),相當于算出了打過折后的總價。字段中用到一個CCur()轉換函數(shù),它的作用是將數(shù)據轉換為貨幣類型,另外表達式中用了先除以100,再乘以100,相當把數(shù)據還原,同時小數(shù)點后面保留兩位小數(shù)。不過我試了直接用CCur(訂單明細.單價*數(shù)量*(1-折扣),得到的結果也是兩位的?歡迎共同討論。羅斯文數(shù)據庫學習連載(23)摘要:“訂單小計”查詢正文: 訂單小計 訂單小計統(tǒng)計出每個訂單上各種產品的銷售金額的總計金額,為匯總銷售額等多個查詢提供數(shù)據。 進入設計視圖:查詢的數(shù)據來自于“訂單明細”表,選用的字段只有一個“訂單ID”,小計字段是個計算字段,小計是這個字段的名稱,后面是計算表達式。計算方法同“擴展訂單名細”查詢中的“總價”字段,這里由于只有一個表,所以訂單明細.單價可以直接寫成單價,該字段為:小計: CCur(單價*數(shù)量*(1-折扣)/100)*100。本例到這里只是計算出了每個訂單ID中每種產品的總價,而我們要統(tǒng)計出的是每個訂單ID中所有產品總價的和,所以我們要對訂單ID進行分組,要用到“總計”行的功能,“總計”行默認是不顯示的,可在設計窗體的下半部分右擊鼠標,選擇“總計”,或者單擊工具欄上的按鈕,這樣都會多出一行總計來,在總計行,可從下拉框中對每個字段選擇相應的操作,可以作為分組依據或條件字段也可以選擇聚合函數(shù)或其他函數(shù)來對字段進行計算,如果要自己寫表達式,則選擇表達式。在本例可以把“訂單ID”字段設成分組字段,對“小計”字段要進行求和,只要選成“總計”就可以了。羅斯文的示例中并沒有選用“總計”的功能,而是對“小計”字段設成了“表達式”,而在表達式中加上了求和函數(shù)Sum(),大家可以比較一下,用這兩種方法生成的查詢運行結果都是一樣的,而SQL查詢的語句也是一樣的。對于表達式如果一開始覺得寫起來有些困難的話,可以借助于生成器來生成,生成器中有數(shù)據庫中的各種對象,操作符以及函數(shù),只要進行選擇再修改一下就可以了。方法是在字段上右擊鼠標,從中選擇“生成器”,在生成器的下方選擇相關參數(shù),計算符等,表達式生成在上方可進行修改。羅斯文數(shù)據庫學習連載(24)摘要:按年度匯總銷售額正文: 按年度匯總銷售額“按年度匯總銷售額”查詢?yōu)椤鞍茨甓葏R總銷售額”報表提供數(shù)據,另外“按季度匯總銷售額”查詢與本查詢完全一樣,也就是本查詢也能為“按季度匯總銷售額”報表提供數(shù)據源,按季度的功能是在報表中實現(xiàn)的。本例要統(tǒng)計出已經發(fā)貨的各訂單的計單ID號及各訂單小計金額。進入設計視圖:查詢的數(shù)據來自于查詢“訂單小計”及“訂單”表,取“訂單”表中的發(fā)貨日期字段,并按該字段升序排列,另外該字段還設了條件,為“Is Not Null”,這個表達式代表數(shù)據不為空,沒有填寫過發(fā)貨日期的記錄則為空,代表尚未發(fā)貨,并排除在外羅斯文數(shù)據庫學習連載(25)摘要:“按金額匯總銷售額”及“各國雇員銷售額”查詢正文: 10按金額匯總銷售額 “按年度匯總銷售額”查詢統(tǒng)計了1997年訂單的小計金額在2500元以上的訂單,為“按金額匯總銷售額”報表提供數(shù)據。進入設計視圖: 查詢的數(shù)據來自于“客戶”,“訂單”表及“訂單小計”查詢。對小計字段另取名稱為“銷售金額”,加上條件“2500”,表示只要訂單小計在2500元以上的記錄;發(fā)貨日期加上條件“Between #1997-1-1#and #1997-12-31# ”表示只要發(fā)貨日期在1997年的記錄。兩個條件在同一行表示要求同求滿足。11各國雇員銷售額 “各國雇員銷售額”查詢統(tǒng)計各國雇員的銷售情況,為“各國雇員銷售額”報表提供數(shù)據。進入設計視圖: 查詢的數(shù)據來自于“雇員”,“訂單”表及“訂單小計”查詢,發(fā)貨日期字段的條件為“Between 起始日期 And 終止日期”,因為表中并沒有起始日期字段,所以運行時,ACCESS會將它看作一個參數(shù),并跳出提示框,終止日期同理,在運行時輸入正確的參數(shù),并會得到查詢結果。羅斯文數(shù)據庫學習連載(26)摘要:“各年銷售額”及“發(fā)貨單”查詢正文: 12各年銷售額 “各年銷售額”查詢統(tǒng)計某一年的每個訂單的銷售情況,為“各年銷售額”報表提供數(shù)據。進入設計視圖: 查詢的數(shù)據來自于“訂單”表及“訂單小計”查詢,年份是個計算字段,用了一個Format()函數(shù),這是一個文本格式函數(shù),具體參數(shù)及用法請查看幫助。重點來看發(fā)貨日期的條件設置,這個條件由兩部分組成,中間用“And”聯(lián)結,表示要同時滿足前后兩個條件,前面一半為“Is Not Null”代表發(fā)貨日期不能為空,后面一半為“Between Forms!各年銷售額對話框!起始日期 And Forms!各年銷售額對話框!終止日期”,這也是一個“Between and ”的用法,只不過里面引用了兩個窗體中的參數(shù),F(xiàn)orms!各年銷售額對話框!起始日期代表“各年銷售額對話框”窗體中的“起始日期”中的值,終止日期同理,在運行中,如果“各年銷售額對話框”窗體是打開的并能讀取到相關參數(shù),則直接給出運行結果,否則象“各國雇員銷售額”查詢中一樣,跳出提示框要求輸入。事實上好多報表都會從窗體或報表中讀取一些數(shù)據作為報表的計算依據,我們要熟悉這種參數(shù)的設置方法。13發(fā)貨單“發(fā)貨單”查詢詳細統(tǒng)計出每個訂貨單的詳細信息,包括訂單情況,貨主情況等,為“發(fā)貨單”報表提供數(shù)據。進入設計視圖: 這個查詢選擇的表很多,其實在設計時方法還是一樣的,分別選擇如上圖的6個表,根據需要選擇相應的字段,其中銷售人字段是個計算字段,把姓氏和名字聯(lián)在一起顯示,用到一個聯(lián)接運算符,總價字段也是一個計算字段,與前面例中的計算方法相同。對于表中設置的一些屬性會在查詢中直接帶過來,如在相聯(lián)接的兩個表“客戶”和“訂單”表中有相同的兩個字段“客戶ID”,如選擇“客戶”表中的“客戶ID”顯示的是ID號,而選擇“訂單”表中的“客戶ID”顯示的是客戶名稱,這是由于“訂單”表中的該字段設了查閱屬性的緣故,不過字段中實際存儲的值都是一樣的,只是影響顯示,可根據需要從相關表中選擇相應字段。在這個查詢中在“總計”行對每個字段都采用了“分組”,其實這樣的效果和排序是一樣的,如不用“分組”而對每個字段依次進行排序,運行的結果也是一樣的。當然如果需要分組計算時,則是不可替代的羅斯文數(shù)據庫學習連載(27)摘要:“各類銷售額”及“1997年產品銷售額”查詢正文: 14各類銷售額 “各類銷售額”查詢?yōu)椤案黝愪N售額”報表提供數(shù)據,統(tǒng)計了1997年各類產品的銷售情況。進入設計視圖: 這個查詢的數(shù)據來自于個表及一個“擴展訂單明細”查詢,查詢中對類別及產品名稱進行了多級分類,再對分類后的產品求出銷售總金額。所以在查詢中“類別ID”,“類別名稱”及“產品名稱”字段的“總計”行都設為分組字段,總價字段是計算字段要進行求和,所以設成“總計”,另取名稱為“產品銷售額”。在這種多級分類統(tǒng)計的查詢中一樣可以設置條件,本例中的訂購日期,不要顯示,只是作為條件字段,所以“總計”行設為“條件”,條件為“Between and ”的名型,查詢出1997年的數(shù)據。151997年產品銷售額 “1997年產品銷售額”查詢統(tǒng)計出不同類別的產品在不同季度的銷售額,為“1997年各類銷售總額”查詢提供數(shù)據。進入設計視圖: 查詢的數(shù)據來自于上圖中的四個表,其中“發(fā)貨季度”字段是個計算字段,用到了一個日期函數(shù)DatePart(),具體的參數(shù)和用法可以查看幫助,在本例中取日期中的季度,結果為1-4中的一個值,后面加上一個聯(lián)接字符串,現(xiàn)加上季度,可以形成“季度”這樣的字符串。在“總計”行:需要分組的字段“類別名稱”,“產品名稱”,“發(fā)貨季度”設成“分組”,而且分類應是有先后的,大類放在前面;需要設置條伯的字段“發(fā)貨日期”設成“條件”;需要計算的計算的字段“產品銷售額”設成“表達式”。羅斯文數(shù)據庫學習連載(28)摘要:“1997年各類銷售總額”及“高于平均價格的產品”查詢正文: 161997年各類銷售總額 “1997年各類銷售總額”查詢以“1997年的總銷售額”查詢?yōu)閿?shù)據,進一步查詢出每種類別的銷售總額,比較簡單,詳見設計視圖: 其實本例也不一定非要通過“1997年的總銷售額”查詢來產生。也可以如下圖設置生成,運行結果也是完全一樣的。17高于平均價格的產品 “高于平均價格的產品”查詢,以產品平均價格作為衡量依據,統(tǒng)計出比平均價格高的產品。 進入設計視圖: 這個查詢的數(shù)據來自于“產品”表,選擇的字段也很簡單,只有兩個“產品名稱”與“單價”,這個查詢的關鍵在于設置“單價”字段的條件,并不是所有的產品都顯示出來,單價大于平均價的才顯示出來,條件中用到比較運算符“”,平均價格哪里來呢,在本例中用了一個SQL查詢語句,也叫子查詢。象這種在條件中包含SQL語句的查詢叫嵌套查詢,可以進行多層嵌套。用“Select AVG(單價 From 產品”來求出產品表中所有單價的平均值。本例的條件中如果不用子查詢,改用函數(shù)也是可以的,可以改成“DAvg(單價,產品)”。羅斯文數(shù)據庫學習連載(29)摘要:“各城市的客戶和供應商”查詢正文: 18各城市的客戶和供應商“各城市的客戶和供應商”查詢是一個聯(lián)合查詢,它將“客戶”表和“供應商”表的信息聯(lián)合在一起,查詢出每個城市的客戶及供應商。聯(lián)合查詢由多個Selec

溫馨提示

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

評論

0/150

提交評論