tft每日頭條

 > 生活

 > transform使用後出現滾動條

transform使用後出現滾動條

生活 更新时间:2025-01-10 12:24:45

大家好,今日繼續講解VBA數據庫解決方案,今日講解的是第72講,内容是:轉置函數在查詢中的利用。數據處理的結果是要形成一個比較好看易懂的報表,如何能做出我們需要的格式,這就要我們靈活的運用所學到的知識,大膽的進行嘗試。今天講的是轉置函數,這個函數在數組中經常的用到,我們看看在數據庫中,這個函數是怎麼利用的 。

實例,如下的工作表中數據,我們要形成一個彙總的表格, 這個彙總的表格中含有姓名,和每個人的銷售總額,

transform使用後出現滾動條(TRANSFORM轉置查詢的利用)1

同時我們要從數據中反饋出每個人每個月的銷售情況,也就是說還要把日期B列轉換為記錄集的字段進行彙總,如何實現這個功能呢?這就要用到轉置函數了.下面先看我的代碼,然後我會在講解中給大家講到.

Sub mynzRecords_72() '第72講 查詢後的彙總與轉置

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("72").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';" _

& "data source=" & strPath

'建立起一個轉置的查詢

strSQL = "TRANSFORM SUM(銷售額) SELECT 姓名,SUM(銷售額) AS 合計 " _

& "FROM [數據6$] GROUP BY 姓名 PIVOT FORMAT(日期,'mm月')"

'打開記錄集

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i) = rsADO.Fields(i - 1).Name

Next

'提出數據

Range("a2").CopyFromRecordset rsADO

'釋放内存

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代碼截圖:

transform使用後出現滾動條(TRANSFORM轉置查詢的利用)2

代碼講解:

1 上述代碼将完成一個轉置的查詢結果,将月份的值作為字段來進行分類。

2 strSQL = "TRANSFORM SUM(銷售額) SELECT 姓名,SUM(銷售額) AS 合計 " _

& "FROM [數據6$] GROUP BY 姓名 PIVOT FORMAT(日期,'mm月')"

這句的代碼是利用一個轉置函數TRANSFORM PIVOT的格式來實現我們的要求。

所謂轉置函數,即TRANSFORM...PIVOT... 語句,這是Microsoft JET Engine 3.5以上版本所特有的SQL查詢語句,該語句的特點是可以建立一個交叉表格式的查詢。該語句可以将表中的某些數據作為行,某些數據作為列建立交叉表。

該語句的語法如下:

TRANSFORM condition [select opreation] PIVOT column

特别注意點:

① TRANSFORM和Pivot後面都隻能有一個字段。

② condition是在交叉表中要顯示的數據,select opreation 是一個SELECT...FROM... 查詢,該查詢形成交叉表的行信息,PIVOT中column為表中的一個字段,PIVOT語句使用該字段形成交叉表的列。

③ 上面的格式用另外的表達方式為:Transfrom 數據區域 select 行字段 from (數據源) group by 分組依據 pivot 列字段

下面看代碼的運行結果:

transform使用後出現滾動條(TRANSFORM轉置查詢的利用)3

今日内容回向:

1 轉置函數在什麼情況下應用?

2 轉置函數的語法是什麼樣的?

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved