2010-10-11 2 views
1

Я получил сообщение об ошибке, когда пытаюсь выполнить этот запрос. Это говорит синтаксическая ошибка, кто-то может мне помочь ...SQL-запрос в Ms-access

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

ответ

3

Похоже, вам нужно пространство перед заказом в "ORDER BY ..." и до ОТ (спасибо hawbsl)

Лишние пробелы не болит ничего в вашем запросы. Легко забыть те пространства между строками. Это может быть стоит того, чтобы в привычку, начиная каждую строку с пробелом, так что вам избежать таких ситуаций:

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

и до FROM ... – hawbsl

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];" 

Лично я поддерживаю во всех моих проектах доступа константа определяется следующим образом:

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

Дэвид, вам кажется, что вам не хватает пробелов из вашего примера. Я предпочитаю использовать стандартную одиночную кавычку и заменять одинарные кавычки двумя одинарными кавычками, используя функцию replace. – Fionnuala

+0

Я только что скопировал исходные вопросники SQL и посмотрел только на конкретную область, где я обманывал. Я исправил пробелы. Я не являюсь поклонником ограничителей одиночной кавычки - это не стандартный способ доступа. –