當前位置:首頁 » 編程語言 » vba執行sql

vba執行sql

發布時間: 2022-08-19 05:53:17

❶ 在WPS的VBA中怎麼使用sql語句

方法步驟如下:

1.在網上搜索並下載「wps的vba模塊」。

2.下載解壓完成之後,雙擊」vba6chs「即可安裝:

❷ 如何在Excel,VBA中執行SQL語句

sub test()

Dim Conn As New ADODB.Connection
Dim strConn As String
Dim strSQL As String
Dim rs As New ADODB.Recordset

strConn = "Provider=sqloledb;Server=192.168.1.111;Database=db2014;Uid=用戶名;Pwd=密碼;"
Conn.Open strConn

Max_row = Range("A1").CurrentRegion.Rows.Count

for i=1 to Max_row
strSQL = "select name from sales2014 where id='" & range("A" & i).value & "'"
Conn.Execute strSQL
rs.Open strSQL, Conn, 1, 1
range("B" & i).value= rs(0)
rs.Close
Set rs = Nothing
next i

'關閉資料庫
Conn.Close
end sub

❸ VBA可以讀取.sql文件來執行裡面的多條語句嗎

看你在什麼環境下面用vba,
一般來說,將文本內容讀出來,傳遞給給vba中設置sql語句的變數即可.
比如excel的例子:
set
rsread
=
new
adodb.recordset
sqlstr
=
你所讀到的文本文件內容
rsread.open
sqlstr,
cnn,
adopenkeyset,
adlockoptimistic
rsread.movefirst

❹ 如何在VBA中執行SQL語句

Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
'cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Extended Properties=Excel 8.0;" _
& "Data Source=" & ThisWorkbook.FullName
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Extended Properties=Excel 8.0;" _
& "Data Source=" & ThisWorkbook.FullName
Debug.Print ThisWorkbook.FullName
str1 = ActiveSheet.Range("A2")
'strSql = "Select * FROM [資料庫$] Where 商品名稱 like '%" & str1 & "%'"

❺ VBA可以執行SQL文件么,求解

VBA可以執行SQL文件

Set rsRead = New ADODB.Recordset
sqlstr = 你所讀到的文本文件內容
rsRead.Open sqlstr, cnn, adOpenKeyset, adLockOptimistic
rsRead.MoveFirst

❻ Excel VBA 執行操作SQL

類似這樣
'建立連接
Set cnn = New ADODB.Connection
With cnn
.Provider ="Microsoft.ACE.OLEDB.12.0;Extended Properties=excel 12.0"
.Open "你的工作簿路徑" &"\你的工作簿名稱.xls"
End With
sqls = "select * from [sheet1$]" ' SQL語句
Set rst = cnn.Execute(sqls)
Sheets("sheet3").Range("A1").CopyFromRecordsetrst

❼ 求助,EXCEL通過VBA操作SQL資料庫

Sub 按鈕1_Click()
Dim i As Integer, j As Integer, sht As Worksheet 'i,j為整數變數;sht 為excel工作表對象變數,指向某一工作表
'Dim cn As New ADODB.Connection '定義數據鏈接對象 ,保存連接資料庫信息;請先添加ADO引用
'Dim rs As New ADODB.Recordset '定義記錄集對象,保存數據表
『工具 ---〉引用 ---〉Microsoft ActiveX data objects ....
'下面兩句就不需要增加引用ADO
Set cn = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.Recordset")
Dim strCn As String, strSQL As String '字元串變數
Dim strCond As String
strCn = "Provider=sqloledb;Server=R9HDET7;Database=dbname;Uid=username;Pwd=password" '定義資料庫鏈接字元串

'下面的語句將讀取數據表數據,並將它保存到excel工作表中:工作表為一張兩維表,記錄集也是一張兩維表

strSQL = "select CUSTOMER_NAME from VSC_BI_CUSTOMER " '定義SQL查詢命令字元串

cn.Open strCn '與資料庫建立連接,如果成功,返回連接對象cn
rs.Open strSQL, cn '執行strSQL所含的SQL命令,結果保存在rs記錄集對象中
i = 2

Set sht = ThisWorkbook.Worksheets("Test") '把sht指向當前工作簿的Test工作表
Do While Not rs.EOF '當數據指針未移到記錄集末尾時,循環下列操作
sht.Cells(i, 1) = rs("CUSTOMER_NAME") '把當前記錄的欄位1的值保存到sheet1工作表的第i行第1列
rs.MoveNext '把指針移向下一條記錄
i = i + 1 'i加1,准備把下一記錄相關欄位的值保存到工作表的下一行
Loop '循環
rs.Close '關閉記錄集,至此,程序將把某數據表的欄位1保存在excel工作表sheet1的第1列,行數等於數據表的記錄數

cn.Close '關閉資料庫鏈接,釋放資源
End Sub

❽ ACCESS中VBA調用SQL語句的問題

ID不要打上單引號:
rsql = "UPDATE 員工表 set 備注 ='" & 員工備注.Value & "' WHERE ID =" & 員工選擇框.ListIndex
如果還是不行,就再加上VAL轉化一下試試:
rsql = "UPDATE 員工表 set 備注 ='" & 員工備注.Value & "' WHERE ID =" & Val(員工選擇框.ListIndex)

❾ 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

❿ 用vba如何使用sql

一、界面設計

各控制項名稱屬性分別為:label1 、text1 、label2、text2、commandok、cmdcancel

代碼設計如下:

'首先添加一個模塊,寫上以下通用聲明和Sub main():


Public conn As ADODB.Connection '通用(聲明)

Sub main()

Set conn = New ADODB.Connection '通用(main)

conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;" _

+ "User ID=sa;password=123;Initial Catalog=denglu;Data Source=127.0.0.1" '連接資料庫代碼

conn.Open

frmLogin.Show '首先顯示登錄界面。也可以在工程屬性中設置啟動對象為Sub main()或者frmlogin窗體

End Sub

'在Frmlogin 代碼窗口,為cmdok控制項寫以下代碼:

Private Sub cmdok_Click()

If text1.Text = "" Then

MsgBox "用戶名不能為空!", vbOKOnly + vbInformation, "友情提示"

text1.SetFocus

Exit Sub '若用戶名文本框內為空,則出現提示框

End If

If text2.Text = "" Then

MsgBox "密碼不能為空!", vbOKOnly + vbInformation, "友情提示"

text2.SetFocus

Exit Sub '若輸入密碼文本框為空,也出現提示框

End If

Dim strSQl As String

strSQl = "select * from User1 where username='" & Trim$(text1.Text) & "' and pwd='" & Trim$(text2.Text) & "' "

'書寫SQL代碼,查詢User1表中是否存在窗體中用戶輸入的信息。

Dim str As New ADODB.Recordset

Set str = New ADODB.Recordset

str.CursorLocation = adUseClient

str.Open strSQl, conn, adOpenStatic, adLockReadOnly

With str

If .State = adStateOpen Then .Close

.Open strSQl

If .EOF Then

Try_times = Try_times + 1

If Try_times >= 3 Then

MsgBox "您已連續三次輸入錯誤,系統將自動關閉", vbOKOnly + vbCritical, "警告"

Unload Me '若用戶連續輸入3次錯誤密碼,則系統關閉

Else

MsgBox "對不起,用戶名不存在或密碼錯誤 !", vbOKOnly + vbQuestion, "警告"

text1.SetFocus

text1.Text = ""

text2.Text = ""

End If

Else

Unload Me '若登錄成功,則隱藏當前窗體

Form2.Show '然後顯示Form窗體

End If

End With

End Sub

Private Sub cmdCancel_Click()

End '若單擊Cmdcel按鈕,則結束應用程序

End Sub

運行中存在的問題:

代碼中有Dim conn As adodb.connection,運行時顯示"用戶定義類型未定義"

解決方法:點擊「工程」--「引用」找到「Microsoft ActiveX Data Object 2.6」

然後就就可以正常運行了。

熱點內容
車輛辦理解壓要收費怎麼處理 發布:2025-01-19 18:39:46 瀏覽:950
san存儲櫃 發布:2025-01-19 18:39:35 瀏覽:63
伏魔記安卓版怎麼什麼鍵都沒有 發布:2025-01-19 18:38:54 瀏覽:901
lol聲音文件夾 發布:2025-01-19 18:38:54 瀏覽:317
銳程cc尊貴版都有哪些配置 發布:2025-01-19 18:27:08 瀏覽:977
php手機網站 發布:2025-01-19 18:26:34 瀏覽:456
一加存儲路徑 發布:2025-01-19 18:21:01 瀏覽:446
sqlserver誤刪 發布:2025-01-19 18:21:00 瀏覽:649
球球安全中心動態密碼在哪裡 發布:2025-01-19 18:20:23 瀏覽:790
python讀取config文件 發布:2025-01-19 18:15:10 瀏覽:458