VBA
连接
SQL
SERVER
实例:
Dim
strConn
As
String,
strSQL
As
String
Dim
conn
As
ADODBConnection
Dim
ds
As
ADODBRecordset
Dim
col
As
Integer
'连接数据库的字符串
strConn
=
"Provider=SQLOLEDB1;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
ADODBConnection
Set
ds
=
New
ADODBRecordset
'打开数据库连接
connOpen
strConn
'该句和数据库连接字符串处的Connect
Timeout=720,表示说如果语句运行时间很长,这两句可以延长vba的等待时间,没有这两句,vba往往会报查询超时。
connCommandTimeout
=
720
With
ds
'根据查询语句获得数据
Open
strSQL,
conn
'自动控制加入所有列标题
For
col
=
0
To
dsFieldsCount
-
1
'请注意Offset(0,
col)中的参数一定要正确,该句表示标题将会写在第一行,从A1单元格开始,如果不想写入标题行,可将下面这句注释掉。
Worksheets("门店各课KPI周报")Range("A1")Offset(0,
col)Value
=
dsFields(col)Name
Next
'加入所有行数据,该句表示查询结果将会写在第一行,从A1单元格开始,但是由于标题行写在第一行了,所以实际这一行从标题下的一行写入。
Worksheets("sheet1")Range("A1")Offset(1,
0)CopyFromRecordset
ds
End
With
'关闭数据库连接和清空资源
Set
ds
=
Nothing
connClose
Set
conn
=
Nothing
对于这种写法不是很了解,如果用ado+sql可以帮到你。
Sub bb()
Dim cnn As ADODBConnection
Dim rs As ADODBRecordset
Set cnn = New ADODBConnection
mydata = ThisWorkbookPath & "\123mdb"
With cnn
Provider = "microsoftjetoledb40"
Open mydata
End With
Set rs = New ADODBRecordset
Sql = "select Flux_Amount from Mytable"
rsOpen Sql, cnn, 3, 2
ReDim arr(rsRecordCount)
For i = 0 To rsRecordCount - 1
arr(i) = rsFields("Flux_Amount")
rsMoveNext
Next i
MsgBox Join(arr, ",")
End Sub
应该说这种用法比较主流,复制代码到vbe,然后引用ado 28,将access与excel文件放在一个文件夹,将数据库名变动一下,就可以测试了。(要改为同你的access,表名,字段名一致)
以上就是关于Excel 求助,如何使用VBA实现远程访问SQL数据库全部的内容,包括:Excel 求助,如何使用VBA实现远程访问SQL数据库、怎样用VBA取得Access数据库中的查询结果、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)