Sql access ошибка синтаксиса пропущен оператор

No, no, no.

These answers are all wrong. There is a fundamental absence of knowledge in your brain that I’m going to remedy right now.

Your major issue here is your naming scheme. It’s verbose, contains undesirable characters, and is horribly inconsistent.

First: A table that is called Salesperson does not need to have each field in the table called Salesperson.Salesperson number, Salesperson.Salesperson email. You’re already in the table Salesperson. Everything in this table relates to Salesperson. You don’t have to keep saying it.

Instead use ID, Email. Don’t use Number because that’s probably a reserved word. Do you really endeavour to type [] around every field name for the lifespan of your database?

Primary keys on a table called Student can either be ID or StudentID but be consistent. Foreign keys should only be named by the table it points to followed by ID. For example: Student.ID and Appointment.StudentID. ID is always capitalized. I don’t care if your IDE tells you not to because everywhere but your IDE will be ID. Even Access likes ID.

Second: Name all your fields without spaces or special characters and keep them as short as possible and if they conflict with a reserved word, find another word.

Instead of: phone number use PhoneNumber or even better, simply, Phone. If you choose what time user made the withdrawal, you’re going to have to type that in every single time.

Third: And this one is the most important one: Always be consistent in whatever naming scheme you choose. You should be able to say, «I need the postal code from that table; its name is going to be PostalCode.» You should know that without even having to look it up because you were consistent in your naming convention.

Recap: Terse, not verbose. Keep names short with no spaces, don’t repeat the table name, don’t use reserved words, and capitalize each word. Above all, be consistent.

I hope you take my advice. This is the right way to do it. My answer is the right one. You should be extremely pedantic with your naming scheme to the point of absolute obsession for the rest of your lives on this planet.

NOTE:You actually have to change the field name in the design view of the table and in the query.

2 / 2 / 0

Регистрация: 21.05.2015

Сообщений: 35

1

Ошибка синтаксиса (пропущен оператор) в выражении запроса

04.07.2015, 17:05. Показов 51425. Ответов 12


Студворк — интернет-сервис помощи студентам

Здравия желаю! При добавлении через форму новой записи, первые данные заносятся, а при добавлении следующих новых записей, выдаётся: «Ошибка синтаксиса (пропущен оператор) в выражении запроса «…..» Помогите пожалуйста! И в целом просмотрите, что да как! Честь имею!



1



mobile

Эксперт MS Access

26784 / 14463 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

04.07.2015, 17:25

2

По правилам Access, все имена с пробелами (Тип ТУ, Наименование ТУ) должны писаться в в прямых скобках. Например:

SQL
1
SELECT [Тип ТУ] FROM [Тип ТУ]



4



8757 / 5604 / 576

Регистрация: 27.03.2013

Сообщений: 19,042

04.07.2015, 17:26

3

Цитата
Сообщение от bars-akula
Посмотреть сообщение

…просмотрите, что да как!…

Связей между таблицами нет, сразу считаю что это не правильно, отхожу в сторону, советовать уже по умолчанию ни чего не буду.



1



2 / 2 / 0

Регистрация: 21.05.2015

Сообщений: 35

04.07.2015, 17:29

 [ТС]

4

Спасибо! Буду продолжать дальше создание базы!

Добавлено через 2 минуты
Делал по образцу и подобию! Мне тоже как-то это не нравится!



0



8757 / 5604 / 576

Регистрация: 27.03.2013

Сообщений: 19,042

04.07.2015, 17:36

5

Цитата
Сообщение от bars-akula
Посмотреть сообщение

Мне тоже как-то это не нравится!

Не подумайте, что я как бы типа ваеживаюсь, просто по опыту знаю, что на это не меньше месяца лично для меня уйдет до доведения вашей БД до ума.



1



Модератор

Эксперт MS Access

11391 / 4701 / 759

Регистрация: 07.08.2010

Сообщений: 13,644

Записей в блоге: 4

04.07.2015, 18:20

6

полный ералаш в именах и таблицах
я потратила более часа, что бы получить подобие работоспособности



1



8757 / 5604 / 576

Регистрация: 27.03.2013

Сообщений: 19,042

04.07.2015, 18:26

7

Цитата
Сообщение от shanemac51
Посмотреть сообщение

я потратила более часа, что бы

Вот и я о том же, просто не понятно по схеме которой и нет, что именно возжелал ТС, месяц наверное уйдет пока определишся что и зачем.



1



Модератор

Эксперт MS Access

11391 / 4701 / 759

Регистрация: 07.08.2010

Сообщений: 13,644

Записей в блоге: 4

04.07.2015, 18:59

8

я видела множество методичек для студентов —здесь сделано все наоборот да еще и ералаш в разработке
чувствуется, что автор много полазил по примерам —но беда в том, что у него все перепуталось в голове, а следовательно и в базе
======
нет понимания принципа работы с базами данных



2



450 / 238 / 14

Регистрация: 29.10.2014

Сообщений: 959

04.07.2015, 22:51

9

Да, квадратные скобки в процедуре Poisk () меняют состояние дел. Все работает несмотря на неправильное построение БД



1



450 / 238 / 14

Регистрация: 29.10.2014

Сообщений: 959

05.07.2015, 11:01

10

bars-akula, Для того, чтобы избавиться от этой ошибки, в процедуре Poisk () нужно удалить строки с «.RowSource» (это 4 ед.) в примечании формы. Но чтобы база была организована верно, нужно их источником данных сделать Главную таблицу, а не вспомогательные, а то при росте базы можно потом получить ошибку



1



2 / 2 / 0

Регистрация: 21.05.2015

Сообщений: 35

05.07.2015, 13:26

 [ТС]

11

Цитата
Сообщение от commun
Посмотреть сообщение

bars-akula, Для того, чтобы избавиться от этой ошибки, в процедуре Poisk () нужно удалить строки с «.RowSource» (это 4 ед.) в примечании формы. Но чтобы база была организована верно, нужно их источником данных сделать Главную таблицу, а не вспомогательные, а то при росте базы можно потом получить ошибку

Цитата
Сообщение от commun
Посмотреть сообщение

в процедуре Poisk () нужно удалить строки с «.RowSource» (это 4 ед.) в примечании формы. Но чтобы база была организована верно, нужно их источником данных сделать Главную таблицу, а не вспомогательные, а то при росте базы можно потом получить ошибку

Это где именно в коде vba?



0



Модератор

Эксперт MS Access

11391 / 4701 / 759

Регистрация: 07.08.2010

Сообщений: 13,644

Записей в блоге: 4

05.07.2015, 13:37

12

вы в базе из пункта 5 код смотрели?
я там много где правила



1



450 / 238 / 14

Регистрация: 29.10.2014

Сообщений: 959

05.07.2015, 20:44

13

Да все понятно, это свободные поля в примечании формы, поля со списком, в Poisk их нужно только обнулять (что и происходит). В связанной таблице эти поля — перечни значений, и задавать их источником другие таблицы, записи которых могут с этими перечнями не совпадать недопустимо.



1



Сообщество Программистов

Загрузка…

Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль

Поиск по форуму
Расширенный поиск

Страница 1 из 2 1 2 Следующая >

Почему возникает эта ошибка.
Ошибка синтаксиса (пропущен оператор) в выражении запроса ‘[Стипендія нарахування].[Середній бал]? (база данных в Access 2010)

SELECT [Стипендія нарахування].[Середній бал]
IF([Середній бал]<4,»0″,
IF([Середній бал]=5,»950″,
IF([Середній бал]>=4 And <5,»800″)) AS [Стипендія]
FROM [Стипендія нарахування];

Сообщение об ошибке при использовании специальных символов в базах данных Access

В этой статье перечислены специальные символы, которые не следует использовать при работе с именами объектов базы данных или именами полей во всех версиях Access.

Оригинальный номер базы знаний: 826763

Эта статья применима к файлам баз данных Microsoft Access (.mdb) или (.accdb), а также к файлу проекта Microsoft Access (.adp).

Симптомы

При использовании специальных символов в Access возникает одна из следующих проблем.

Проблема 1

В имени поля таблицы используется один из следующих специальных символов:

  • Знак над символом (`)
  • Восклицательный знак (!)
  • Точка (.)
  • квадратные скобки ([])
  • Пробел
  • Непечатаемые символы

В этом случае отобразится следующее сообщение об ошибке:

Недопустимое имя поля.
Убедитесь, что имя не содержит точку (.), восклицательный знак(!), квадратные скобки ([]), пробел или непечатаемый символ, например символ возврата каретки. Если вы вставляете имя из другого приложения, попробуйте нажать клавишу ESC и ввести имя еще раз.

При использовании этих специальных символов в имени таблицы отобразится следующее сообщение об ошибке:

Введенное имя объекта ‘TableName‘ не соответствует правилам именования объектов Microsoft Office Access.

Проблема 2

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

Если имя поля содержит пробел, вопросительный знак (?) или знак @, отобразится следующее сообщение об ошибке:

Ошибка синтаксиса во введенном выражении.
Задано значение для операции без оператора

Если имя поля содержит кавычки («) или апостроф (‘), отобразится следующее сообщение об ошибке:

Введенное выражение содержит ошибочную строку.
Строка может содержать до 2048 знаков, включая знаки открывающей и закрывающей кавычек.

Если имя поля содержит знак решетки (#), отобразится следующее сообщение об ошибке:

Введенное выражение содержит недопустимое значение даты.

Если имя поля содержит знак процента (%), тильду (

), точку с запятой (;) или скобки ([]), отобразится следующее сообщение об ошибке:

Ошибка синтаксиса во введенном выражении.
Пропущен операнд или оператор, введен недопустимый знак или лишняя запятая, либо задана строка без кавычек.

Если имя поля содержит фигурные скобки (), отобразится следующее сообщение об ошибке:

Неверно сформированный код GUID в выражении запроса ‘ObjectName

Если имя поля содержит квадратные скобки ([]) или круглые скобки (()), отобразится следующее сообщение об ошибке:

Во введенном выражении отсутствует закрывающая скобка, квадратная скобка (]) или вертикальная черта (|).

Проблема 3

У вас есть запрос, содержащий выражения запроса. Выражения запроса включают поля, содержащие специальные символы. При выполнении запроса предлагается ввести значение параметра. Как правило, эта проблема возникает при использовании следующих специальных символов:

  • знак «больше» (>);
  • знак «меньше» (<);
  • Точка (.)
  • Звездочка (*)
  • Двоеточие (:)
  • Крышка (^)
  • Знак плюс (+)
  • Обратная косая черта ()
  • Знак равенства (=)
  • амперсанд (&);
  • Косая черта (/)

Обходной путь

Чтобы устранить эту проблему, не используйте специальные символы. Если в выражениях запроса необходимо использовать специальные символы, заключите их в квадратные скобки ([]). Например, если вы хотите использовать знак «больше» (>), используйте [>].

Дополнительная информация

Microsoft Access не ограничивает использование специальных символов, таких как знак решетки (#), точка (.) или кавычки («) в именах объектов базы данных или в именах полей базы данных. Однако при использовании специальных символов могут возникнуть непредвиденные ошибки. Поэтому корпорация Майкрософт рекомендует не использовать специальные символы в именах объектов базы данных в базе данных Access или в проекте базы данных. В этой статье рассматриваются специальные символы, которые не следует использовать во избежание известных проблем с ними.

При работе с Access или другим приложением, например приложением Microsoft Visual Basic или приложением Active Server Pages (ASP), не следует использовать следующие специальные символы:

Соглашения об именовании в Access

Корпорация Майкрософт рекомендует не использовать точку (.), восклицательный знак (!), знак ударения (`), квадратные скобки ([ ]), пробел ( ) или кавычки («) внутри имен функций, имен переменных, имен полей или имен объектов базы данных, таких как таблицы и формы.

Использование следующих специальных символов в Access приводит к возникновению известных проблем. В следующих сценариях описано, когда не следует использовать специальные символы:

Что значит пропущен оператор в выражении запроса access

Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет

Здравствуйте.

Вобще на форме выбирется ДАТА в dateTimePicker, затем хочу сделать ЗАПРОС на ВЫБОРКУ из таблицы (Access) по этой дате . ну если дата совпала, то потом все вывожу в dataGridView1

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE Дата=»+dateTimePicker1.Value+»», «Provider=Microsoft.Jet.OLEDB.4.0;» + «Data Source=» + @»….kafe.mdb»);
B.SelectCommand.Connection.Open();
B.SelectCommand.ExecuteNonQuery();
B.SelectCommand.Connection.Close();
DataTable C = new DataTable();
B.Fill(C);
dataGridView1.DataSource = C;

ну вобщем когда я на форме выбираю дату и нажимаю кнопку поиск ВЫЛАЗИЕТ вот такая ОШИБКА:

Код
Ошибка синтаксиса (пропущен оператор) в выражении запроса ‘Дата=03.12.2008 0:00:00’.
Код
SELECT * FROM Содержание_заказа WHERE Дата=03.12.2008 0:00:00

Помогите разобраться с этой проблемой.
Заранее спасибо.

Let’s do some .NET

Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67

kuller, dateTimePicker1.Value.ToString(«dd.MM.yyyy»);

Добавлено через 36 секунд
kuller, а вообще в каком формате дата хранится в базе?

Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет

Let’s do some .NET

Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67

Вот так выглядит у меня в Access 2003 запрос на выборку поля с датой

SELECT Table1.ID, Table1.Field1
FROM Table1
WHERE (((Table1.Field1)=#1/10/2008#));

Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет

Код
Дата содержит синтаксическую ошибку в выражении запроса ‘Дата=#03.12.2008 0:00:00#’.
Код
SELECT * FROM Содержание_заказа WHERE Дата=#03.12.2008 0:00:00#

Добавлено через 4 минуты и 4 секунды
и так ошибка(((

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE (([Содержание_заказа].[Дата]=» + dateTimePicker1.Value + «))», «Provider=Microsoft.Jet.OLEDB.4.0;» + «Data Source=» + @»….kafe.mdb»);
Код
Ошибка синтаксиса (пропущен оператор) в выражении запроса ‘(([Содержание_заказа].[Дата]=03.12.2008 0:00:00))’.

Let’s do some .NET

Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67

kuller, попробуйте прогнать запрос с хардкодом

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE Дата= #12/03/2008#», «Provider=Microsoft.Jet.OLEDB.4.0;» + «Data Source=» + @»….kafe.mdb»);
B.SelectCommand.Connection.Open();
B.SelectCommand.ExecuteNonQuery();
B.SelectCommand.Connection.Close();
DataTable C = new DataTable();
B.Fill(C);
dataGridView1.DataSource = C;

Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE Дата=#12/03/2008#», .

ну т.к. в БД нет строки с такой датой то у меня выскочила табличка:

Код
MessageBox.Show(«Извените, по вашему запросу ничего не найдено», .

значит все работает, но это для статического варианта даты . а вот как теперь это исправить для динамически меняющейся даты.

Добавлено через 1 минуту и 8 секунд
Вот поставил 20/11/2008:
и в dataGridView1 вывелись ВСЕ найденные РЕЗУЛЬТАТЫ .. причем верные)))))

Добавлено через 3 минуты и 34 секунды
ВЫВОД:

дату надо получить из dateTimePicker1.Value и привести к виду:

#ч/м/г#,а потом только вызывать запрос.

Let’s do some .NET

Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE Дата=#»+dateTimePicker1.Value.ToString(«dd/MM/yyyy»)+»#», «Provider=Microsoft.Jet.OLEDB.4.0;» + «Data Source=» + @»….kafe.mdb»);
B.SelectCommand.Connection.Open();
B.SelectCommand.ExecuteNonQuery();
B.SelectCommand.Connection.Close();
DataTable C = new DataTable();
B.Fill(C);
dataGridView1.DataSource = C;

Это сообщение отредактировал(а) Partizan — 4.12.2008, 12:28

Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет

Да уж(
и так не работате((((

Код
OleDbDataAdapter B = new OleDbDataAdapter(«SELECT * FROM Содержание_заказа WHERE Дата=#»+dateTimePicker1.Value.ToString(«MM/dd/yyyy»)+»#», «Provider=Microsoft.Jet.OLEDB.4.0;» + «Data Source=» + @»….kafe.mdb»);
Код
Дата содержит синтаксическую ошибку в выражении запроса ‘Дата=#11.20.2008#’.
Код
SELECT * FROM Содержание_заказа WHERE Дата=#11.20.2008#

Добавлено через 5 минут
Причем по моему не так:
ToString(«MM/dd/yyyy»)
а вот так:
ToString(«dd/MM/yyyy»)
ну всеравно не пашет((((

Это сообщение отредактировал(а) kuller — 4.12.2008, 12:32

Let’s do some .NET

Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Access Form — Syntax error (missing operator) in query expression

I am receiving a syntax error in a form that I have created over a query. I created the form to restrict access to changing records. While trying to set filters on the form, I receive syntax errors for all attributes I try to filter on. I believe this has something to do with the lack of () around the inner join within the query code, but what is odd to me is that I can filter the query with no problem. Below is the query code:

Any ideas why only the form would generate the syntax error, or how to fix this?

braX's user avatar

8 Answers 8

I was able to quickly fix it by going into Design View of the Form and putting [] around any field names that had spaces. I am now able to use the built in filters without the annoying popup about syntax problems.

Taryn's user avatar

Dedren's user avatar

I had this same problem. As Dedren says, the problem is not the query, but the form object’s control source. Put [] around each objects Control Source. eg: Contol Source: [Product number] , Control Source: Salesperson.[Salesperson number] , etc.

Makita recomends going to the original table that you are referencing in your query and rename the field so that there are no spaces eg: SalesPersonNumber , ProductNumber , etc. This will solve many future problems as well. Best of Luck!

msllarson2's user avatar

Try making the field names legal by removing spaces. It’s a long shot but it has actually helped me before.

Makita's user avatar

These answers are all wrong. There is a fundamental absence of knowledge in your brain that I’m going to remedy right now.

Your major issue here is your naming scheme. It’s verbose, contains undesirable characters, and is horribly inconsistent.

First: A table that is called Salesperson does not need to have each field in the table called Salesperson.Salesperson number , Salesperson.Salesperson email . You’re already in the table Salesperson . Everything in this table relates to Salesperson . You don’t have to keep saying it.

Instead use ID , Email . Don’t use Number because that’s probably a reserved word. Do you really endeavour to type [] around every field name for the lifespan of your database?

Primary keys on a table called Student can either be ID or StudentID but be consistent. Foreign keys should only be named by the table it points to followed by ID . For example: Student.ID and Appointment.StudentID . ID is always capitalized. I don’t care if your IDE tells you not to because everywhere but your IDE will be ID . Even Access likes ID .

Second: Name all your fields without spaces or special characters and keep them as short as possible and if they conflict with a reserved word, find another word.

Instead of: phone number use PhoneNumber or even better, simply, Phone . If you choose what time user made the withdrawal , you’re going to have to type that in every single time.

Third: And this one is the most important one: Always be consistent in whatever naming scheme you choose. You should be able to say, «I need the postal code from that table; its name is going to be PostalCode.» You should know that without even having to look it up because you were consistent in your naming convention.

Recap: Terse, not verbose. Keep names short with no spaces, don’t repeat the table name, don’t use reserved words, and capitalize each word. Above all, be consistent.

I hope you take my advice. This is the right way to do it. My answer is the right one. You should be extremely pedantic with your naming scheme to the point of absolute obsession for the rest of your lives on this planet.

NOTE:You actually have to change the field name in the design view of the table and in the query.

Это не приводит к синтаксическим ошибкам, но дает ошибку неверных аргументов:

Таким образом, добавляя дополнительные аргументы, я получаю синтаксическую ошибку «Отсутствует),] или элемент в выражении запроса»:

Любое обходное решение?

Спасибо за ответ.

Могу я предложить вам дать своей таблице КОРОТКИЙ (1 букву) псевдоним и обновить свой вопрос? Думаю, это сделало бы его более читабельным. — Patrick Honorez

вы упомянули «ошибку неверных аргументов». Можете указать ошибку? Обычно это происходит при неправильном написании поля. — Patrick Honorez

@iDevlop Он говорит: «Неправильное количество аргументов, используемых функцией в выражении запроса ‘left (. » — JohnMerlino

4 ответы

Было бы проще поместить эту логику в функции VBA, чтобы ваш запрос выглядел так

Поскольку вы говорите, что не хотите использовать VBA, попробуйте это вместо этого. Я вложил каждый

в скобках, поэтому

Внесение этого изменения позволило мне переключиться на сетку проектирования запросов, а это значит, что парсеру SQL он понравился:

ответ дан 20 дек ’10, 23:12

Не для меня. Я не очень хорошо разбираюсь в VB. Я надеялся придерживаться sql. — ДжонМерлино

Среда VBA гораздо лучше сообщает вам, где находятся синтаксические ошибки. И VBA для выполнения того, что вы здесь делаете, намного проще, чем созданный вами оператор SQL. Но каждому свое. Если бы мне пришлось сделать это с помощью SQL, я бы использовал LIKE, а не InStr ( [aname] LIKE «* *» даст тот же результат, что и InStr([aname], » «) > 0 ). Я немного поигрался с вашим запросом в том виде, в котором он был отредактирован, и думаю, вам просто нужно убедиться, что у вас везде есть круглые скобки. См. Предложение в недавно отредактированном ответе. — фог

Синтаксис Sql (access)

select info_contact.LastName + ‘ ‘ + info_contact.FirstName + ‘ ‘ + info_contact.MiddleName as Name,
info_company.name as companyname,
category.name as categoryname,
specialization.name as specializationname,
department.name as departmentname,
position.name as positionname,
count(datediff(m,min(datefrom),max(datefrom))+1) as cntmes
from info_task
inner join info_taskstate on info_task.taskstate_id = info_taskstate.id and isfinish = 1
left join info_contact on info_task.contact_id = info_contact.id
left join info_company on info_task.company_id = info_company.id
left join info_dictionary category on info_contact.category_id = category.id
left join info_dictionary specialization on info_contact.specialization_id = specialization.id
left join info_dictionary department on info_contact.department_id = department.id
left join info_dictionary position on info_contact.position_id = position.id
group by info_contact.LastName, info_contact.FirstName, info_contact.MiddleName, info_company.name, category.name, specialization.name,department.name, position.name
order by 1,2

  • 05.06.2008
  • #2
korel
  • 05.06.2008
  • #3

Говорит — Ошибка синтаксиса(пропущен оператор) в выражении запроса «.

Немножко поправил синтаксис(на sql работает как часы ), а на Access не хочет:

select info_contact.LastName + ‘ ‘ + info_contact.FirstName + ‘ ‘ + info_contact.MiddleName as Name,
info_company.name as companyname, category.name as categoryname, specialization.name as specializationname,
department.name as departmentname, position.name as positionname,
count(*) as cnt,
datediff(m,min(datefrom),max(datefrom))+1 as cntmes
from info_task
inner join info_taskstate on info_task.taskstate_id = info_taskstate.id and isfinish = 1
left join info_contact on info_task.contact_id = info_contact.id
left join info_company on info_task.company_id = info_company.id
left join info_dictionary category on info_contact.category_id = category.id
left join info_dictionary specialization on info_contact.specialization_id = specialization.id
left join info_dictionary department on info_contact.department_id = department.id
left join info_dictionary position on info_contact.position_id = position.id
group by info_contact.LastName, info_contact.FirstName, info_contact.MiddleName, info_company.name, category.name, specialization.name,department.name, position.name
order by 1,2

korel
  • 05.06.2008
  • #4

С учетом специфики синтаксиса аксесса — но все равно выдает сообщение ошибка синтаксиса в операции join:
буду очень благодарен если подскажете «где собака зарыта».

Что значит пропущен оператор в выражении запроса access

Обсуждаем вопросы только по Access VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.

есть база данных по движению тары (ну, типа — отгрузили тару клиенту, забрали тару от клиента). Добавил в базу данных табличку с информацией о самой БД — версия, дата, актуальность.

Никак не могу добиться того, чтобы в значение поля даты базы данных автоматически приравнивалось к дате последней записи по движению тары. Пробовал и мастер подстановки и через запрос на обновление — все никак.

Запрос на обновление

UPDATE DbInfo SET DbInfo.DbDate = Max(EmptiesMovements!MovClosingDate);

«Попытка выполнить запрос, который не включает указанное выражение ‘DbDate’ как часть статической функции или группы.»

Еще один вопрос — как сделать так, чтобы значение поля актуальности базы данных (логическое) автоматически изменялось в зависимости от условия «нет, если дата БД < текущей даты»?

Таблицы две:
— список клиентов
— список их визитов

в таблице клиента есть поле «последний визит», которое и должно автоматически обновлятся на основе max(поля визит таблицы спиок визитов).

tblSetNames
поля: id_tblPriceSets, SetName

tblPrice&SetNames
поля id_tblPriceSetsName, id_tblPrice, id_tblSetsNames

Форма1
в ней: поле со списком- для поля tblSetNames.SetName
список для tblPrice.PriceName (с multiSect=simple [или как там оно зовётся])
textBox для — суммирования того что выбрано в списке (отображает в реальном времени сумму tblPrice.Price, для выбранного в списке)
в списке на afterUpdate навешано вот это
Private Sub Список7_AfterUpdate()
Dim rst As ADODB.Recordset

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection

Dim objListBox As ListBox
Dim varSelectedItem As Variant
Set objListBox = Forms.форма1.Список7

For Each varSelectedItem In objListBox.ItemsSelected
cmd.CommandText = «SELECT Price FROM tblPrice WHERE PriceName =» & objListBox.ItemData(varSelectedItem)
Set rst = cmd.Execute
Forms.форма1.Поле5.Value = Forms.форма1.Поле5.Value + rst.GetString

Next varSelectedItem
End Sub

в результате имею ошибку
«runtime error
ошибка синтаксиса (пропущен оператор) в выражении запроса
‘priceName= значение выбранного пункта в списке’

при нажатии на дебуг желтым метит строку:
Set rst = cmd.Execute

вот какие варианты
1. cmd.CommandText = «SELECT Price FROM tblPrice WHERE PriceName =» & «objListBox.ItemData(varSelectedItem)»
ошибка: неопределённая функция в выражении ‘objListBox.ItemData’

2. как в вашем варианте
cmd.CommandText = «SELECT Price FROM tblPrice WHERE PriceName = » ‘ & objListBox.ItemData(varSelectedItem)»‘» часть текста стала коментарием
ошибка таже

3. cmd.CommandText = «SELECT Price FROM tblPrice WHERE PriceName =» & ‘objListBox.ItemData(varSelectedItem)’

runtime error — цифирьки всякие

ошибка синтаксиса (пропущен оператор) в выражении запроса
‘PriceName =’.

Понравилась статья? Поделить с друзьями:
  • Spyder python ошибка
  • Spv69t70ru ошибка e09
  • Spu orb произошли некритические ошибки
  • Spu orb произошла ошибка при обращении к базе
  • Sptd2 sys windows 10 ошибка