【发布时间】:2016-12-20 01:45:09
【问题描述】:
如果 excel 中的单元格包含在 SQL 表中找到的相同数据,我是否可以使用 VBA 搜索 SQL 表并返回是/否结果?
我在 Excel 工作表中有客户记录,我需要在其中比较记录 ID (A1) 如果匹配,我需要逐个单元格地将其与“客户”表进行比较,如果是...我需要某种类型如果值存在或不存在,则从 sql 输出。
示例: 如果 Cell.A1 是 = SQLTableA 好的' 别的 “不”
我觉得我很接近,但无法从 sql 获得正确的输出。
enter code here
Option Explicit
Dim cell As Range
Dim CustRow As Range
Const SQLConStr As String = "Driver={SQL Server} ;Server=<svrname>;Database=CustData; UID=user; PWD=<pass>"
Sub connectTODB()
Dim CustDataConn As ADODB.Connection
Dim CustDataCMD As ADODB.Command
Dim rs As ADODB.Recordset
Set CustDataConn = New ADODB.Connection
Set CustDataCMD = New ADODB.Command
Set rs = New ADODB.Recordset
CustDataConn.ConnectionString = SQLConStr
CustDataConn.Open
CustDataCMD.ActiveConnection = CustDataConn
Dim CustValue As String
CustValue = "ACP"
Dim strSQL As String
strSQL = "SELECT * FROM [CustData].[dbo].[CustomerData] WHERE (CustomerData.Client='" & CustValue & "')"
With rs
.ActiveConnection = CustDataConn
'open strsql
'.Open "IF EXISTS(SELECT * FROM [CustData].[dbo].[CustomerData] WHERE CustomerData.Client = 'ACA') Print 'Yes' Else Print 'No'" '(notworking)
'.Open "IF EXISTS(SELECT Client FROM CustData.dbo.CustomerData WHERE CustomerData.Client = 'hdh') Print 'Yes' Else Print 'No'" '(notworking)
.Open "IF EXISTS(SELECT Client FROM CustData.dbo.CustomerData WHERE CustomerData.Client = 'hdh')"
Workbooks("<file>.xlsm").Worksheets("CustOutput").Range("A2").CopyFromRecordset rs
.Close
End With
CustDataConn.Close
Set rs = Nothing
Set CustDataConn = Nothing
End Sub
【问题讨论】:
-
是的,您可以这样做。我会为 Excel 中的命名单元格和存储的 proc 调用拍摄
-
我只写了其中一个here。由于它得到了疯狂的评论,我不愿意再做一次。
-
你想用
IF EXISTS(SELECT做什么?如果您只想将一个值复制到一个单元格中 - 您不需要copyfromrecordset。只需正确设置连接字符串,并使用您想要返回的特定字段进行查询。然后将rs!YourFieldName分配给单元格
标签: mysql sql-server vba excel