SQL语句读取access读取数据库时,居然不能读取名为NO的列,如何解决

SQL语句读取access读取数据库时,居然不能读取名为NO的列,怎么解决?
          在读取access里表的数据时使用  SQl = "select * from " & tableNameStr & " " & "where NO =" & x 进行读取数据库的表时(其中“NO”为表列名),发现rs.RecordCount的值为0,且读不到里面的数据。
   把表中列名NO进行修改之后(如NONN)或根据其他列读取表中数据时都能正常读出数据。难道NO不能在SQL语句中当做读取数据的条件,这种情况有什么解决方法?求解!
注:表的列名不能修改,并且只能以这一列为判断依据。
部分代码如下:
 
            SQl = "select * from " & tableNameStr & " " & "where NO =" & x'读取某行的数据集的SQL语句
           
            'If preTableNameStr <> tableNameStr Then
              rs.Close
              Set rs = Nothing
              Set rs = New ADODB.Recordset
           ' End If
            rs.Open SQl, cnn, adOpenKeyset, adLockReadOnly   '执行得到某行的数据集
             
             test = rs.RecordCount
            If rs.BOF = True Or rs.EOF = True Then 
           t.Value = 0 '不存在表或记录时则值设为0
            Else
              t.Value = rs.Fields(y + 5).Value
              If t.Value = "" Then
                 t.Value = 0
              End If
            End If

------解决思路----------------------
应该是SQL保留关键字, 你改个字段名.
------解决思路----------------------
如果不想换名称,那就加个前缀,如:
SQl = "select * from " & tableNameStr & " where " & tableNameStr & ".NO =" & x
------解决思路----------------------
SQl = "select * from " & tableNameStr & " " & "where [NO] =" & x'读取某行的数据集的SQL语句

是不是保留关键字啊,貌似加方括号可以转义,试试看
------解决思路----------------------
Access 中 Yes 和 No 是逻辑字段的取值,所以是关键字啊!
关键字做字段名时要加方括号,见3楼。
------解决思路----------------------
建议不要用系统保留关键字作为表名或字段名使用,一定要用则需要加上方括号,如:[user],[passpword]等
------解决思路----------------------
引用:
Quote: 引用:

应该是SQL保留关键字, 你改个字段名.

数据库的字段名是公司留下程序里进行创建的,我现在开发只是根据他流的字段名进行读取数据,并且开发人员也不在了,进行修改比较麻烦

那就在SQL语句中完整引用 where tablename.no 试试