
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只能执行 *** 作,不能返回数据,必须配合结果集使用才可取回数据。
如下:自己改一下:
Sub aa()Dim cn As New ADODB.Connection
Dim rs As New Recordset
Str1 = "select 区域,内=SUM(case when 新替换区内外='替换区内' then 1 else 0 end ),外=SUM(case when 新替换区内外='替换区外' then 1 else 0 end ) from 宏站 group by 区域"
strcn = "Provider=sqloledbDatabase=testUid=saPwd=30687724datasource=127.0.0.1,1433"
cn.Open strcn
rs.Open Str1, cn
Dim i
For i = 1 Tors.Fields.Count
Cells(1, i) = rs.Fields(i- 1).Name’FIELDS是从0开始的,所以这里要-1
Range("a2").CopyFromRecordset rs
Next i
Set cn = CreateObject("ADODB.Connection")Set rs = CreateObject("ADODB.Recordset")
Dim strCn As String, strSQL As String
strCn = "PROVIDER=SQLOLEDBDATA SOURCE=127.0.0.1UID=sapassword=123457DATABASE=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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)