5,139
社区成员
发帖
与我相关
我的任务
分享
Sub 按钮2_Click()
Dim Conn As New ADODB.Connection '定义ADODB连接对象
Dim ConnStr As String '定义连接字符串
'对于SQL 2008,如果以IP方式访问服务器,必须要启动SQL Server Browser服务,如果是Express版本,要以"IP(计算机名)\实例名"方式访问
ConnStr = "Provider=SQLOLEDB;Data Source = CEINET-EBE049E8\SQLEXPRESS;Initial Catalog = WatchSystem;Integrated Security=SSPI;"
Dim Records As New ADODB.Recordset '定义ADODB对象的记录集
Dim Sheet As Worksheet '定义工作表
Set Sheet = ThisWorkbook.Worksheets(1) '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)
Sheet.Cells.Clear '清空表中原有的数据
Dim SQLStr As String '要执行的SQL语句
SQLStr = "EXEC WatchSystem.dbo.test1"
Conn.Open ConnStr
Set Records = New ADODB.Recordset
Records.Open SQLStr, Conn, adOpenStatic, adLockOptimistic '读取SQL查询结果到Records记录集
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = Records.RecordCount
TotalColumns = Records.Fields.Count
'下面的循环把表头(即列名)写到Excel表的第一行
For i = 0 To TotalColumns - 1
Next
'下面的循环把查询结果写到Excel表中
Do While Not Records.EOF
For i = 0 To TotalColumns - 1
Sheet.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
我把sql语句都写在存储过程里了,要是把存储过程里的语句换成简单的sql就没有问题,要是不换就报错