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