2010-10-11 219 views
1

当我试图执行此查询时遇到了错误消息。它说语法错误,谁能帮我...Ms-access中的SQL查询

strLocalSql = "SELECT tblEventTypeList.EventType" & _ 
        "FROM tblEventTypeList" & _ 
        " WHERE tblEventTypeList.[EventPage] = " & ts & "" & _ 
        "ORDER BY tblEventTypeList.[EventType]"";" 

回答

3

看起来你需要"ORDER BY ..."和前FROM(感谢hawbsl)令前的空间

多余的空格不会伤害任何东西你查询。很容易忘记线条之间的空间。这可能是值得得到在开始用空格每行的习惯,让你避免这些情况:

strLocalSql = " SELECT tblEventTypeList.EventType" & _ 
       " FROM tblEventTypeList" & _ 
       " WHERE tblEventTypeList.[EventPage] = " & ts & _ 
       " ORDER BY tblEventTypeList.[EventType]"";" 
+0

以及FROM ... – hawbsl 2010-10-11 14:53:58

1

而且,貌似有一些多余的双引号 - 4行,只是前结束第3行中的最后一个&符号

2

其他人已经得到了部分内容,但我认为没有人得到这一切正确。它应该是这样的:

strLocalSql = "SELECT tblEventTypeList.EventType" & _ 
        " FROM tblEventTypeList" & _ 
        " WHERE tblEventTypeList.[EventPage] = " & ts & _ 
        " ORDER BY tblEventTypeList.[EventType];" 

这假定您的EvenPage字段是数字(并且ts变量中的值是数字)。如果是文本,那么你需要这个,而是:

strLocalSql = "SELECT tblEventTypeList.EventType" & _ 
        " FROM tblEventTypeList" & _ 
        " WHERE tblEventTypeList.[EventPage] = " _ 
        & Chr(34) & ts & Chr(34) & _ 
        " ORDER BY tblEventTypeList.[EventType];" 

就个人而言,我在我所有的Access项目保持恒定的定义这样的:

Global Const STR_QUOTE As String = """" 

...然后我使用常数串联。不过,我希望我已经命名为strQ,因为名字太长了。但我已经使用了十多年了,所以我很难改变!这会工作:

Global Const strQ As String = """" 

    strLocalSql = "SELECT tblEventTypeList.EventType" & _ 
        " FROM tblEventTypeList" & _ 
        " WHERE tblEventTypeList.[EventPage] = " _ 
        & strQ & ts & strQ & _ 
        " ORDER BY tblEventTypeList.[EventType];" 

...但当然,这是唯一正确的,如果EvenPage是一个字符串。

+3

David,您似乎缺少示例中的空格。我更喜欢使用标准单引号,并使用替换函数用两个单引号替换单引号。 – Fionnuala 2010-10-11 19:12:11

+0

我刚刚复制了原始提问者SQL,并且只查看了我正在琢磨的特定区域。我修好了空间。我不是单引号分隔符的粉丝 - 这不是标准的访问方式。 – 2010-10-12 20:08:06