ЗАПРОС В MICROSOFT QUERY
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально
Создаю такой запрос из excel с помощью microsoft query к dbf-таблице
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально
К сожалению, сейчас некогда особо смотреть, но в хелпе как описывается применение Like? Посмотри там. Возможно, тут неверное использование %
К сожалению, сейчас некогда особо смотреть, но в хелпе как описывается применение Like? Посмотри там. Возможно, тут неверное использование %
Все, что написано в хелпе КВЕРИ, попробовал НЕ работает :-(
Создаю такой запрос из excel с помощью microsoft query к dbf-таблице
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально
А что означают %% в '%ИРИНА%'
В Хелпе LIKE я этого не нашел
По смыслу задания вроде выбираются записи, где FIO_B содержит ИРИНА. Тогда надо бы LIKE '*ИРИНА*'
:???:
Создаю такой запрос из excel с помощью microsoft query к dbf-таблице
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально
попробуй двойные кавычки:
WHERE K8351.FIO_B LIKE "%ИРИНА%" -
попробуй двойные кавычки:
WHERE K8351.FIO_B LIKE "%ИРИНА%" -
Ничего не получается В хелпе вот что написано "Для использования оператора Похоже на введите слово Похоже на и затем введите в одинарных кавычках значение, которое необходимо найти.
Примечание. Знак процента (%) из примера выше — это подстановочный знак, соответствующий любому количеству символов. Для обозначения только одного символа используется знак подчеркивания (_). В зависимости от источника данных, используемые подстановочные знаки меняются. Для получения дополнительных сведений о подстановочный знаках, которые поддерживаются драйвером источника данных, обратитесь к документации по этому драйверу."
Может дело с драйвером? Не пойму Всю голову изломал
SELECT K8351.FIO_B
FROM K8351
WHERE K8351.FIO_B Like "*ИРИНА*";
Работает
В квери не работает :-(
Квери я имею ввиду
Он вообще кроме "=" в условии ничего не понимает
Квери я имею ввиду
Давайте поступим по-русски. Для того, чтобы определиться с синтаксисом, нам нужно:
1. Определить, какой движок выполняет запрос. (Думаю, что тут Jet)
2. Пригодиться знать, какая библиотека используется для доступа к БД (думаю, тут DAO).
3. К какой таблице выполняется запрос (она не прилинкованная??? Если прилинкованная, то из какой БД?).
Когда будут ответы на все эти вопросы, можно однозначно решить задачу, а пока мы только гадаем на кофейной гуще и только путаем человека.
Давайте поступим по-русски. Для того, чтобы определиться с синтаксисом, нам нужно:
1. Определить, какой движок выполняет запрос. (Думаю, что тут Jet)
2. Пригодиться знать, какая библиотека используется для доступа к БД (думаю, тут DAO).
3. К какой таблице выполняется запрос (она не прилинкованная??? Если прилинкованная, то из какой БД?).
Было бы не плохо, если бы уважаемый mhaturov объяснил, как получить ответы на поставленные три вопроса. :-)
Было бы не плохо, если бы уважаемый mhaturov объяснил, как получить ответы на поставленные три вопроса. :-)
1. Для того, чтобы определить тип ядра БД, нужно хотя бы знать, при момощи какой СУБД создана БД. Исходя из этого можно прикинуть "движок". Я просто не помню, какая СУБД работает с файлами *.dbf. Это не SQL? (Сначала я по глупости решил, что это Access, ну и БД на ядре Jet, но это не так.)
2. Чтобы опредетить, какая библиотека доступа используется, нужно посмотреть документацию по Квери. (Хотя, зная движок, это уже не так важно)
3. Прилинкованной называется таблица, которая хранится в другой БД, а в той, через которую реализуется к ней доступ, просто ссылка на неё как бы. В этом случае для определения текста запроса необходимо знать, из какой БД прилинкована таблица.
1. Для того, чтобы определить тип ядра БД, нужно хотя бы знать, при момощи какой СУБД создана БД. Исходя из этого можно прикинуть "движок". Я просто не помню, какая СУБД работает с файлами *.dbf.
Даже не знаю, как они их создают. Но массив формируется с помощью пользовательских меню, написанных на clippere
2. Чтобы опредетить, какая библиотека доступа используется, нужно посмотреть документацию по Квери. (Хотя, зная движок, это уже не так важно)
Попробую поискать
3. Прилинкованной называется таблица, которая хранится в другой БД, а в той, через которую реализуется к ней доступ, просто ссылка на неё как бы. В этом случае для определения текста запроса необходимо знать, из какой БД прилинкована таблица.
Нет Обращаюсь непосредственно к массиву данных
Так что попробуй заменить на что другое эти "%"? а пока поищу тот топик.
Помойму он знак "%" не понимает. Между MSSQL и Access точно есть различие в спец. символах оператора Like, где-то я видел обсуждение этой проблемы. попробую найти.
Так что попробуй заменить на что другое эти "%"? а пока поищу тот топик.
Даже если писать like 'ИРИНА', ГОВОРИТ СИНТАКСИЧЕСКАЯ ОШИБКА.
Даже если писать like 'ИРИНА', ГОВОРИТ СИНТАКСИЧЕСКАЯ ОШИБКА.
*.dbf - файлы базы данных dBase. Посмотри в хелпах по работе с такими БД. Там, скорее всего, вместо like что-то другое применяется.
*.dbf - файлы базы данных dBase. Посмотри в хелпах по работе с такими БД. Там, скорее всего, вместо like что-то другое применяется.
Так ведь квери создает источник данных с использованием драйвера dbase Я инструментами квери сздаю условие на выборку: щелкаешь на столбец условий и добавляешь. Так вот, он в строке условий пишет Похоже на '%ИРИНА%' Нажимаю выполнить, СИНТАКСИЧЕСКАЯ ОШИБКА От зараза
Раньше для коннекта из проги на 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%'
Заранее спасибо.
Например есть такая фишка в Access, когда пишешь запрос к SQL серверу из Access, то есть разница из какого файла Access ты направляешь запрос: из mdb (у него DAO по умолч.) или adp (у него ADO основн. библиотека). Вот так вот. Хотя казалось бы, запрос же идет к SQL-серверу....... видно проблема еще в том через какую библотеку доступа идет сам запрос. Вероятно некоторые билиотеки (DAO и ADO) накладывают свои ограничения на формат SQL строки.
Попробуй заменить % на *
Тут все может быть достаточно хитро.
Например есть такая фишка в Access, когда пишешь запрос к SQL серверу из Access, то есть разница из какого файла Access ты направляешь запрос: из mdb (у него DAO по умолч.) или adp (у него ADO основн. библиотека). Вот так вот. Хотя казалось бы, запрос же идет к SQL-серверу....... видно проблема еще в том через какую библотеку доступа идет сам запрос. Вероятно некоторые билиотеки (DAO и ADO) накладывают свои ограничения на формат SQL строки.
Попробуй заменить % на *
Попробуем так Like '%' + 'Тыры-пыры' + '%'.
А вообще, надо посмотреть, как в dBase такие запросы строятся.
Попробуем так Like '%' + 'Тыры-пыры' + '%'.
А вообще, надо посмотреть, как в dBase такие запросы строятся.
Ни фига.
Ни фига.
Посмотри на форумах по dBase, что там используется вместо оператора Like и каков синтаксис. Тут надо плясать от ядра БД, а не от гадания по поводу синтаксиса.
Вто ссылки (я их сам не смотрел). Может, что-то там найдёшь:
http://forum.codenet.ru/showthread.php?threadid=8408
http://delphi.hostmos.ru/?forum&topic=187
http://www.sql.ru/forum/actualthread.aspx?bid=-99&tid=12581
http://www.rusdoc.ru/ubb/noncgi/Forum2/HTML/000012.html
http://www.progz.ru/viewtopic.php?t=2944
http://forum.vingrad.ru/index.php?oldss=3d8858c336f4ffff&act=ST&f=2&t=2589&st=10
http://ms.centre.ru/forum/discuss.phtml?id=16&part=11&disc=4952&start=560
Ни фига.
Оба-на! Аналог!!!
Делаю запрос из Access к SQL. Не понимает функцию Convert!!! Вот енто дела!!!
Оба-на! Аналог!!!
Делаю запрос из Access к SQL. Не понимает функцию Convert!!! Вот енто дела!!!
Уф, теперь и пиво можно попить Как говорится, перелапатил пол-инет, но все же нашел
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
where K8351.FIO_B
'%ИРИНА%'
Уф, теперь и пиво можно попить Как говорится, перелапатил пол-инет, но все же нашел
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
where K8351.FIO_B '%ИРИНА%'
ALIKE говоришь :)
ALIKE говоришь :)
Ага ;)
Полинета перерыл, на форумах умных людей выспрашивал, никто не знает. Совершенно случайно на MSDN натыкаюсь на статью - Win32 API Programming with Visual Basic, из которой узнаю, что оказывается в VBA есть две НЕДОКУМЕНТИРОВАННЫЕ функции: VarPtr и StrPtr, которые возвращают адрес в памяти указанных переменных объектного типа и стринг.
А находятся они конечно же - в скрытом модуле под названием - _HiddenModule, писец :) :) :)
Ох уж мне этот мелкософт ;)
Я вот тут тоже уже второй день бьюсь над задачкой, как передать в функцию API адрес на структуру, которую я создал и заполнил в своем коде.
Полинета перерыл, на форумах умных людей выспрашивал, никто не знает. Совершенно случайно на MSDN натыкаюсь на статью - Win32 API Programming with Visual Basic, из которой узнаю, что оказывается в VBA есть две НЕДОКУМЕНТИРОВАННЫЕ функции: VarPtr и StrPtr, которые возвращают адрес в памяти указанных переменных объектного типа и стринг.
А находятся они конечно же - в скрытом модуле под названием - _HiddenModule, писец :) :) :)
Ох уж мне этот мелкософт ;)
Будете смеяться, но я об этих функциях не только слышал, но и использовал их гдё-то, но вот для чего они - уже не помню, так как просто-напросто о них забыл, а вот сейчас увидал и....:D Удивительное - рядом...