Igor163 0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
||||
1 |
||||
06.03.2017, 13:06. Показов 2340. Ответов 11 Метки нет (Все метки)
Добрый день! С форматом даты пробовал уже по всякому. Пишу значения в mdb. Подскажите, кто знает как это исправить.
0 |
Модератор 3897 / 3219 / 484 Регистрация: 27.01.2014 Сообщений: 5,900 |
|
06.03.2017, 13:16 |
2 |
наверное потому что нужно в запрос передавать не объект даты, а его строковое представление, с которым работает база Access Добавлено через 2 минуты
0 |
0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
|
06.03.2017, 13:17 [ТС] |
3 |
наверное потому что нужно в запрос передавать не объект даты, а его строковое представление, с которым работает база Access А можете разъяснить на примере? а вообще SELECTION START возвращает Integer значение индекса начала выделения. Да, но насколько мне известно, по другому значение выбранное пользователем этот компонент не вернет.
0 |
Модератор 3897 / 3219 / 484 Регистрация: 27.01.2014 Сообщений: 5,900 |
|
06.03.2017, 13:42 |
4 |
вам нужно не SelectionStart, а Value данного элемента управления
1 |
Igor163 0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
||||
06.03.2017, 13:55 [ТС] |
5 |
|||
вам нужно не SelectionStart, а Value данного элемента управления Заменил используемый компонент на DateTimePicker1
Ошибка та же…
0 |
1090 / 826 / 145 Регистрация: 25.07.2015 Сообщений: 1,831 |
|
06.03.2017, 14:13 |
6 |
Igor163, поставьте точку останова на con.Open
наверное потому что нужно в запрос передавать не объект даты, а его строковое представление, с которым работает база Access Да не, можно и объект. # как раз и говорит Access , что это дата , в не строка.
3 |
Модератор 3897 / 3219 / 484 Регистрация: 27.01.2014 Сообщений: 5,900 |
|
06.03.2017, 14:37 |
7 |
а мне все же кажется что accessпринимает формат вида dd.MM.yyyy
0 |
0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
|
06.03.2017, 14:48 [ТС] |
8 |
Igor163, поставьте точку останова на con.Open Формат поля DateReminder — Дата и время Миниатюры
0 |
1090 / 826 / 145 Регистрация: 25.07.2015 Сообщений: 1,831 |
|
06.03.2017, 16:34 |
9 |
Ну вот собственно о чём я писал про приколы с полями типа Дата .
2 |
0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
|
06.03.2017, 17:21 [ТС] |
10 |
Ну вот собственно о чём я писал про приколы с полями типа Дата . На скрине, что я приложил видно, что я задаю формат datereminderDB именно как вы сказали — yyyy/MM/dd. Не могу понять почему…
0 |
1090 / 826 / 145 Регистрация: 25.07.2015 Сообщений: 1,831 |
|
06.03.2017, 18:00 |
11 |
Сообщение было отмечено Igor163 как решение Решение
Не могу понять почему… Потому что вы задаёте формат , т.е. последовательность предоставления информации , а не шаблон. Добавлено через 10 минут
1 |
0 / 0 / 0 Регистрация: 26.02.2017 Сообщений: 19 |
|
06.03.2017, 20:07 [ТС] |
12 |
Потому что вы задаёте формат , т.е. последовательность предоставления информации , а не шаблон. Спасибо!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.03.2017, 20:07 |
12 |
Как отфильтровать по диапазону дат (от и до)?!
Нужен запрос вида SQL-WHERE (для функции setFilter).
Лог дебага
"Дата BETWEEN '01.05.2017' AND '02.05.2017'"
"[Microsoft][Драйвер ODBC Microsoft Access] Несоответствие типов данных в выражении условия отбора."
"QODBC3: Unable to execute statement"
Пишу на Qt.
void DataBase::DiapasonDate(QTableView *tableView,QString TableName, QDateEdit *Date1, QDateEdit *Date2)
{
objTable ->setTable(TableName);
// Date1->setDisplayFormat("MM/dd/yyyy");
// Date2->setDisplayFormat("MM/dd/yyyy");
QString queriDiaposon = "Дата BETWEEN '" + Date1->text() + "' AND '"+ Date2->text() +"'";
qDebug()<<queriDiaposon;
objTable->setFilter(queriDiaposon);
if (!objTable ->select())
{
qDebug()<<objTable->lastError().databaseText();
qDebug()<<objTable ->lastError().driverText();
}else
{
tableView->setModel(objTable);
}
}
задан 21 мая 2017 в 12:19
3
Разобрался нужно было поменять формат типа
Date1->setDisplayFormat("MM/dd/yyyy");
Date2->setDisplayFormat("MM/dd/yyyy");
И запрос типа
objTable->setFilter("Дата BETWEEN #" + Date1->text() + "# AND #"+ Date2->text() +"#");
ответ дан 23 мая 2017 в 6:06
hayshays
6831 золотой знак7 серебряных знаков22 бронзовых знака
|
|
|
Запрос по дате
, Создание запроса по дате
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Уважаемые господа! |
Chow |
|
Используй параметры:
… SQL.Add(‘(Date=:P_DATE)’); SQL.ParamByName(‘P_DATE’).Value = DateEdit.Date; … |
nikvicfc |
|
Спасибо за такой быстрый ответ, но к сожалению не компилируется. |
Bas |
|
Цитата nikvicfc, 8.10.04, 15:48 SQL.Add(‘(Date=»’+DateEdit.EditText+»’)’);
‘(Date=#’+DateEdit.EditText+’#)’ |
nikvicfc |
|
Уважаемый Master! |
Kobra |
|
Цитата nikvicfc, 8.10.04, 15:48 SQL.Add(‘(Date=»’+DateEdit.EditText+»’)’); тут кажется ошибки нет, но дату нужно вводить соответствующим форматом. точно не помню но кажется YYYY-MM-DD. |
shilnik |
|
Если выдается именно (дословно) такая ошибка: Цитата ‘Дата содержит синтаксическую ошибку в выражении запроса ‘(Date=##)»
то это значит, что DateEdit.EditText имеет пустое значение. Иначе было бы: |
Bas |
|
Цитата nikvicfc, 11.10.04, 09:04 ‘Дата содержит синтаксическую ошибку в выражении запроса ‘(Date=##)».
В Accesse дату принято заключать в #. |
nikvicfc |
|
Уважаемые господа! Сообщение отредактировано: nikvicfc — 11.10.04, 10:05 |
Bas |
|
Цитата nikvicfc, 11.10.04, 13:01 ‘(Date=#11.10.2004#)». А так (Date=#11/10/2004#)
WHERE (((Заказы.ДатаРазмещения)=#7/26/1996#)); |
pigas |
|
слово DATE зарезервировано стандартом ANSI/iso sql92. |
nikvicfc |
|
Уважаемый Master! |
Mamont |
|
Member Рейтинг (т): 4 |
Я работаю на Delphi 7 с использованием DBExpress Компонет. Цитата
SQLQuery1.Close;
Он ругается : «dbExpress Error: Invalid Field Type» Сообщение отредактировано: Mamont — 12.10.04, 06:23 |
Chow |
|
Какой текст запроса полностью? Добавлено 12.10.04, 06:11 Цитата Mamont, 12.10.04, 09:07 ‘insert into (now_date) values (:date)’ Где здесь указано имя таблицы? |
Mamont |
|
Member Рейтинг (т): 4 |
Забыл сказать, что тоже компилирует он нормально, ошибка возникает воремя обращения. Добавлено 12.10.04, 06:14 Цитата SQLQuery1.SQL.Text:=’insert into history (now_date) values (:date)’; Это я когда пост писал, забыл написать. В проге название таблицы присутствует. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Базы данных
- Следующая тема
[ Script execution time: 0,0356 ] [ 16 queries used ] [ Generated: 12.06.23, 10:53 GMT ]
I am creating a simple database for tracking working hours. The idea is that:
- Every day you need to input only the days that employee did not work (startDate, endDate, absenceType),
- Then calculate working days for the whole month or selected period.
Calculation of working days should take into account weekends (saturday, sunday) and holidays from Holiday table.
I took a function sample from MSDN (Counting the Number of Working Days in Access 2007) and put it into a module in my MS Access 2010 db but each time I run a query I have this error.
Typically the same error appears attempting to run a query in another sample database from somewhere.
The problem is in the strWhere clause:
strWhere = "[Holiday] >=#" & startDate & "# AND [Holiday] <=#" & endDate & "#"
' Count the number of holidays.
nHolidays = DCount(Expr:="[Holiday]", Domain:=strHolidays, Criteria:=strWhere)
Workdays = nWeekdays - nHolidays
The error msg from both databases is available in the link below
Runtime Error 3075 Syntax error in date in query expression
Any help is appreciated.
[ Script execution time: 0,0356 ] [ 16 queries used ] [ Generated: 12.06.23, 10:53 GMT ]
I am creating a simple database for tracking working hours. The idea is that:
- Every day you need to input only the days that employee did not work (startDate, endDate, absenceType),
- Then calculate working days for the whole month or selected period.
Calculation of working days should take into account weekends (saturday, sunday) and holidays from Holiday table.
I took a function sample from MSDN (Counting the Number of Working Days in Access 2007) and put it into a module in my MS Access 2010 db but each time I run a query I have this error.
Typically the same error appears attempting to run a query in another sample database from somewhere.
The problem is in the strWhere clause:
strWhere = "[Holiday] >=#" & startDate & "# AND [Holiday] <=#" & endDate & "#"
' Count the number of holidays.
nHolidays = DCount(Expr:="[Holiday]", Domain:=strHolidays, Criteria:=strWhere)
Workdays = nWeekdays - nHolidays
The error msg from both databases is available in the link below
Runtime Error 3075 Syntax error in date in query expression
Any help is appreciated.
Parfait
104k17 gold badges93 silver badges124 bronze badges
asked Nov 14, 2017 at 14:35
4
You must force a format on the string expressions for your dates. Get used to use the ISO sequence yyyy-mm-dd as it works everywhere:
strHolidays = "NameOfYourTable"
strWhere = "[Holiday] >= #" & Format(startDate, "yyyy/mm/dd") & "# AND [Holiday] <= #" & Format(endDate, "yyyy/mm/dd") & "#"
' Count the number of holidays.
nHolidays = DCount("*", strHolidays, strWhere)
answered Nov 15, 2017 at 10:51
GustavGustav
53k7 gold badges29 silver badges55 bronze badges
4
In the past I have had issues where VBA doesn’t always respect the regional date settings. Try forcing it into US format before concatenating it
strWhere = "[Holiday] >=#" & Format(startDate, "MM/dd/yyyy") & "# AND [Holiday] <=#" & Format(endDate, "MM/dd/yyyy") & "#"
answered Nov 14, 2017 at 14:44
ste-fuste-fu
6,8093 gold badges25 silver badges45 bronze badges
2
-
Make sure the date is in MM/DD/YYYY order in VBA. Always. I generally use:
strWhere = "[Holiday] >= " & Format(startDate,"#mm/dd/yyyy#")
-
the second argument of DCount is strHolidays. That does not look like the name of a table/query. This argument should be the name of a table/query.
answered Nov 14, 2017 at 14:45
iDevlopiDevlop
24.8k11 gold badges89 silver badges147 bronze badges
2
Регистрация на форуме тут, о проблемах пишите сюда — 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
Где: Санкт-Петербург