2017-09-25 41 views
0

我想在使用VBA的Excel和Access之间的连接运行的SQL查询上运行下面的IF,ELSE语句。任何想法为什么这不起作用?对vba SQL查询运行IF,ELSE stement

Dim myValue As String 
myValue = "CS-SS-22" 
Set cn = New ADODB.Connection 
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _ 
"Data Source=Q:\TOC Contract Screenings\ScreeningLogDatabase.accdb" 
Set rs = New ADODB.Recordset 

If rs.Open("Select count([ChangeScreeningNumber]) From [ScreeningLogsTEST] Where [ChangeScreeningNumber] = '" & myValue & "'", ActiveConnection:=cn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic) = 0 Then MsgBox "New" 
Else 
MsgBox "Already exists" 
+0

你在哪里设置'myValue'变量?你宣布它,但据我可以告诉它只是一个空字符串。 –

+0

现在编辑它,谢谢!同样的问题。 – Sarah

+0

相同的错误:If行上的“编译错误:预期的函数或变量”。 – Sarah

回答

1

不太清楚你所追求的,但它可能是这样的:

Set rs = New ADODB.Recordset 

rs.Open "Select Count([ChangeScreeningNumber]) From [ScreeningLogsTEST] Where [ChangeScreeningNumber] = '" & myValue & "'", ActiveConnection:=cn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic 

If rs.RecordCount = 0 Then 
    MsgBox "New" 
Else 
    MsgBox "Already exists" 
End If 
+0

我喜欢这个主意!我试过了,它表示它期望rs.Open行有一个=号。我真的不明白为什么。有任何想法吗? – Sarah

+0

尝试没有括号 - 请参阅编辑。 – Gustav

+0

真棒,工作!我注意到我的RecordCount = -1,而不是实际的记录数。 – Sarah