首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Excel 2007查询SQL并返回多个值

从Excel 2007查询SQL并返回多个值
EN

Stack Overflow用户
提问于 2011-02-16 07:07:50
回答 2查看 2.3K关注 0票数 2

我正在尝试获取少量数据,Excel中大约有200个字段,并从SQL中检索数据,在where子句中为每一项检索该字段。

代码语言:javascript
复制
TABLE:

ID  Name    Phone
1   Test1   1234
2   Test2   1235
3   Test3   1236


Excel:
Date   ID
2/1/11 1
2/1/11 2
2/1/11 3

我希望能够在excel中检索(希望本身不需要编写任何额外的代码-可能是简单的Excel ODBC或SQL与查询的连接)。因此,我的数据最终会出现在Excel文档中:

代码语言:javascript
复制
Excel:
Date   ID  Name    Phone 
2/1/11 1   Test1   1234
2/1/11 2   Test2   1235
2/1/11 3   Test3   1236

我不确定我的解释是否足够清楚...

我使用的是Excel2007,我也有2010年的版本。SQL是SQL Server 2000。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-16 08:29:46

阿多,我担心。

代码语言:javascript
复制
Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

''This is not the best way to refer to the workbook
''you want, but it is very convenient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

''Note that if HDR=No, F1,F2 etc are used for column names,
''if HDR=Yes, the names in the first row of the range
''can be used.
''This is the Jet 4 connection string, you can get more
''here : http://www.connectionstrings.com/excel

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

''Late binding, so no reference is needed

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")


cn.Open strCon

strSQL = "SELECT * " _
       & "FROM [Sheet1$] a " _
       & "LEFT JOIN " _
       & "[ODBC;Driver={SQL Server Native Client 10.0};" _
       & "Server=servername;Database=test;" _
       & "Trusted_Connection=yes].tbl b " _
       & "ON a.[Id]=b.[Id] "

rs.Open strSQL, cn, 3, 3


''Pick a suitable empty worksheet for the results
Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
票数 5
EN

Stack Overflow用户

发布于 2011-02-16 08:50:11

除非有充分的理由不在代码中这样做,否则您应该直接使用代码而不是sql。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5010617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档