Microsoft query синтаксическая ошибка

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#1

31.03.2023 06:40:03

Всем доброго здравия! Надо записать условие «начинается с «а/к «» в запросе microsoft query (SQL). Выбираю в окне «Добавление условия» «начинается с» пишет «синтаксическая ошибка». Записываю в SQL

Код
HAVING (PL.РабочаяДата>='2023-01-01') AND (Transport.Колонна like ('а/к %'))

пишет «синтаксическая ошибка»

Пробовал

Код
HAVING (PL.РабочаяДата>='2023-01-01') AND (Transport.Колонна 'а/к %')

не работает. Помогите пожалуйста.

Excel всемогущий.

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

‘2023-01-01’ — это текст или нужно указать в формате даты или преобразовать ts(‘2023-01-01’)

По вопросам из тем форума, личку не читаю.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#3

31.03.2023 08:28:20

Цитата
написал:
ts(‘2023-01-01’)

Microsoft query пишет «‘ts’ не является распознаваемым именем встроенной функции Оператор(ы) не может быть подготовлен.»

Но проблема в том, что

Код
HAVING (Transport.Колонна='а/к№ 1') 

работает, а

Код
HAVING (Transport.Колонна like 'а/к%') 

Microsoft query пишет «синтаксическая ошибка».

Excel всемогущий.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14413
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#4

31.03.2023 08:44:40

А почему именно Having, а не тот же Where? Может проблема именно в этом — Having-то иначе работает(с GroupBy). Может достаточно такого выражения:

Код
WHERE (PL.РабочаяДата>='2023-01-01' AND Transport.Колонна like 'а/к %')

ну а с датой сами уже — как писали выше, если в таблице для поля РабочаяДата формат именно даты — то в отбор ничего не попадет, т.к. у Вас текст указан.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#5

31.03.2023 09:21:29

Цитата
написал:
WHERE (PL.РабочаяДата>=’2023-01-01′ AND Transport.Колонна like ‘а/к %’)

Перенес в WHERE. Так

Код
WHERE PL.Ссылка = PL_Zakaz.Ссылка AND PL.ТС_ИД = Transport.ИД AND (Transport.Колонна='а/к №1')

работает, а так

Код
WHERE PL.Ссылка = PL_Zakaz.Ссылка AND PL.ТС_ИД =Transport.ИД AND (Transport.Колонна like 'а/к %')

«синтаксическая ошибка»

Excel всемогущий.

 

попробуйте указать оператор like, но в условии указать значение без знака процента — так же, как и в случае со знаком =.
Если будет ошибка — значит что-то в like и желательно видеть запрос и понимать к чему вообще обращаетесь и через какой драйвер.
И еще — не говорит ли SQL что-то еще об ошибке? Может указывает на конкретную часть выражения?

Изменено: Дмитрий(The_Prist) Щербаков31.03.2023 09:54:45

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

agregator, Вы можете показать более полно , запрос, источник, провайдер….

По вопросам из тем форума, личку не читаю.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#8

31.03.2023 10:18:58

Цитата
написал:
like

Ставлю вместо «=»  » like » и пишет «синтаксическая ошибка».
Изменил файл запроса «Запрос все »1Csql».dqy» в блокноте. После этого в Excel всё работает, а в Microsoft query пишет «синтаксическая ошибка».

Изменено: agregator01.04.2023 09:02:19

Excel всемогущий.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14413
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#9

31.03.2023 10:21:57

Цитата
agregator написал:
в блокноте и в Excel всё работает,

это как? Как запрос может работать в блокноте? Вы сейчас на какой-то своей волне, видимо :)

Цитата
agregator написал:
а в Microsoft query пишет

А Microsoft query какой? Откуда запускаете? Потому что судя по написанному я понял о процессе чуть меньше, чем ничего.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

#10

31.03.2023 10:24:53

Цитата
Дмитрий(The_Prist) Щербаков написал:
Как запрос может работать в блокноте?

Дима — это файл с запросом сохраненным.

Изменено: БМВ31.03.2023 10:27:35

По вопросам из тем форума, личку не читаю.

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14413
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#11

31.03.2023 10:27:26

Цитата
БМВ написал:
это файл конфигурационный, где прописано соединение

это я знаю. Я не понимаю часть ту, где говориться, что такой же запрос в текстовом файле работает. А где именно-то? Прямо в

блокноте

Excel? Или он все-таки куда-то подсовывается? Если подсовывается — то куда? В тот же Microsoft query или еще куда-то(Power Query, например)? Пошагово куда как и при каких раскладах не работает. Может там вообще дело все в кавычках.
Вот эти моменты желательно же пояснять более подробно, а не так, чтобы сидеть догадываться. При таком подходе сидеть и думать над причиной ошибки желание пропадает в геометрической прогрессии :)

Изменено: Дмитрий(The_Prist) Щербаков31.03.2023 10:30:17

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

Дмитрий(The_Prist) Щербаков,  ну я про то что ТС корректирует его блокнотом.

agregator,  встречался несколько раз что MSQuery однозначно не мог все запросы отобразить графически, но чтоб не работало то что работает — не встерчал.

По вопросам из тем форума, личку не читаю.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#13

31.03.2023 10:43:39

Цитата
написал:

Цитата
agregator написал:
в блокноте и в Excel всё работает,

это как? Как запрос может работать в блокноте? Вы сейчас на какой-то своей волне, видимо  

Цитата
agregator написал:
а в Microsoft query пишет

А Microsoft query какой? Откуда запускаете? Потому что судя по написанному я понял о процессе чуть меньше, чем ничего.

«Запрос все »1Csql».dqy» открыл в блокноте, отредактировал запрос и сохранил. Затем «Запрос все »1Csql».dqy» открыл в Excel, всё работает.  Затем «Запрос все »1Csql».dqy» открыл в MSQuery и пишет «синтаксическая ошибка».

Excel всемогущий.

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

agregator, может вы хоть этот файл покажете?

По вопросам из тем форума, личку не читаю.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#15

31.03.2023 11:33:03

Цитата
написал:
agregator, может вы хоть этот файл покажете?

Запрос все »1Csql».dqy отправить форум не даёт. Отправил Файл Excel, но запрос можно увидеть в Данные-Подключения

Прикрепленные файлы

  • Запрос 1С.xlsx (193.26 КБ)

Excel всемогущий.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#16

31.03.2023 14:16:54

Цитата
написал:
попробуйте указать оператор like, но в условии указать значение без знака процента — так же, как и в случае со знаком =.
Если будет ошибка — значит что-то в like и желательно видеть запрос и понимать к чему вообще обращаетесь и через какой драйвер.
И еще — не говорит ли SQL что-то еще об ошибке? Может указывает на конкретную часть выражения?

SQL ничего больше не говорит еще об ошибке

Прикрепленные файлы

  • Безымянный 1.jpg (268.4 КБ)

Изменено: agregator31.03.2023 14:20:26

Excel всемогущий.

 

agregator

Пользователь

Сообщений: 214
Регистрация: 01.01.1970

#17

01.04.2023 09:10:29

Цитата
написал:
agregator, Вы можете показать более полно , запрос, источник, провайдер….

Я не специалист в информатике. Как узнать какой провайдер? Можно изменить или добавить провайдер?

Вот что смог увидеть.

XLODBC
1
DRIVER=SQL Server; SERVER=SIB-DEVPM

[Micгоsoft] [ODBC SQL Server Driver][SQL Server]  

Excel всемогущий.

 

БМВ

Модератор

Сообщений: 21913
Регистрация: 28.12.2016

Excel 2013, 2016

agregator, моделировать сложно, так как источника нет, с виду все нормально, возможно просто выстреливают ограничения MSQuery.

По вопросам из тем форума, личку не читаю.

 

doober

Пользователь

Сообщений: 2254
Регистрация: 09.04.2013

#19

01.04.2023 12:36:38

Попробуйте так
Для Access  AND InStr(1,Transport.Колонна,’а/к №1′,1)=1
Для MSSQL  AND   CHARINDEX( ‘а/к №1’ ,Transport.Колонна ) =1

Изменено: doober01.04.2023 12:37:48

258

12 февраля 2004 года

SergeySV

1.5K / / 19.03.2003

Господа, никто не подскажет url в msdn или еще где, с описанием всевозможных спецсимволов, когда используется LIKE в WHERE.
Раньше для коннекта из проги на VB6 к бд Access использовал DAO, там все было понятно, полное соответствие оператору Like в VB.
Сейчас вместо DAO использую ADO.

Заранее спасибо.
Иван Абрамов, программист, CSBI.
http://adanalysis.narod.ru — моя программа для выбора авто.
13 янв 04, 16:25 [489811]

Re: Описание спецсимволов для LIKE в ADO ?
Темный
Member

Откуда: РФ, Москва
Сообщений: 1714 Синтаксис SQL ANSI 92
% = *
? = _ (если не ошибаюсь)
13 янв 04, 16:26 [489814]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Немного не так.

DAO ADO
* %
? _

а вот дальше?

что вместо #, !
^ — как в MS SQL Server — не работает.

Вообщем, нужен url к полному описанию.

13 янв 04, 16:47 [489860]
Хам трамвайный

из справки

Сравнение языка запросов Microsoft Jet SQL и ANSI SQL

Ядро базы данных Microsoft Jet SQL в основном совместимо с ANSI-89 Level 1. Однако некоторые возможности языка запросов ANSI SQL не реализованы в Microsoft Jet SQL. В выпуске Microsoft Jet версии 4.X для поставщика Microsoft OLE DB для Jet реализовано больше синтаксиса ANSI-92 SQL. Аналогично, язык запросов Microsoft Jet SQL содержит зарезервированные слова и возможности, не поддерживаемые языком ANSI SQL.

Основные различия
Языки Microsoft Jet SQL и ANSI SQL имеют разные зарезервированные слова и типы данных. Дополнительные сведения см. в разделах Зарезервированные слова языка SQL ядра базы данных Microsoft Jet и Эквивалентные типы данных ANSI SQL. При использовании поставщика Microsoft OLE DB для Jet с версией Jet 4.X существует несколько дополнительных зарезервированных слов.
Другие правила применяются для конструкции Between…And, которая имеет следующий синтаксис.
выражение1 [NOT] Between значение1 And значение2

В языке Microsoft Jet SQL значение1 может быть больше, чем значение2; в языке ANSI SQL значение1 должно быть меньше значения2 или равно ему.

В языке Microsoft Jet SQL при использовании оператора Like поддерживаются как подстановочные знаки языка ANSI SQL, так и подстановочные знаки, относящиеся к Microsoft Jet. Невозможно совместно использовать подстановочные знаки ANSI и Microsoft Jet. Допускается использовать только один набор знаков, их нельзя смешивать. Использование знаков языка ANSI SQL разрешено только с ядром Jet версии 4.X и с поставщиком Microsoft OLE DB для Jet. При попытке использования подстановочных знаков языка ANSI SQL с приложением Microsoft Access или объектами DAO они будут трактоваться как литералы. Обратное верно при использовании поставщика Microsoft OLE DB для Jet и ядра Jet версии 4.X. Символ соответствия Microsoft Jet SQL ANSI SQL
Любой текстовый символ ? знак подчеркивания (_)
Любое количество символов * %

В языке Microsoft Jet SQL меньше ограничений. Например, разрешается производить группировку и сортировку по выражениям.
Язык Microsoft Jet SQL поддерживает более производительные выражения.
Расширенные возможности языка Microsoft Jet SQL
Язык Microsoft Jet SQL обладает следующими расшиpенными возможностями.

Инструкция TRANSFORM обеспечивает поддержку перекрестных запросов.

Существуют дополнительные статистические функции SQL, такие как StDev и VarP.
Для определения параметров запроса используется описание PARAMETERS.

Возможности языка ANSI SQL, не поддерживаемые в языке Microsoft Jet SQL
Язык Microsoft Jet SQL не поддерживает следующие возможности языка ANSI SQL.

Ссылки в статистической функции DISTINCT. Например, в языке Microsoft Jet SQL невозможно использовать конструкцию SUM(DISTINCT имя_столбца).
Использование предложения LIMIT TO nn ROWS для ограничения числа строк, возвращаемых запросом. Для подобного ограничения можно использовать только предложение WHERE.

13 янв 04, 16:49 [489864]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 То есть все так, сорри, Темный, и спасибо.
Но нужна полная картина.
13 янв 04, 16:51 [489869]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 описание символов и примеров LIKE бери из справки к MS SQL серверу

[ ] Any single character within the specified range ([a-f]) or set ([abcdef]).
(WHERE au_lname LIKE ‘[C-P]arsen’ finds author last names ending with arsen and
beginning with any single character between C and P, for example Carsen, Larsen,
Karsen, and so on.)

[^] Any single character not within the specified range ([^a-f]) or set
([^abcdef]). (WHERE au_lname LIKE ‘de[^l]%’ all author last names beginning with
de and where the following letter is not l.)

LIKE ‘5[%]’ 5%

LIKE ‘[_]n’ _n

LIKE ‘[a-cdf]’ a, b, c, d, or f

LIKE ‘[-acdf]’ -, a, c, d, or f

LIKE ‘[ [ ]’ [

LIKE ‘]’ ]

LIKE ‘abc[_]d%’ abc_d and abc_de

LIKE ‘abc[def]’ abcd, abce, and abcf

и т.д.
13 янв 04, 16:55 [489881]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Спасибо, Хам, но, опять же в твоей цитате упоминается лишь *(%) и ?(_).
А как на счет #, !, \, [] ?
13 янв 04, 16:58 [489891]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 описание символов и примеров LIKE бери из справки к MS SQL серверу

Да, я так и сделал.
Но, к удивлению обнаружил, что маски с ^ не работают, а с ! работают. Каша какая-то получается, вот и спросил.
13 янв 04, 17:03 [489900]
Откуда: СПб
Сообщений: 63 А что будет выдавать WHERE Phone1 LIKE ‘([0-9][0-9][0-9])[134567890]%’
Выдает все правильно, т.е. 6-ой символ не двойка.
13 янв 04, 18:01 [490023]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?
13 янв 04, 18:02 [490031]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Из проги на VB6 при помощи ADO 2.5 идет запрос к бд формата MS Access 2000.
13 янв 04, 18:05 [490044]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?

Потому что используется ADO, а не DAO.
Спецсимволы * и ? и # не работают просто наглядно.
13 янв 04, 18:07 [490051]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 проверил на MS SQL
WHERE (вв LIKE ‘[0-9][0-9][0-9][^2]%’)
рабоает правильно и возращает все записи за исключением 2

На MS SQL — то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.
13 янв 04, 18:20 [490084]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 >На MS SQL — то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.

Для АДО (при работе с mdb) надо применять % и _. Для отрицания ! (оператор сравнения такой же как < >) ^ — этот знак для работы с mdb (формат Акес2002+ANSI SQL 92) и MS SQL.
Хотя действительно можно запутаться и в справке по этому поводу — тишина.
14 янв 04, 09:15 [490413]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 А как конвертировать числовое поле в текстовое, чтобы использовать с LIKE?

В DAO я бы написал так
WHERE CSTR(NumericField1) LIKE ‘*51*’

А в ADO (при коннекте к бд MSAccess2000) как?
Что-то типа WHERE …NumericField1… LIKE ‘%51%’

Заранее спасибо.

258

12 февраля 2004 года

SergeySV

1.5K / / 19.03.2003

Господа, никто не подскажет url в msdn или еще где, с описанием всевозможных спецсимволов, когда используется LIKE в WHERE.
Раньше для коннекта из проги на VB6 к бд Access использовал DAO, там все было понятно, полное соответствие оператору Like в VB.
Сейчас вместо DAO использую ADO.

Заранее спасибо.
Иван Абрамов, программист, CSBI.
http://adanalysis.narod.ru — моя программа для выбора авто.
13 янв 04, 16:25 [489811]

Re: Описание спецсимволов для LIKE в ADO ?
Темный
Member

Откуда: РФ, Москва
Сообщений: 1714 Синтаксис SQL ANSI 92
% = *
? = _ (если не ошибаюсь)
13 янв 04, 16:26 [489814]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Немного не так.

DAO ADO
* %
? _

а вот дальше?

что вместо #, !
^ — как в MS SQL Server — не работает.

Вообщем, нужен url к полному описанию.

13 янв 04, 16:47 [489860]
Хам трамвайный

из справки

Сравнение языка запросов Microsoft Jet SQL и ANSI SQL

Ядро базы данных Microsoft Jet SQL в основном совместимо с ANSI-89 Level 1. Однако некоторые возможности языка запросов ANSI SQL не реализованы в Microsoft Jet SQL. В выпуске Microsoft Jet версии 4.X для поставщика Microsoft OLE DB для Jet реализовано больше синтаксиса ANSI-92 SQL. Аналогично, язык запросов Microsoft Jet SQL содержит зарезервированные слова и возможности, не поддерживаемые языком ANSI SQL.

Основные различия
Языки Microsoft Jet SQL и ANSI SQL имеют разные зарезервированные слова и типы данных. Дополнительные сведения см. в разделах Зарезервированные слова языка SQL ядра базы данных Microsoft Jet и Эквивалентные типы данных ANSI SQL. При использовании поставщика Microsoft OLE DB для Jet с версией Jet 4.X существует несколько дополнительных зарезервированных слов.
Другие правила применяются для конструкции Between…And, которая имеет следующий синтаксис.
выражение1 [NOT] Between значение1 And значение2

В языке Microsoft Jet SQL значение1 может быть больше, чем значение2; в языке ANSI SQL значение1 должно быть меньше значения2 или равно ему.

В языке Microsoft Jet SQL при использовании оператора Like поддерживаются как подстановочные знаки языка ANSI SQL, так и подстановочные знаки, относящиеся к Microsoft Jet. Невозможно совместно использовать подстановочные знаки ANSI и Microsoft Jet. Допускается использовать только один набор знаков, их нельзя смешивать. Использование знаков языка ANSI SQL разрешено только с ядром Jet версии 4.X и с поставщиком Microsoft OLE DB для Jet. При попытке использования подстановочных знаков языка ANSI SQL с приложением Microsoft Access или объектами DAO они будут трактоваться как литералы. Обратное верно при использовании поставщика Microsoft OLE DB для Jet и ядра Jet версии 4.X. Символ соответствия Microsoft Jet SQL ANSI SQL
Любой текстовый символ ? знак подчеркивания (_)
Любое количество символов * %

В языке Microsoft Jet SQL меньше ограничений. Например, разрешается производить группировку и сортировку по выражениям.
Язык Microsoft Jet SQL поддерживает более производительные выражения.
Расширенные возможности языка Microsoft Jet SQL
Язык Microsoft Jet SQL обладает следующими расшиpенными возможностями.

Инструкция TRANSFORM обеспечивает поддержку перекрестных запросов.

Существуют дополнительные статистические функции SQL, такие как StDev и VarP.
Для определения параметров запроса используется описание PARAMETERS.

Возможности языка ANSI SQL, не поддерживаемые в языке Microsoft Jet SQL
Язык Microsoft Jet SQL не поддерживает следующие возможности языка ANSI SQL.

Ссылки в статистической функции DISTINCT. Например, в языке Microsoft Jet SQL невозможно использовать конструкцию SUM(DISTINCT имя_столбца).
Использование предложения LIMIT TO nn ROWS для ограничения числа строк, возвращаемых запросом. Для подобного ограничения можно использовать только предложение WHERE.

13 янв 04, 16:49 [489864]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 То есть все так, сорри, Темный, и спасибо.
Но нужна полная картина.
13 янв 04, 16:51 [489869]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 описание символов и примеров LIKE бери из справки к MS SQL серверу

[ ] Any single character within the specified range ([a-f]) or set ([abcdef]).
(WHERE au_lname LIKE ‘[C-P]arsen’ finds author last names ending with arsen and
beginning with any single character between C and P, for example Carsen, Larsen,
Karsen, and so on.)

[^] Any single character not within the specified range ([^a-f]) or set
([^abcdef]). (WHERE au_lname LIKE ‘de[^l]%’ all author last names beginning with
de and where the following letter is not l.)

LIKE ‘5[%]’ 5%

LIKE ‘[_]n’ _n

LIKE ‘[a-cdf]’ a, b, c, d, or f

LIKE ‘[-acdf]’ -, a, c, d, or f

LIKE ‘[ [ ]’ [

LIKE ‘]’ ]

LIKE ‘abc[_]d%’ abc_d and abc_de

LIKE ‘abc[def]’ abcd, abce, and abcf

и т.д.
13 янв 04, 16:55 [489881]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Спасибо, Хам, но, опять же в твоей цитате упоминается лишь *(%) и ?(_).
А как на счет #, !, , [] ?
13 янв 04, 16:58 [489891]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 описание символов и примеров LIKE бери из справки к MS SQL серверу

Да, я так и сделал.
Но, к удивлению обнаружил, что маски с ^ не работают, а с ! работают. Каша какая-то получается, вот и спросил.
13 янв 04, 17:03 [489900]
Откуда: СПб
Сообщений: 63 А что будет выдавать WHERE Phone1 LIKE ‘([0-9][0-9][0-9])[134567890]%’
Выдает все правильно, т.е. 6-ой символ не двойка.
13 янв 04, 18:01 [490023]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?
13 янв 04, 18:02 [490031]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 Из проги на VB6 при помощи ADO 2.5 идет запрос к бд формата MS Access 2000.
13 янв 04, 18:05 [490044]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?

Потому что используется ADO, а не DAO.
Спецсимволы * и ? и # не работают просто наглядно.
13 янв 04, 18:07 [490051]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 проверил на MS SQL
WHERE (вв LIKE ‘[0-9][0-9][0-9][^2]%’)
рабоает правильно и возращает все записи за исключением 2

На MS SQL — то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.
13 янв 04, 18:20 [490084]

Re: Описание спецсимволов для LIKE в ADO ?
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 4087 >На MS SQL — то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.

Для АДО (при работе с mdb) надо применять % и _. Для отрицания ! (оператор сравнения такой же как < >) ^ — этот знак для работы с mdb (формат Акес2002+ANSI SQL 92) и MS SQL.
Хотя действительно можно запутаться и в справке по этому поводу — тишина.
14 янв 04, 09:15 [490413]

Re: Описание спецсимволов для LIKE в ADO ?
Иван Абрамов
Member

Откуда: СПб
Сообщений: 63 А как конвертировать числовое поле в текстовое, чтобы использовать с LIKE?

В DAO я бы написал так
WHERE CSTR(NumericField1) LIKE ‘*51*’

А в ADO (при коннекте к бд MSAccess2000) как?
Что-то типа WHERE …NumericField1… LIKE ‘%51%’

Заранее спасибо.

I’m using MS Query in Excel to execute the following query:

select 
iif(egachid <>'GCAJA0', True, False)
from fgledg
where egcono='1'and egdivi='D30'and egvono=51166554

I have a tabel, fgledg, that contains a column, egchid. For a specific voucher (egvono = 51166554) I get the following rows:

EGCONO    EGDIVI    EGYEA4  EGVONO      EGCHID
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    SEBSHHASP
1         D30       2015    51166554    SEBSHHASP
1         D30       2015    51166554    SEBSHHASP

I would like my query to return True if the column egchid contains other values than GCAJA0 and false if the column only contains the value GCAJA0, but I keep getting error messages no matter how i write the syntax. It seems to accept the iif function at least, but the syntax is incorrect?

I have tried diffrent variations of writing the syntax, but get the following error messages:

IIf(egachid <>'GCAJA0', True, False)        Token <> was not valid
IIf(egachid = 'GCAJA0', False, True)        Token = was not valid
IIf([egachid] <>'GCAJA0', True, False)      Token [ was not valid
IIf([egachid] <>'GCAJA0', 'True', 'False')  Token [ was not valid

What am I doing wrong?

I’m using MS Query in Excel to execute the following query:

select 
iif(egachid <>'GCAJA0', True, False)
from fgledg
where egcono='1'and egdivi='D30'and egvono=51166554

I have a tabel, fgledg, that contains a column, egchid. For a specific voucher (egvono = 51166554) I get the following rows:

EGCONO    EGDIVI    EGYEA4  EGVONO      EGCHID
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    GCAJA0
1         D30       2015    51166554    SEBSHHASP
1         D30       2015    51166554    SEBSHHASP
1         D30       2015    51166554    SEBSHHASP

I would like my query to return True if the column egchid contains other values than GCAJA0 and false if the column only contains the value GCAJA0, but I keep getting error messages no matter how i write the syntax. It seems to accept the iif function at least, but the syntax is incorrect?

I have tried diffrent variations of writing the syntax, but get the following error messages:

IIf(egachid <>'GCAJA0', True, False)        Token <> was not valid
IIf(egachid = 'GCAJA0', False, True)        Token = was not valid
IIf([egachid] <>'GCAJA0', True, False)      Token [ was not valid
IIf([egachid] <>'GCAJA0', 'True', 'False')  Token [ was not valid

What am I doing wrong?

  • #2

Are you trying to define the criteria in the Query Wizard or in the SQL Query Editor?

In either case you should be able to select the field name and criteria value (if it exists in the dataset) from dropdown lists.

  • #4

When you are in the MS Query editor, click on the «SQL» button. That will show you the SQL query statement that was build using the Wizard.
It should look something like this.
SELECT MyData.`Transfer #`, MyData.Name, MyData.`Order`, MyData.Sales
FROM `C:\test\Myfile_SQL data.xlsx`.MyData MyData
WHERE (MyData.`Transfer #`=’4 digit number’)

Copy and Post that code to this thread. Also, post the error message that you are getting when you try to run the query.

If the field name doesn’t match your data exactly, then edit it in this SQL dialog and save the changes.

Понравилась статья? Поделить с друзьями:
  • Microsoft outlook произошла неизвестная ошибка код ошибки 0x80040119
  • Mi unlock ошибка проверки аккаунта
  • Microsoft outlook ошибка не выполнено
  • Mi unlock код ошибки 20091
  • Microsoft outlook ошибка 0x80040600 outlook