letter=65
是表示字母表中字母(A)的变量。
我想将字母插入sql命令字符串的一部分:
sqlUrlCount = "SELECT tblMain.Name FROM tblMain WHERE (((tblMain.Name) Like '" & Chr(letter) & "*'))"
但是我收到错误:&#34;运行时错误&#39; 3075&#39;:查询表达式中字符串中的语法错误&#39;(((tblMain.Name)赞&#34;。< / p>
这可能是因为我使用的引号和双引号。但我怎么能这样做呢?
答案 0 :(得分:0)
当我尝试创建一个名为&#39; Name&#39;在Access中,它抱怨说这是一个保留字 - 可能是问题的一部分。
下面的代码返回了一个SQL字符串,当我将其粘贴到查询窗口时它会起作用(注意 - 已更新&#39;名称&#39;到&#39; sName&#39;字段类型为Text)。
另请注意 - Access喜欢在所有内容周围放置括号,并且大部分时间都不需要。
Sub test()
Dim letter As Long
Dim sqlUrlCount As String
letter = 65
sqlUrlCount = "SELECT sName FROM tblMain WHERE sName Like '" & Chr(letter) & "*'"
End Sub
修改强>
要使用SELECT查询:
Sub Test()
Dim sqlUrlCount As String
Dim letter As Long
Dim rst As DAO.Recordset
letter = 65
sqlUrlCount = "SELECT tblNewMain.WebAddressCompareString, " & _
"Count(*) AS [How Many?] FROM tblNewMain " & _
"WHERE (((tblNewMain.WebAddressCompareString) Like '" & Chr(letter) & "*')) " & _
"GROUP BY tblNewMain.WebAddressCompareString HAVING (((Count(*))>1))"
Set rst = CurrentDb.OpenRecordset(sqlUrlCount)
With rst
If Not .BOF And Not .EOF Then
.MoveFirst
Do
Debug.Print .Fields("WebAddressCompareString") & " : " & .Fields(1)
.MoveNext
Loop Until .EOF
End If
.Close
End With
Set rst = Nothing
End Sub
如果它是DDL或DML类型的查询 - 即UPDATE,CREATE TABLE,SELECT INTO等,那么您可以使用DoCmd.RunSQL
答案 1 :(得分:0)
您的语法是正确的,因此请尝试复制粘贴结果字符串:
SELECT tblMain.Name FROM tblMain WHERE (((tblMain.Name) Like 'A*'))
进入新查询。
如果失败,请调整SQL,然后调整代码。
如果它运行,则重写代码行(无copy-n-paste),然后删除旧的代码行。