Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ЗАПРОС В MICROSOFT QUERY

464
09 февраля 2004 года
WildAn
147 / / 19.05.2003
Создаю такой запрос из excel с помощью microsoft query к dbf-таблице
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально
266
10 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn
Создаю такой запрос из excel с помощью microsoft query к dbf-таблице
SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
WHERE K8351.FIO_B LIKE '%ИРИНА%'
Пишет синтаксическая ошибка
В чем проблема? Если просто ставлю условие K8351.FIO_B='ФИО', то все нормально


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

464
10 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

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


Все, что написано в хелпе КВЕРИ, попробовал НЕ работает :-(

459
12 февраля 2004 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by WildAn
Создаю такой запрос из 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 '*ИРИНА*'

:???:

6.8K
12 февраля 2004 года
Maugly
2 / / 12.02.2004
Цитата:
Originally posted by WildAn
Создаю такой запрос из 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 "%ИРИНА%" -

464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Maugly


попробуй двойные кавычки:
WHERE K8351.FIO_B LIKE "%ИРИНА%" -


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

Примечание. Знак процента (%) из примера выше — это подстановочный знак, соответствующий любому количеству символов. Для обозначения только одного символа используется знак подчеркивания (_). В зависимости от источника данных, используемые подстановочные знаки меняются. Для получения дополнительных сведений о подстановочный знаках, которые поддерживаются драйвером источника данных, обратитесь к документации по этому драйверу."
Может дело с драйвером? Не пойму Всю голову изломал

464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
В accessе построил запрос
SELECT K8351.FIO_B
FROM K8351
WHERE K8351.FIO_B Like "*ИРИНА*";
Работает
В квери не работает :-(
464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Он вообще кроме "=" в условии ничего не понимает
Квери я имею ввиду
266
12 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn
Он вообще кроме "=" в условии ничего не понимает
Квери я имею ввиду


Давайте поступим по-русски. Для того, чтобы определиться с синтаксисом, нам нужно:
1. Определить, какой движок выполняет запрос. (Думаю, что тут Jet)
2. Пригодиться знать, какая библиотека используется для доступа к БД (думаю, тут DAO).
3. К какой таблице выполняется запрос (она не прилинкованная??? Если прилинкованная, то из какой БД?).
Когда будут ответы на все эти вопросы, можно однозначно решить задачу, а пока мы только гадаем на кофейной гуще и только путаем человека.

464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

Давайте поступим по-русски. Для того, чтобы определиться с синтаксисом, нам нужно:
1. Определить, какой движок выполняет запрос. (Думаю, что тут Jet)
2. Пригодиться знать, какая библиотека используется для доступа к БД (думаю, тут DAO).
3. К какой таблице выполняется запрос (она не прилинкованная??? Если прилинкованная, то из какой БД?).


Было бы не плохо, если бы уважаемый mhaturov объяснил, как получить ответы на поставленные три вопроса. :-)

266
12 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Было бы не плохо, если бы уважаемый mhaturov объяснил, как получить ответы на поставленные три вопроса. :-)


1. Для того, чтобы определить тип ядра БД, нужно хотя бы знать, при момощи какой СУБД создана БД. Исходя из этого можно прикинуть "движок". Я просто не помню, какая СУБД работает с файлами *.dbf. Это не SQL? (Сначала я по глупости решил, что это Access, ну и БД на ядре Jet, но это не так.)
2. Чтобы опредетить, какая библиотека доступа используется, нужно посмотреть документацию по Квери. (Хотя, зная движок, это уже не так важно)
3. Прилинкованной называется таблица, которая хранится в другой БД, а в той, через которую реализуется к ней доступ, просто ссылка на неё как бы. В этом случае для определения текста запроса необходимо знать, из какой БД прилинкована таблица.

464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

1. Для того, чтобы определить тип ядра БД, нужно хотя бы знать, при момощи какой СУБД создана БД. Исходя из этого можно прикинуть "движок". Я просто не помню, какая СУБД работает с файлами *.dbf.


Даже не знаю, как они их создают. Но массив формируется с помощью пользовательских меню, написанных на clippere

Цитата:
Originally posted by mhaturov

2. Чтобы опредетить, какая библиотека доступа используется, нужно посмотреть документацию по Квери. (Хотя, зная движок, это уже не так важно)


Попробую поискать

Цитата:
Originally posted by mhaturov

3. Прилинкованной называется таблица, которая хранится в другой БД, а в той, через которую реализуется к ней доступ, просто ссылка на неё как бы. В этом случае для определения текста запроса необходимо знать, из какой БД прилинкована таблица.


Нет Обращаюсь непосредственно к массиву данных

258
12 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Помойму он знак "%" не понимает. Между MSSQL и Access точно есть различие в спец. символах оператора Like, где-то я видел обсуждение этой проблемы. попробую найти.

Так что попробуй заменить на что другое эти "%"? а пока поищу тот топик.
464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV
Помойму он знак "%" не понимает. Между MSSQL и Access точно есть различие в спец. символах оператора Like, где-то я видел обсуждение этой проблемы. попробую найти.

Так что попробуй заменить на что другое эти "%"? а пока поищу тот топик.


Даже если писать like 'ИРИНА', ГОВОРИТ СИНТАКСИЧЕСКАЯ ОШИБКА.

266
12 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Даже если писать like 'ИРИНА', ГОВОРИТ СИНТАКСИЧЕСКАЯ ОШИБКА.


*.dbf - файлы базы данных dBase. Посмотри в хелпах по работе с такими БД. Там, скорее всего, вместо like что-то другое применяется.

464
12 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

*.dbf - файлы базы данных dBase. Посмотри в хелпах по работе с такими БД. Там, скорее всего, вместо like что-то другое применяется.


Так ведь квери создает источник данных с использованием драйвера dbase Я инструментами квери сздаю условие на выборку: щелкаешь на столбец условий и добавляешь. Так вот, он в строке условий пишет Похоже на '%ИРИНА%' Нажимаю выполнить, СИНТАКСИЧЕСКАЯ ОШИБКА От зараза

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
Тут все может быть достаточно хитро.

Например есть такая фишка в Access, когда пишешь запрос к SQL серверу из Access, то есть разница из какого файла Access ты направляешь запрос: из mdb (у него DAO по умолч.) или adp (у него ADO основн. библиотека). Вот так вот. Хотя казалось бы, запрос же идет к SQL-серверу....... видно проблема еще в том через какую библотеку доступа идет сам запрос. Вероятно некоторые билиотеки (DAO и ADO) накладывают свои ограничения на формат SQL строки.

Попробуй заменить % на *
266
12 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Тут все может быть достаточно хитро.

Например есть такая фишка в Access, когда пишешь запрос к SQL серверу из Access, то есть разница из какого файла Access ты направляешь запрос: из mdb (у него DAO по умолч.) или adp (у него ADO основн. библиотека). Вот так вот. Хотя казалось бы, запрос же идет к SQL-серверу....... видно проблема еще в том через какую библотеку доступа идет сам запрос. Вероятно некоторые билиотеки (DAO и ADO) накладывают свои ограничения на формат SQL строки.

Попробуй заменить % на *


Попробуем так Like '%' + 'Тыры-пыры' + '%'.
А вообще, надо посмотреть, как в dBase такие запросы строятся.

464
13 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

Попробуем так Like '%' + 'Тыры-пыры' + '%'.
А вообще, надо посмотреть, как в dBase такие запросы строятся.


Ни фига.

266
13 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Ни фига.


Посмотри на форумах по 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

266
13 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Ни фига.


Оба-на! Аналог!!!
Делаю запрос из Access к SQL. Не понимает функцию Convert!!! Вот енто дела!!!

464
13 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

Оба-на! Аналог!!!
Делаю запрос из Access к SQL. Не понимает функцию Convert!!! Вот енто дела!!!


Уф, теперь и пиво можно попить Как говорится, перелапатил пол-инет, но все же нашел

SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
where K8351.FIO_B

Цитата:
alike

'%ИРИНА%'

258
13 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

Уф, теперь и пиво можно попить Как говорится, перелапатил пол-инет, но все же нашел

SELECT K8351.FIO_B
FROM `D:\BASA`\K8351.dbf K8351
where K8351.FIO_B '%ИРИНА%'



ALIKE говоришь :)

464
13 февраля 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV


ALIKE говоришь :)


Ага ;)

258
13 февраля 2004 года
SergeySV
1.5K / / 19.03.2003
Я вот тут тоже уже второй день бьюсь над задачкой, как передать в функцию API адрес на структуру, которую я создал и заполнил в своем коде.

Полинета перерыл, на форумах умных людей выспрашивал, никто не знает. Совершенно случайно на MSDN натыкаюсь на статью - Win32 API Programming with Visual Basic, из которой узнаю, что оказывается в VBA есть две НЕДОКУМЕНТИРОВАННЫЕ функции: VarPtr и StrPtr, которые возвращают адрес в памяти указанных переменных объектного типа и стринг.
А находятся они конечно же - в скрытом модуле под названием - _HiddenModule, писец :) :) :)

Ох уж мне этот мелкософт ;)
266
13 февраля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Я вот тут тоже уже второй день бьюсь над задачкой, как передать в функцию API адрес на структуру, которую я создал и заполнил в своем коде.

Полинета перерыл, на форумах умных людей выспрашивал, никто не знает. Совершенно случайно на MSDN натыкаюсь на статью - Win32 API Programming with Visual Basic, из которой узнаю, что оказывается в VBA есть две НЕДОКУМЕНТИРОВАННЫЕ функции: VarPtr и StrPtr, которые возвращают адрес в памяти указанных переменных объектного типа и стринг.
А находятся они конечно же - в скрытом модуле под названием - _HiddenModule, писец :) :) :)

Ох уж мне этот мелкософт ;)


Будете смеяться, но я об этих функциях не только слышал, но и использовал их гдё-то, но вот для чего они - уже не помню, так как просто-напросто о них забыл, а вот сейчас увидал и....:D Удивительное - рядом...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог