2010-10-11 216 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