Excel的VBA - 搜索范围,并连接SQL ADODB记录集在
比赛写结果集我有两个数据源的Excel(2010)表:Excel的VBA - 搜索范围,并连接SQL ADODB记录集在
- Access 2010中的DB
- SQL Server 2008 R2的
我有A列中的数据:我来自Access DB。在A列中,我有记录的ID,这个ID对应于我的SQL DB表中的ID列。
我想通过在A列中的ID进行搜索,如果在SQL数据库的ID相匹配,我想从“coOverview”从SQL表中列J.
列在显示数据总之,“如果ID = COID,然后写coOverView列J”
我已经成功地能够连接并检索所需的记录集和复制/向下填充J列,所以我知道我能够成功连接并读取SQL表中的数据。现在我需要在coOverview数据从我的SQL表复制只有在ID A列ID
Sub RetrieveOverview()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ConnectionString As String
Dim query As String
Set cn = New ADODB.Connection
ConnectionString = "Provider=SQLOLEDB;Password=***;Persist Security Info=True;User ID=*****;Data Source=***;Initial Catalog=**"
cn.Open ConnectionString
cn.CommandTimeout = 900
query = "SELECT coOverview FROM SQLTable"
rs.Open StrQuery, cn
Sheets(1).Range("J2").CopyFromRecordset rs
End Sub
我不知道我是否应该在条件中的SQL语句或循环相匹配。
sshel207
要清楚,你拉在两个数据集中,并将它们存储在Excel单元格?如果是这样,我会将两个范围都拉入数组并写入一个简单的比较循环。如果您拥有合理数量的数据,应该足够快。 –
Kyle, 不,我没有将两个数据集都存储在单元格中。我将一个数据集存储在一个范围(A:I)中,我想使用列A中的ID并将其与我在我的SQL语句中连接的SQL DB中表中的ID匹配。找到匹配的ID后,我想复制SQL表中“coOverview”列中的相应数据,并将其写入Excel电子表格中的J列。 –
你现在遇到的问题是什么?你说你已经成功地连接并检索了所需的记录集并复制/填写了J列。除此之外,你还想做什么? –
回答
这会通过A列并将唯一值添加到变量str
。一旦完成,str
将看起来像(138,353,....)
。然后,可以将SQL语句中的WHERE
子句插入,以便仅返回ID匹配的结果。请注意,如果您的ID是SQL DB中的字符串,则需要在构建字符串时将它们包装在单引号中。如果ID列在A列中已经是唯一的,那么您可以删除If instr(1,str,c.Value) <> 0 Then
部分。此外,如果列A中的ID是唯一的,则可以对这些ID进行排序,并将查询重新排序,然后将记录集放入J列中,并排列所有内容。
Sub RetrieveOverview()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ConnectionString As String, Ids as String
Dim query As String
Dim rng as Range, c as Range
Dim lrow as long
With Thisworkbook.Sheets("your sheet name")
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
Set rng = Thisworkbook.Sheets("your sheet name").Range("A1:A" & lrow)
For Each c in rng
If instr(1,str,c.Value) <> 0 Then
If str <> "" Then
str = str & "," & c.Value
Else
str = "(" & c.Value
End If
End If
Next c
str = str & ")"
Set cn = New ADODB.Connection
ConnectionString = "Provider=SQLOLEDB;Password=***;Persist Security Info=True;User ID=*****;Data Source=***;Initial Catalog=**"
cn.Open ConnectionString
cn.CommandTimeout = 900
query = "SELECT ID, coOverview FROM SQLTable WHERE ID in " & str
rs.Open StrQuery, cn
Sheets(1).Range("J2").CopyFromRecordset rs
End Sub
Excel的VBA - 搜索范围,并连接SQL ADODB记录集在
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击