访问SQL。检测字符串中的字母字符

时间:2014-02-14 21:23:47

标签: while-loop sql-update ms-access-2007 access-vba

我正在尝试将名为New_ParcelNum的字段更新为FLAG,具体取决于字符串中是否包含字母字符。

'FLAG anything with a letter.
sql_UpdateNew = "DECLARE @Counter INT;" & _
                "SET @Counter = ASCII('A');" & _
                "WHILE Counter <= ASCII('Z') " & _
                "BEGIN" & _
                "IIF(INSTR(tblParcelNumber, CHAR(@Counter)) > 0, " & _
                    "UPDATE tblParcelNumber SET tblParcelNumber.New_ParcelNum = 'FLAG', " & _
                    "tblParcelNumber.New_ParcelNum);" & _
                "SET @Counter = @ Counter + 1;" & _
                "END;"
DoCmd.RunSQL sql_UpdateNew

我一直遇到运行时错误:

  

(3129),SQL语句无效。预期DELETE,INSERT,PROCEDURE,SELECT,UPDATE。

2 个答案:

答案 0 :(得分:1)

错误消息告诉您问题:您不能将RunSql用于复杂的过程代码(事实上,我不认为您可以在Access SQL 中完成那些 - 那些正在使用特定的T-SQL扩展)。

因此描述了“SQL语句”部分:

  

字符串表达式,它是操作查询或数据定义查询的有效SQL语句。它使用INSERT INTO,DELETE,SELECT ... INTO,UPDATE,CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX或DROP INDEX语句。如果要访问其他数据库,请包含IN子句。

请参阅完整说明here

答案 1 :(得分:0)

如何使用类似于以下内容的where子句进行SQL Server更新: 在哪里IsNumeric(tblParcelNumber)= 1&lt;&lt;&gt;&gt;