當前位置:首頁 » 編程語言 » vbaaccesssql

vbaaccesssql

發布時間: 2024-12-09 12:59:04

㈠ access2013 VBA中怎樣運行sql語句

sql在vba里的運用比較專業需要認真的學習研究一下,給你詳細一點的資料和一個實例

你自己學著模擬練習一下

一、簡單的查詢


1、建立查詢

數據選項卡—現有連接—瀏覽更多或者按快捷鍵Alt+D+D+D

選擇要查詢的Excel文件和文件中的的工作表,就可以將相應工作表的數據取過來。表現形式可以是表,也可以是數據透視表等。

2、SQL查詢語句

如果是挑選部分列數據,就需要用SQL語句(取所有數據也可以用SQL語句)。


建立查詢時,選擇工作表後不要點擊「確定」按鈕,而是先點擊「屬性」按鈕,彈出窗口中選擇「定義」選項卡,在命令文本框中輸入SQL查詢語句(原來的工作表名稱,表示所有數據,可以認為是取所有數據的SQL的一種特殊寫法):

Select欄位列表from[工作表名$]

--其中欄位列表就是需要選擇的欄位,數據源用工作表名稱加「$「再用中括弧括起來,例如:

selectprov_name,city_name,xs_mc,xs_codefrom[Sheet1$]

select*from[Sheet1$]--取所有數據


偶然發現,欄位名不能用no,估計是保留字,如需要,用中括弧括起來,例如:

select[no],prov_name,city_name,xs_mc,xs_codefrom[Sheet1$]

欄位名中含有特殊字元的也要用中括弧括起來,如/?空格等

Excel查詢沒有偽表概念,對於表達式的計算直接用select既可,例如

Select23+45--返回68

Selectdate()--返回當前日期

3、修改查詢語句


方法:點擊右鍵—彈出菜單—表格—編輯查詢

通過修改SQL語句可以變更所取的數據,也可以將建立查詢時的簡單SQL語句改成復雜的SQL語句。


欄位名更換:如果想換個欄位名,用「as新欄位名」既可,例如:

selectprov_nameas省,city_nameas城市,xs_mcas縣市,xs_codeas編碼from[Sheet1$]


非正常表格:數據區域(含欄位名)不在第一行

需要在工作表名稱後面指定數據范圍,例如:

selectprov_name,city_name,xs_mc,xs_codefrom[Sheet1$B2:G2000]

或者,將數據塊定義為一個名稱,假設定義為mydata,SQL語句如下:

selectprov_name,city_name,xs_mc,xs_codefrommydata

注意:使用名稱時沒有$符號,也沒有方括弧了。

數據更新:數據源發生變化,需要更新數據,方法:點擊右鍵—彈出菜單—刷新

意外:如果打開Excel文件後彈出不是選擇工作表的窗口而是一個「數據連接屬性」窗口,可以關閉這個窗口,然後將Excel應用極小化再極大化方式消除,或者在彈出選擇文件的窗口時,退回上一級文件夾,刪除那個Queries文件夾,就行了。

二、復雜的查詢

1、多表聯合

相同結構的多個表合並到一起,用union連接SQL語句,例如:

Select*from[財務部$]unionallSelect*from[市場部$]

Union是去重復的,即相同的記錄保留一個(類似distinct),Unionall則是直接相加兩個結果,不去重復。


增加一個部門欄位可以將查詢結果中的區分開來,以便知道數據來自哪個表。Union的三個一致,即:欄位的數量、類型和順序。例如:

Select「財務部」as部門,*from[財務部$]unionallSelect「市場部」as部門,*from[市場部$]

多表聯合查詢

Select*from[部門$]bm,[員工$]ygwherebm.部門編碼=yg.部門編碼跨工作簿查詢果數據不僅來自不同的工作表,還來自不同的文件,一樣可以用union聯合,例如:

Select「分公司1」as公司,「財務部」as部門,*from[F:SQL之Excel應用分公司1.xlsx].[財務部$]unionall

Select「分公司1」as公司,「市場部」as部門,*from[F:SQL之Excel應用分公司1.xlsx].[市場部$]unionall

Select「分公司2」as公司,「財務部」as部門,*from[F:SQL之Excel應用分公司2.xlsx].[財務部$]unionall

Select「分公司2」as公司,「市場部」as部門,*from[F:SQL之Excel應用分公司2.xlsx].[市場部$]

因為SQL中已經指定了文件名和表名,所以建立連接時連接誰並不重要,這種情況下,建立連接的時候就連接自己,然後再改寫SQL語句。

SubUsingSQL()
DimSqlAsString
DimjAsInteger
DimrAsInteger
DimCnnAsADODB.Connection
DimrsAsADODB.Recordset
WithSheet1
.Cells.Clear
SetCnn=NewADODB.Connection
WithCnn
.Provider="Microsoft.ACE.OLEDB.12.0"
.ConnectionString="ExtendedProperties=Excel12.0;"_
&"DataSource="&ThisWorkbook.Path&"數據.xlsx"
.Open
EndWith
Setrs=NewADODB.Recordset
Sql="Select*From[Sheet1$]"
rs.OpenSql,Cnn,adOpenKeyset,adLockOptimistic
Forj=0Tors.Fields.Count-1
.Cells(1,j+1)=rs.Fields(j).Name
Next
r=.Cells(.Rows.Count,1).End(xlUp).Row
.Range("A"&r+1).CopyFromRecordsetrs
EndWith
rs.Close
Cnn.Close
Setrs=Nothing
SetCnn=Nothing
EndSub

㈡ 請問各類數據統計分析和編程語言:Access, VBA, SQL, Python, SAS, Matlab, etc. 這些有什麼區別和聯系

首先你得對他們進行分類:
資料庫:Access、SQL、Oracle
數據分析類型:SAS、Matlab、Python、VBA
流行編程軟體:Python
其中作為資料庫現在以Oracle和SQL最流行,僅僅是管理資料庫而已
數據分析最老的是SAS,擁有大多的庫和包
Matlab相當於一個大型的計算器,對於計算非常簡單,也具備編程的效果,但是運行過慢
Python是現在主流的編程軟體之一,屬於綜合型軟體,數據分析、建站等都可以
VBA是VB衍生出來的軟體,excel自帶,具有VB的一些特性,實行軟體化非常簡單,同時也繼承了運行速度慢的基因
不知道你要走哪一行,所以不知道你會用到哪一些

㈢ Access VBA中如何使用 SQL 語句。

提問里是一段打開ADO記錄集對象的代碼,並不完整且含有錯誤。下面提供一個完整一點的代碼供參考:

PrivateSubCommand111_Click()
DimsqlAsString
'聲明ADO記錄集對象
DimrsAsADODB.Recordset
Setrs=NewADODB.Recordset'實例化記錄集對象
'拼寫SQL語句並賦值到變數
sql="SELECTDGZY.usenameFROMDGZYWHERE(((DGZY.usename)Like'張三'));"
'打開記錄集
rs.Opensql,CurrentProject.Connection,adOpenKeyset,adLockOptimistic
'利用記錄集對象進行所需的有關操作,代碼略
EndSub

㈣ excel vba 使用sql語句查詢access資料庫時,如何知道沒有查找到內容

Dim Rs As Recordset
strSQL = "SELECT DISTINCT 發站 FROM [LMSData2016.12$]"
Conn.Open strConn '打開資料庫鏈接
Set Rst = Conn.Execute(strSQL)
If rs.RecordCount > 0 Then '這個就可以判斷了,大於0的就是有數

熱點內容
瀏覽器的java支持 發布:2024-12-26 21:15:45 瀏覽:651
電商高管如何配置 發布:2024-12-26 21:13:48 瀏覽:705
批發的演算法 發布:2024-12-26 21:13:46 瀏覽:204
安卓手機在日本下載哪個導航 發布:2024-12-26 21:09:32 瀏覽:556
白雜訊加密 發布:2024-12-26 20:31:02 瀏覽:638
怎麼防止電腦刪除腳本 發布:2024-12-26 20:19:19 瀏覽:150
輸入伺服器或許可證文件怎麼輸 發布:2024-12-26 20:10:40 瀏覽:160
pythonarcgis 發布:2024-12-26 20:09:48 瀏覽:699
python初始化變數 發布:2024-12-26 20:05:27 瀏覽:179
win10清理緩存文件 發布:2024-12-26 20:04:50 瀏覽:361