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是資料庫用戶密碼
㈡ 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
㈢ 怎麼用vba連接mssql
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Dim strCn As String, strSQL As String
strCn = "PROVIDER=SQLOLEDB;DATA SOURCE=127.0.0.1;UID=sa;password=123457;DATABASE=abc"
cn.Open (strCn)
If cn.State <> 1 Then '如果資料庫連接未打開
rs.Close
cn.Close
MsgBox ("資料庫連接錯誤")
else
MsgBox ("資料庫連接成功")
End If
'運行SQL語句
'strSQL = "具體的SQL語句",下舉例,提取abc表中的aaa,寫入sheet1的A列
strSQL = "select aaa,bbb,ccc from abc where bbb>100"
rs.Open strSQL, cn, 1, 1
If Not (rs.BOF And rs.EOF) Then '有記錄存在
For i = 1 To rs.RecordCount
Sheets(1).Range("A" & i) = rs.Fields(0).Value
'Fields(0)對應aaa,Fields(1)對應bbb,類推
rs.MoveNext
Next
Else
MsgBox ("數據提取失敗")
End If
rs.Close
cn.Close
㈣ 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
㈤ 求助,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
㈥ excel利用vba連接sql server上的資料庫
不同一網段當然連接不上了。要在2個網段之間加個路由器,2個網段能直接通信之後才能連SQL
㈦ 在vba中怎麼用sql語句吧excel工作表和資料庫表連接查詢
摘要 VBA連接SQL SERVER資料庫操作Excel。
㈧ 關於使用VBA連接SQL資料庫獲取數據時創建臨時表的問題
跟調用存儲過程的時候是相同的解決方案。
在語句前面加上
SET
NOCOUNT
ON
因為
往臨時表插入數據的時候會產生
影響行數
這種消息
SET
NOCOUNT
ON
能屏蔽這類信息。
㈨ VBA連接SQL的問題
不知道 VarietyFirs是個啥對象,能否直接這么用,你試試
Set VarietyFirs.List = rs