SQL語言在ACCESS數(shù)據(jù)庫中的應(yīng)用_第1頁
SQL語言在ACCESS數(shù)據(jù)庫中的應(yīng)用_第2頁
SQL語言在ACCESS數(shù)據(jù)庫中的應(yīng)用_第3頁
SQL語言在ACCESS數(shù)據(jù)庫中的應(yīng)用_第4頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.Access 開發(fā)人員參考SELECT語句 (Microsoft Access SQL)指示 Microsoft Access數(shù)據(jù)庫引擎將數(shù)據(jù)庫中的信息作為一組記錄返回。語法SELECTpredicate * | table.*| table.field1AS alias1,table.field2AS alias2, .FROM tableexpression , . INexternaldatabaseWHERE. GROUPBY. HAVING. ORDER BY. WITH OWNERACCESS OPTIONSELECT語句包含以下部分:部分說明下列謂詞之一: ALL、DISTIN

2、CT、DISTINCTROW或 TOP??梢允褂弥^詞來限定返回記錄的數(shù)量。如predicate果沒有指定謂詞,則默認(rèn)值為ALL 。*指定選擇指定表中的所有字段。table表的名稱,該表包含從中選擇記錄的字段。field1、field2字段名,這些字段包含了要檢索的數(shù)據(jù)。如果包括多個(gè)字段,將按它們的排列順序?qū)ζ溥M(jìn)行檢索。alias1和用作列標(biāo)題的名稱,不是table中的原始列名。alias2tableexpression表名稱,其中包含要檢索的數(shù)據(jù)。externaldatabas如果 tableexpression中的表不在當(dāng)前數(shù)據(jù)庫中,則使用該參數(shù)指定該數(shù)據(jù)庫名。e說明若要執(zhí)行此項(xiàng)操作, Mi

3、crosoft? Jet 數(shù)據(jù)庫引擎會(huì)搜索指定的表,并提取選定的列,再選擇符合條件的行,然后按指定的順序?qū)Φ玫降男羞M(jìn)行排序或分組。SELECT語句不會(huì)更改數(shù)據(jù)庫中的數(shù)據(jù)。SELECT通常是 SQL 語句中的第一個(gè)詞。大多數(shù)SQL 語句都是 SELECT 或 SELECT.INTO 語句。SELECT語句最簡(jiǎn)化的語法為:SELECT fields FROM table可以通過星號(hào)(*)來選擇表中所有的字段。以下的示例選擇在Employees表中的所有字段:SELECT * FROM Employees;.專業(yè)資料 .如果一個(gè)字段名包括于FROM 子句的多個(gè)表中,請(qǐng)?jiān)谠撟侄吻懊婕由媳砻? (圓點(diǎn)

4、)號(hào)。在下面的示例中, Department 字段同時(shí)存在于 Employees 表和 Supervisors 表中。 SQL 語句從 Employees 表中選擇出部門并從 Supervisors 表中選擇出主管名:SELECT Employees.Department, Supervisors.SupvNameFROM Employees INNER JOIN SupervisorsWHERE Employees.Department = Supervisors.Department;創(chuàng)建 Recordset對(duì)象時(shí), Microsoft Jet數(shù)據(jù)庫引擎將使用表的字段名作為Recordse

5、t對(duì)象中的Field對(duì)象名。如果需要其他字段名或者名稱不適合用來生成該字段的表達(dá)式,請(qǐng)使用AS 保留字。以下示例使用標(biāo)題Birth來命名生成的Recordset對(duì)象中的返回Field對(duì)象:SELECT BirthDateAS Birth FROM Employees;只要使用的聚合函數(shù)或查詢返回的是不明確的或重復(fù)的Field對(duì)象名稱,就必須使用AS 子句為該Field 對(duì)象另外提供一個(gè)替代名稱。 以下示例使用標(biāo)題 HeadCount 來命名生成的 Recordset 對(duì)象中的返回 Field 對(duì)象:SELECT COUNT(EmployeeID)AS HeadCount FROM Employ

6、ees;可以在 SELECT 語句中使用其他子句進(jìn)一步約束和組織所返回的數(shù)據(jù)。有關(guān)詳細(xì)信息, 請(qǐng)參閱相應(yīng)子句的幫助主題。示例下面的一些示例假定 Employees 表中存在一個(gè)假想的 Salary 字段。請(qǐng)注意,該字段實(shí)際并不存在于羅斯文數(shù)據(jù)庫的 Employees 表中。本例基于 SQL 語句創(chuàng)建一個(gè)動(dòng)態(tài)集類型的 Recordset ,該語句選擇 Employees 表中所有記錄的 LastName 和 FirstName 字段。它調(diào)用 EnumFields 過程,該過程將 Recordset 對(duì)象的容顯示到調(diào)試窗口。Sub SelectX1()Dim dbs As Database, rs

7、t As Recordset Modify this line to include the path to Northwind on your computer.專業(yè)資料 .Set dbs = OpenDatabase(Northwind.mdb) Select the last name and first name values of all records in the Employees table.Set rst = dbs.OpenRecordset(SELECT LastName, _& FirstName FROM Employees;) Populate the recor

8、dset. rst.MoveLast Call EnumFields to print the contents of the Recordset.EnumFields rst,12dbs.CloseEnd Sub以下示例計(jì)算PostalCode字段中有條目的記錄數(shù),并將返回的字段命名為Tally。Sub SelectX2()Dim dbs As Database, rst As Recordset Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwin

9、d.mdb) Count the number of records with a PostalCode value and return the total in the Tally field.Set rst = dbs.OpenRecordset(SELECT Count _& (PostalCode) AS Tally FROM Customers;).專業(yè)資料 . Populate the Recordset. rst.MoveLast Call EnumFields to print the contents of the Recordset. Specify field widt

10、h = 12. EnumFields rst, 12dbs.CloseEnd Sub以下示例顯示雇員數(shù)以及平均薪水和最高薪水。Sub SelectX3()Dim dbs As Database, rst As Recordset Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Count the number of employees, calculate the average salary, and return the high

11、est salary.Set rst = dbs.OpenRecordset(SELECT Count (*) _& AS TotalEmployees, Avg(Salary) _& AS AverageSalary, Max(Salary) _& AS MaximumSalary FROM Employees;) Populate the Recordset.rst.MoveLast Call EnumFields to print the contents of the Recordset. Pass the Recordset object and.專業(yè)資料 . desired fie

12、ld width. EnumFields rst, 17dbs.CloseEnd Sub調(diào)用過程向 Sub 過程 EnumFields 傳遞了一個(gè) Recordset 對(duì)象。然后該過程設(shè)置 Recordset 的字段的格式并將這些字段顯示到調(diào)試窗口。intFldLen變量是需要的顯示字段寬度。有些字段可能會(huì)被截?cái)?。Sub EnumFields(rst As Recordset, intFldLen As Integer)Dim lngRecords As Long, lngFields As LongDim lngRecCount As Long, lngFldCount As LongDim

13、 strTitle As String, strTemp As String Set the lngRecords variable to the number of records in the Recordset.lngRecords = rst.RecordCount Set the lngFields variable to the number of fields in the Recordset.lngFields = rst.Fields.CountDebug.Print There are & lngRecords _& records containing & lngFiel

14、ds _& fields in the recordset. Debug.Print Form a string to print the column heading. strTitle = Record .專業(yè)資料 .For lngFldCount = 0 To lngFields - 1strTitle = strTitle _& Left(rst.Fields(lngFldCount).Name _& Space(intFldLen), intFldLen)Next lngFldCount Print the column heading. Debug.Print strTitle D

15、ebug.Print Loop through the Recordset; print the record number and field values.rst.MoveFirstFor lngRecCount = 0 To lngRecords - 1Debug.Print Right(Space(6) & _Str(lngRecCount), 6) & ;For lngFldCount = 0 To lngFields - 1 Check for Null values.If IsNull(rst.Fields(lngFldCount) ThenstrTemp = Else Set

16、strTemp to the field contents.Select Case _rst.Fields(lngFldCount).TypeCase 11strTemp = Case dbText, dbMemostrTemp = _rst.Fields(lngFldCount)Case Else.專業(yè)資料 .strTemp = _str(rst.Fields(lngFldCount)End SelectEnd IfDebug.Print Left(strTemp _& Space(intFldLen), intFldLen); Next lngFldCountDebug.Printrst.

17、MoveNextNext lngRecCountEnd SubAccess 開發(fā)人員參考SELECT.INTO 語句 (Microsoft Access SQL)創(chuàng)建生成表查詢。語法SELECT field1, field2, . INTO newtable IN externaldatabaseFROM sourceSELECT.INTO 語句包含以下部分:部分說明field1、field2要復(fù)制到新表中的字段的名稱。要?jiǎng)?chuàng)建的表的名稱。它必須符合標(biāo)準(zhǔn)命名約定。如果newtable和現(xiàn)有表同名,會(huì)發(fā)生一個(gè)可捕newtable捉的錯(cuò)誤。externaldatabas外部數(shù)據(jù)庫的路徑。有關(guān)路徑的說

18、明,請(qǐng)參閱IN 子句。esource從中選擇記錄的現(xiàn)有表的名稱。它可以是單個(gè)或多個(gè)表或查詢。說明.專業(yè)資料 .可以通過生成表查詢來存檔記錄,或制作表的備份副本,或者將副本導(dǎo)出到其他數(shù)據(jù)庫,或作為某個(gè)特定時(shí)間段的數(shù)據(jù)的報(bào)表產(chǎn)生基礎(chǔ)。 例如,可以通過每個(gè)月運(yùn)行相同的生成表查詢來生成一個(gè)月銷售區(qū)域報(bào)表。注釋您可能希望定義新表的主鍵。創(chuàng)建表時(shí),新表中的字段會(huì)繼承查詢的基表中每個(gè)字段的數(shù)據(jù)類型和字段大小,但不會(huì)傳輸其他字段或表屬性。若要將數(shù)據(jù)添加到現(xiàn)有表中,請(qǐng)使用INSERT INTO 語句,而不用創(chuàng)建追加查詢。若要在運(yùn)行生成表查詢之前查找出將要選擇哪些記錄,請(qǐng)先檢查使用相同選擇條件的SELECT語句的

19、結(jié)果。示例以下示例選擇Employees表中的所有記錄,并將它們復(fù)制到名為Emp Backup 的新表中。Sub SelectIntoX()Dim dbs As DatabaseDim qdf As QueryDef Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Select all records in the Employees table and copy them into a new table, Emp Backup.

20、dbs.Execute SELECT Employees.* INTO _& Emp Backup FROM Employees; Delete the table because this is a demonstration. dbs.Execute DROP TABLE Emp Backup;dbs.CloseEnd Sub.專業(yè)資料 .Access 開發(fā)人員參考INSERT INTO 語句 (Microsoft Access SQL)將一個(gè)或多個(gè)記錄添加到表中。該語句稱為追加查詢。語法多記錄追加查詢:INSERT INTO target (field1, field2, .) IN e

21、xternaldatabaseSELECTsource.field1, field2, .FROM tableexpression單記錄追加查詢:INSERT INTO target (field1, field2, .)VALUES (value1, value2, .)INSERT INTO 語句包含以下部分:部分說明target要追加記錄的表或查詢的名稱。field1 、field2向其中追加數(shù)據(jù)的字段的名稱(如果在target參數(shù)之后),或獲取其中數(shù)據(jù)的字段的名稱(如果在 source參數(shù)之后)。externaldatabas外部數(shù)據(jù)庫的路徑。有關(guān)路徑的說明,請(qǐng)參閱IN 子句。esou

22、rce要復(fù)制其中記錄的表或查詢的名稱。tableexpression作為插入記錄來源的表的名稱。 該參數(shù)可以是單個(gè)表名或者是從INNERJOIN、LEFTJOIN 或 RIGHTJOIN 操作或保存的查詢產(chǎn)生的組合結(jié)果。要插入新記錄特定字段中的值。每個(gè)值將插入到與該值在列表中的位置相對(duì)應(yīng)的字段:value1 將value1 、value2插入到新記錄的 field1字段, value2插入到 field2 字段等等。這些值必須用逗號(hào)分隔,并且用引號(hào) () 引起來。說明通過如上所述的單記錄追加查詢語法,可以使用INSERT INTO 語句向表中追加單個(gè)記錄。在這種情形下,代碼要指定每個(gè)記錄字段的

23、名稱和值。必須指定每一個(gè)將被賦值的記錄字段,并且要給出該字段的值。如果沒有指定每個(gè)字段的值,則在缺少值的列中插入默認(rèn)值或Null 值。記錄將追加到表的末尾。通過如上所示的多字段追加查詢語法的SELECT . FROM 子句,還可以使用 INSERT INTO 追加一組來自其他表或查詢的記錄。這種情形下,SELECT子句指定將要追加到指定的 target表中的字段。source 或 target表可以指定表或查詢。如果指定了查詢,MicrosoftAccess 數(shù)據(jù)庫引擎會(huì)將記錄追加到查詢指定的任何表或所有表中。INSERT INTO 是可選的,但是如果包括它,應(yīng)將它置于SELECT語句前面。.

24、專業(yè)資料 .如果目標(biāo)表中包含主鍵,請(qǐng)確保追加到主鍵字段中的值是唯一的、非Null的;否則, MicrosoftAccess 數(shù)據(jù)庫引擎不會(huì)追加這些記錄。如果將一個(gè)自動(dòng)編號(hào)字段記錄追加到一個(gè)表中, 并且希望對(duì)該追加的記錄重新編號(hào), 那么不要在查詢語句中包含自動(dòng)編號(hào)字段。如果希望保持字段的原始值,請(qǐng)務(wù)必在查詢語句中包含自動(dòng)編號(hào)字段。通過 IN子句可以將記錄追加到其他數(shù)據(jù)庫的表中。若要新建表,請(qǐng)使用SELECT. INTO語句來創(chuàng)建一個(gè)生成表查詢。若要在運(yùn)行追加查詢之前找出將要追加哪些記錄, 可以先執(zhí)行使用同樣選擇條件的選擇查詢并查看其結(jié)果。追加查詢把記錄從一個(gè)或多個(gè)表復(fù)制到其他表中。包含所追加的記

25、錄的表不會(huì)受追加查詢影響。如果不想從其他表中追加現(xiàn)有記錄, 可以通過 VALUES 子句指定每個(gè)字段在新的單個(gè)記錄中的值。 如果忽略了字段列表, VALUES子句必須包括該表中每個(gè)字段的值;否則, INSERT 操作將會(huì)失敗。通過附加的帶有 VALUES 子句的 INSERT INTO 語句,可以創(chuàng)建希望得到的每一個(gè)新增記錄。示例本例選擇假想的 New Customers 表中的所有記錄并將這些記錄添加到 Customers 表。如果未指定各個(gè)列,那么 SELECT 中的表列名必須與 INSERT INTO 中的表列名完全匹配。Sub InsertIntoX1()Dim dbs As Data

26、base Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Select all records in the New Customers table and add them to the Customers table.dbs.Execute INSERT INTO Customers _& SELECT * _& FROM New Customers;dbs.CloseEnd Sub.專業(yè)資料 .以下示例在 Employees表中

27、創(chuàng)建一個(gè)新記錄。Sub InsertIntoX2()Dim dbs As Database Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Create a new record in the Employees table. The first name is Harry, the last name is Washington, and the job title is Trainee.dbs.Execute INSERT INT

28、O Employees _& (FirstName,LastName, Title) VALUES _& (Harry, Washington, Trainee);dbs.CloseEnd SubAccess 開發(fā)人員參考UPDATE語句 (Microsoft Access SQL)創(chuàng)建一個(gè)更新查詢,以便基于特定的條件更改指定表的字段值。語法UPDATE tableSET newvalueWHERE criteria;UPDATE語句包含以下部分:部分說明table表名,該表包含要修改的數(shù)據(jù)。newvalue表達(dá)式,該表達(dá)式確定將要插入到已更新記錄的特定字段的值。criteria表達(dá)式,用來確

29、定將更新哪些記錄。只有滿足該表達(dá)式的記錄才會(huì)被更新。說明.專業(yè)資料 .當(dāng)需要更改多個(gè)記錄或者需要更改的記錄存在于多個(gè)表中時(shí),UPDATE語句是最有用的??梢酝瑫r(shí)更改多個(gè)字段。 下面的示例把英國貨主的訂貨量的值增加百分之十, 并且把運(yùn)費(fèi)的值增加百分之三。UPDATE OrdersSET OrderAmount = OrderAmount * 1.1,Freight = Freight * 1.03WHERE ShipCountry = UK;要點(diǎn)UPDATE不會(huì)生成結(jié)果集。而且,使用更新查詢來更新記錄后,您不能取消該操作。如果希望了解已更新哪些記錄, 請(qǐng)先檢查使用相同條件的選擇查詢的結(jié)果,然后再

30、運(yùn)行更新查詢。不論什么時(shí)候都要維護(hù)數(shù)據(jù)的備份。如果更新了錯(cuò)誤記錄,您可以從備份副本中檢索這些記錄。示例以下示例將當(dāng)前的ReportsTo值為 2的所有雇員記錄的ReportsTo字段中的值改為5 。Sub UpdateX()Dim dbs As DatabaseDim qdf As QueryDef Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Change values in the ReportsTo field to 5 fo

31、r all employee records that currently have ReportsTo values of 2.dbs.Execute UPDATE Employees _& SET ReportsTo = 5 _& WHERE ReportsTo = 2;.專業(yè)資料 .dbs.CloseEnd SubAccess 開發(fā)人員參考DELETE 語句 (Microsoft Access SQL)創(chuàng)建一個(gè)刪除查詢,用于從FROM子句中列出的一個(gè)或多個(gè)表中刪除滿足WHERE子句的記錄。語法DELETE table.*FROM tableWHERE criteriaDELETE語句包含

32、以下部分:部分說明table從中刪除記錄的表的名稱,可選。table從中刪除記錄的表的名稱。criteria表達(dá)式,用于確定要?jiǎng)h除哪些記錄。注解希望刪除多個(gè)記錄時(shí),DELETE語句特別有用。要從數(shù)據(jù)庫中刪除整個(gè)表,可以使用帶有 DROP語句的 Execute 方法。但是,如果刪除表,表的結(jié)構(gòu)就會(huì)丟失;而使用 DELETE 語句時(shí),只會(huì)刪除表中的數(shù)據(jù),表的結(jié)構(gòu)和所有表屬性(如字段屬性和索引)將保持不變。可以使用 DELETE 從與其他表存在一對(duì)多關(guān)系的表中刪除記錄。 當(dāng)查詢中刪除了關(guān)系的某一方中的相應(yīng)記錄時(shí),級(jí)聯(lián)刪除操作會(huì)刪除在關(guān)系的多方表中的相應(yīng)記錄。例如,在“客戶”表和“訂單”表的關(guān)系中,“

33、客戶”表是關(guān)系的一方,而“訂單”表則是關(guān)系中的多方。如果指定了級(jí)聯(lián)刪除選項(xiàng),那么從“客戶”表中刪除一個(gè)記錄將導(dǎo)致“訂單”表中相應(yīng)的記錄被刪除。刪除查詢將刪除整個(gè)記錄,而不僅僅刪除特定字段中的數(shù)據(jù)。如果要?jiǎng)h除特定字段的值,請(qǐng)創(chuàng)建一個(gè)更新查詢,將相應(yīng)字段的值更改為 Null 。要點(diǎn)使用刪除查詢刪除記錄后,無法取消該操作。如果要知道刪除了哪些記錄,先檢查使用相同條件的選擇查詢的結(jié)果,然后運(yùn)行刪除查詢。不論什么時(shí)候都要維護(hù)數(shù)據(jù)的備份。如果錯(cuò)刪了記錄,還可以從備份中檢索這些記錄。示例.專業(yè)資料 .本例刪除職務(wù)為 Trainee 的雇員的所有記錄。 當(dāng) FROM 子句中僅包含一個(gè)表時(shí), 您不必在 DELE

34、TE 語句中列出該表的名稱。Sub DeleteX()Dim dbs As Database, rst As Recordset Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb) Delete employee records where title is Trainee. dbs.Execute DELETE * FROM _& Employees WHERE Title = Trainee;dbs.CloseEnd SubAcces

35、s 開發(fā)人員參考EXECUTE語句 (Microsoft Access SQL)用于啟動(dòng)過程的執(zhí)行。語法EXECUTE procedure param1, param2,EXECUTE語句包含以下部分:部分說明procedure要執(zhí)行的過程的名稱。param1, param2,由過程定義的參數(shù)的值。示例以下示例將查詢命名為CategoryList。以下示例調(diào)用EnumFields過程,您可以在SELECT 語句示例中找到該過程。.專業(yè)資料 .Sub ProcedureX()Dim dbs As Database, rst As RecordsetDim qdf As QueryDef, str

36、Sql As String Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb)strSql = PROCEDURE CategoryList; _& SELECT DISTINCTROW CategoryName, _& CategoryID FROM Categories _& ORDER BY CategoryName; Create a named QueryDef based on the SQL statement.Set qd

37、f = dbs.CreateQueryDef(NewQry, strSql) Create a temporary snapshot-type Recordset. Set rst = qdf.OpenRecordset(dbOpenSnapshot) Populate the Recordset.rst.MoveLast Call EnumFields to print the contents of the Recordset. Pass the Recordset object and desired field width.EnumFields rst, 15 Delete the Q

38、ueryDef because this is a demonstration.專業(yè)資料 .dbs.QueryDefs.Delete NewQrydbs.CloseEnd SubAccess 開發(fā)人員參考TRANSACTION語句 (Microsoft Access SQL)用于初始化和結(jié)束顯式事務(wù)處理。語法初始化新事務(wù)處理。BEGIN TRANSACTION通過提交事務(wù)處理期間執(zhí)行的所有工作來結(jié)束事務(wù)處理。COMMIT TRANSACTION | WORK通過回滾事務(wù)處理期間執(zhí)行的所有工作來結(jié)束事務(wù)處理。ROLLBACK TRANSACTION | WORK說明事務(wù)處理不會(huì)自動(dòng)啟動(dòng)。若要啟動(dòng)

39、一個(gè)事務(wù)處理,必須通過BEGIN TRANSACTION進(jìn)行顯式調(diào)用。事務(wù)處理嵌套的最大深度為五級(jí)。若要啟動(dòng)一個(gè)嵌套事務(wù)處理,請(qǐng)?jiān)诂F(xiàn)有的事務(wù)處理上下文中使用 BEGIN TRANSACTION。表不支持事務(wù)處理。Access 開發(fā)人員參考TRANSFORM語句 (Microsoft Access SQL)創(chuàng)建交叉表查詢。語法TRANSFORM aggfunctionselectstatementPIVOT pivotfield IN (value1,value2, .)TRANSFORM語句包含以下部分:部分說明.專業(yè)資料 .aggfunction對(duì)所選數(shù)據(jù)進(jìn)行計(jì)算的SQL 聚合函數(shù) 。sel

40、ectstatementSELECT語句。pivotfield希望用于創(chuàng)建查詢結(jié)果集中列標(biāo)題的字段或表達(dá)式。value1 、value2用于創(chuàng)建列標(biāo)題的固定值。說明使用交叉表查詢匯總數(shù)據(jù)時(shí), 將從作為列標(biāo)題的指定字段或表達(dá)式中選擇值, 以便能夠以一種比使用選擇查詢更緊湊的方式來查看數(shù)據(jù)。TRANSFORM是可選的,但如果包括它,則應(yīng)為SQL 字符串中的第一個(gè)語句。它在指定作為行標(biāo)題的字段的 SELECT 語句之前,在指定行分組方法的GROUPBY 子句之前。您也可以包含其他子句 (例如。指定其他選擇或排序條件的WHERE)。還可以在交叉表查詢中使用子查詢作為謂詞,特別是在WHERE子句中。pi

41、votfield中返回的值作為查詢結(jié)果集中的列標(biāo)題。例如,在交叉表查詢中如果依據(jù)月銷售量來透視銷售數(shù)據(jù),將會(huì)創(chuàng)建12個(gè)列??梢约s束pivotfield以便從可選 IN子句中所列出的固定值(value1 ,value2 )選擇標(biāo)題。也可以包含固定值用于沒有數(shù)據(jù)來創(chuàng)建其他列的情況。示例以下示例使用 SQL TRANSFORM子句創(chuàng)建交叉表查詢,以顯示每個(gè)雇員在 1994 年的每個(gè)日歷季度完成的訂單數(shù)。運(yùn)行此過程需要使用 SQLTRANSFORMOutput函數(shù)。Sub TransformX1()Dim dbs As DatabaseDim strSQL As StringDim qdfTRANSF

42、ORM As QueryDefstrSQL = PARAMETERS prmYear SHORT; TRANSFORM _& Count(OrderID) _& SELECT FirstName & & LastName AS _& FullName FROM Employees INNER JOIN Orders _& ON Employees.EmployeeID = _& Orders.EmployeeID WHERE DatePart _& (yyyy, OrderDate) = prmYear strSQL = strSQL & GROUP BY FirstName & _.專業(yè)資料

43、 .& & LastName _& ORDER BY FirstName & & LastName _& PIVOT DatePart(q, OrderDate) Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb)Set qdfTRANSFORM = dbs.CreateQueryDef _(, strSQL)SQLTRANSFORMOutput qdfTRANSFORM, 1994dbs.CloseEnd Sub以下示例使用 SQL T

44、RANSFORM子句創(chuàng)建一個(gè)稍微復(fù)雜的交叉表查詢,以顯示每個(gè)雇員在1994 年的每個(gè)日歷季度所完成的訂單的總金額(美元)。運(yùn)行此過程需要使用SQLTRANSFORMOutput函數(shù)。Sub TransformX2()Dim dbs As DatabaseDim strSQL As StringDim qdfTRANSFORM As QueryDefstrSQL = PARAMETERS prmYear SMALLINT; TRANSFORM _& Sum(Subtotal) SELECT FirstName & _& & LastName AS FullName _& FROM Employe

45、es INNER JOIN _& (Orders INNER JOIN Order Subtotals _& ON Orders.OrderID = _& Order Subtotals.OrderID) _.專業(yè)資料 .& ON Employees.EmployeeID = _& Orders.EmployeeID WHERE DatePart _& (yyyy, OrderDate) = prmYear strSQL = strSQL & GROUP BY FirstName & _& & LastName _& ORDER BY FirstName & & LastName _& PIVOT DatePart(q,OrderDate) Modify this line to include the path to Northwind on your computer.Set dbs = OpenDatabase(Northwind.mdb)Set qdfTRANSFORM = dbs.CreateQueryDef _(, strSQL)SQLTRANSFORMOutput qdfTRANSFORM, 1994dbs.CloseEnd SubFunction SQLTRANSFORMOutput(qdfTemp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論