VBA Teradata SQL
由于某些原因,它返回运行时错误3021,在Terada SQLAssistant中尝试时,SQL字符串工作正常 有人能告诉我我做错了什么吗 单元格中的值等于John DoeVBA Teradata SQL,sql,excel,teradata,vba,Sql,Excel,Teradata,Vba,由于某些原因,它返回运行时错误3021,在Terada SQLAssistant中尝试时,SQL字符串工作正常 有人能告诉我我做错了什么吗 单元格中的值等于John Doe Dim ConcatSQL As String ConcatSQL = Sheets("LogIn").Cells(8, 3).Value QueryA = "select * from database.table WHERE Name = " & ConcatSQL & " cmdSQ
Dim ConcatSQL As String
ConcatSQL = Sheets("LogIn").Cells(8, 3).Value
QueryA = "select * from database.table WHERE Name = " & ConcatSQL & "
cmdSQLData.CommandText = QueryA
cmdSQLData.CommandType = adCmdText
cmdSQLData.CommandTimeout = 0
MsgBox (QueryA)
Set rs = cmdSQLData.Execute()
Row = 1
rs.MoveFirst ' it's falling here
Do While (rs.EOF = False And rs.BOF = False)
该错误的一个可能原因是字段
Name
在Teradata中是保留字,因此应该使用“Name”
(使用双引号)
你能试试这个吗
On Error Resume Next
Set rs = cmdSQLData.Execute()
If Err.Number<>0 Then
MsgBox(Err.Description)
End If
出错时继续下一步
设置rs=cmdSQLData.Execute()
如果错误号为0,则
MsgBox(错误描述)
如果结束
然后发布输出?您还可以发布QueryA的输出。尝试从database.table WHERE Name=“&ConcatSQL(删除最后一个
&
)与之前相同的问题运行时错误3021 BOF或EOF为真,或者当前记录已被删除。QueryA=“从database.table WHERE中选择*”&chr(34)&Name&chr(34)&='“&ConcatSQL&'”-假设您的列名实际上是name。否则:QueryA=“select*from database.table WHERE column_name='”&ConcatSQL&“'”Teradata使用双引号而不是方括号。@DavidCram您是对的
On Error Resume Next
Set rs = cmdSQLData.Execute()
If Err.Number<>0 Then
MsgBox(Err.Description)
End If