當前位置:首頁 » 數據倉庫 » vba代碼操作sql資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vba代碼操作sql資料庫

發布時間: 2023-07-05 20:52:59

1. 求教VBA連接sql資料庫的詳細方法及解釋。

1、基本上所有的資料庫都有對應的寫法(有些資料庫是要裝連接驅動才能連),比如"Provider=Microsoft.Jet.OLEDB.4.0(用來連接access)或者provider =MSDASQL,而且每種資料庫也可能會有多種連接方法(Provider意即資料庫引擎),常見的有下面這些

Provider 代碼 Provider
ADSDSOObject Active Directory Services
Microsoft.Jet.OLEDB.4.0 Microsoft Jet databases
MSDAIPP.DSO.1 Microsoft Internet Publishing
MSDAORA Oracle databases
MSDAOSP Simple text files
MSDASQL Microsoft OLE DB provider for ODBC
MSDataShape Microsoft Data Shape
MSPersist Locally saved files
SQLOLEDB Microsoft SQL Server
2、參見http://www.w3school.com.cn/ado/met_conn_open.asp#connectoptionenum
3、這樣就可以對book1.xlsx中的數據使用sql語法進行操作
4、當你需要返回結果的,比如說你要查詢資料庫符合某個條件的有幾條記錄,或者說取出資料庫中符合條件的一批記錄的時候就要用數據集,單一的conn.execute只能執行操作,不能返回數據,必須配合結果集使用才可取回數據。

2. 求助,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

3. vba連接SQL資料庫方法

如下:自己改一下:


Subaa()
DimcnAsNewADODB.Connection
DimrsAsNewRecordset
Str1="select區域,內=SUM(casewhen新替換區內外='替換區內'then1else0end),外=SUM(casewhen新替換區內外='替換區外'then1else0end)from宏站groupby區域"

strcn="Provider=sqloledb;Database=test;Uid=sa;Pwd=30687724;datasource=127.0.0.1,1433;"
cn.Openstrcn
rs.OpenStr1,cn
Dimi
Fori=1Tors.Fields.Count
Cells(1,i)=rs.Fields(i-1).Name』FIELDS是從0開始的,所以這里要-1


Range("a2").CopyFromRecordsetrs
Nexti

4. 用vba如何連接網上的sql資料庫

代碼如下:有問題,發網路消息給我。

在Microsoft visual basic中,工具-引用 Microsoft ActiveX Data Objects 2...選一個高版本的

Dim conn As New ADODB.Connection
connStr = "Driver={SQL Server};DataBase=test;Server=(local);UID=sa;PWD=123"
conn.Open connStr '連接資料庫
Dim rs As New Recordset
sql = "select * from a" '查看錶a
rs.Open sql, conn, 3, 3
Do While Not rs.EOF '循環表a的內容
MsgBox (rs("field1")) '顯示表中field1欄位內容
rs.MoveNext
Loop

'connStr = "Driver={SQL Server};DataBase=test;Server=(local);UID=sa;PWD=123"
'test是資料庫名
'(local)是伺服器名或IP地址,可以:192.168.1.1,可以是:www.sina.com.cn
'sa是資料庫用戶
'123是資料庫用戶密碼

5. Excel 求助,如何使用VBA實現遠程訪問SQL資料庫

VBA
連接
SQL
SERVER
資料庫
實例:
Dim
strConn
As
String,
strSQL
As
String
Dim
conn
As
ADODB.Connection
Dim
ds
As
ADODB.Recordset
Dim
col
As
Integer
'連接資料庫的字元串
strConn
=
"Provider=SQLOLEDB.1;Persist
Security
Info=True;User
ID=[user];Password=[password];Initial
Catalog=[database];Data
Source=[資料庫IP地址或資料庫伺服器名稱];Connect
Timeout=720;
"
'查詢語句,如果sql語句很長可以用strSQL=strSQL+來連接分成多段的語句,如果語句很短可以只寫在一行上。
strSQL
=
"select
*
from
Hy_KPI_Shop_Dept_WeekRpt
"
strSQL
=
strSQL+"where
sdate='2014-01-01'
order
by
sdate,shopid
"
Set
conn
=
New
ADODB.Connection
Set
ds
=
New
ADODB.Recordset
'打開資料庫連接
conn.Open
strConn
'該句和資料庫連接字元串處的Connect
Timeout=720,表示說如果語句運行時間很長,這兩句可以延長vba的等待時間,沒有這兩句,vba往往會報查詢超時。
conn.CommandTimeout
=
720
With
ds
'根據查詢語句獲得數據
.Open
strSQL,
conn
'自動控制加入所有列標題
For
col
=
0
To
ds.Fields.Count
-
1
'請注意Offset(0,
col)中的參數一定要正確,該句表示標題將會寫在第一行,從A1單元格開始,如果不想寫入標題行,可將下面這句注釋掉。
Worksheets("門店各課KPI周報").Range("A1").Offset(0,
col).Value
=
ds.Fields(col).Name
Next
'加入所有行數據,該句表示查詢結果將會寫在第一行,從A1單元格開始,但是由於標題行寫在第一行了,所以實際這一行從標題下的一行寫入。
Worksheets("sheet1").Range("A1").Offset(1,
0).CopyFromRecordset
ds
End
With
'關閉資料庫連接和清空資源
Set
ds
=
Nothing
conn.Close
Set
conn
=
Nothing

6. Excel VBA 連接SQL資料庫後的操作。

呵呵,以前就幫人家解決過這個,請看下面的代碼,有注釋的!
Private Sub CommandButton5_Click()
Dim Conn As New ADODB.Connection '定義ADODB連接對象
Dim ConnStr As String '定義連接字元串
Dim xiao As String

xiao = ComData.Text

'對於SQL 2008,如果以IP方式訪問伺服器,必須要啟動SQL Server Browser服務,如果是Express版本,要以「IP(計算機名)\實例名」方式訪問
ConnStr = txtData.Text

Dim Records As New ADODB.Recordset '定義ADODB對象的記錄集
Dim Sheet As Worksheet '定義工作表

Set Sheet = ThisWorkbook.Worksheets("Sheet2") '給變數Sheet賦值,注意:是工作簿中索引為1的那個表(通常一個新的工作簿Sheet1的索引為1)
'Sheet.Name = "Data" '把Sheet名稱改為Data
Sheet.Cells.Clear '清空表中原有的數據

'連接狀態是打開就不在進行Open操作

Conn.Open ConnStr
Dim SQLStr As String '要執行的SQL語句
SQLStr = "select * from Shift_Code where Club='" + xiao + "'" '可以執行更復雜的SQL語句

Records.Open SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '讀取SQL查詢結果到Records記錄集
'Records.Open
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = Records.RecordCount
TotalColumns = Records.Fields.Count

'下面的循環把表頭(即列名)寫到Excel表的第一行
For i = 0 To TotalColumns - 1
Sheet2.Cells(1, i + 1) = Records.Fields(i).Name
Next

'下面的循環把查詢結果寫到Excel表中
Do While Not Records.EOF

For i = 0 To TotalColumns - 1
Sheet2.Cells(j + 2, i + 1) = Records.Fields(i).Value
Next

Records.MoveNext
j = j + 1

Loop
Records.Close '關閉記錄集
Conn.Close '關閉連接

Set Records = Nothing '清空對象
Set Conn = Nothing '清空對象

End Sub

有什麼不懂的話Hi我!

7. 用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」

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

8. VBA 怎樣調用sql的語句

Dim cn As New ADODB.Connection '定義數據鏈接對象 ,保存連接資料庫信息;請先添加ADO引用
Dim rs As New ADODB.Recordset '定義記錄集對象,保存數據表
Dim strCn As String, strSQL As String '字元串變數
Dim i As Integer, j As Integer, sht As Worksheet

strCn = "Provider=SQLOLEDB.1;Password=psw;Persist Security Info=True;User ID=userid;Initial Catalog=hrlink ;Data Source=127.0.0.1"
strSQL = "select * from table"

cn.Open strCn
rs.Open strSQL, cn