Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с индексами по текстовым полям / 17 сообщений из 17, страница 1 из 1
04.06.2003, 11:30
    #32175984
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Имеется такая проблема, которая пока не нашла разумного решения.
Итак:
Имеется база данных в виде одной таблицы со сведениями о людях (типа картотеки). Для работы с ней написана форма, содержащая, среди прочего, два основных элемента: поле ввода и список. При каждом вводе символа в поле (оператор набирает первые буквы фамилии человека, которого ищет) источник данных для списка подходящих записей обновляется по запросу:
Код: plaintext
 "SELECT * FROM People WHERE (FamilyName LIKE "  & me.Fam &  "*);" 

... все замечательно работает. С каждым вводимым символом искомой фамилии число записей в списке убывает, пока не находится единственная нужная.

Для ускорения поиска разумным шагом представляется введение индексирования в таблице по полю FamilyName, но тут и начинается проблема: если фамилия начинается с некоторых букв русского алфавита, например "Г" и еще 4-5 из всего алфавита, то запрос возвращает пустой набор (т.е. ничего), хотя записи точно есть в базе. Если индексирование отключить, то все начинает работать адекватно (но медленно). Если задать обратный (убывающий) порядок индекса, то все работает (но где гарнтии, что не выпадут другие буквы?).

Указанная проблема возникает при открытии базы данных в MS Access 2000. Открытие ее же в версии XP не вызывает подобной проблемы - там индексы работают правильно.

Вот, собственно, и вопрос: никто не сталкивался с такой проблемой и как ее решить, какую заплатку нужно поставить?
...
Рейтинг: 0 / 0
04.06.2003, 11:42
    #32175996
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
В Options есть порядок сортировки. Там выбирается язык. После изменения этого параметра надо сжать базу.
...
Рейтинг: 0 / 0
04.06.2003, 12:38
    #32176099
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Ставил порядок сортировки, не помогает. Стоит "универсальный", какой-либо иной применять кажется странным, не так ли? Врусской-то версии...

Да и проблема не в порядке сортировки - записи не неправильно отсортированы, а просто некоторые, начинающиеся с некоторых букв, не находятся вообще при включенном индексировании.
...
Рейтинг: 0 / 0
04.06.2003, 12:48
    #32176118
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
> Стоит "универсальный", какой-либо иной применять кажется странным, не так ли? Врусской-то версии...

Если нужна поддержка языка, то универсальный не годится. При универсальном некоторые символы не считаются буквами.
...
Рейтинг: 0 / 0
04.06.2003, 12:54
    #32176134
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Интересно :-) тогда два вопроса.

Первый (любопытно): а какой порядок надо поставить для русского языка в русской версии офиса? (Русский или Кириллица - не предлагать - отсутствуют в списке и никогда их ни в одной версии не видел).

Второй (по существу): а почему при создании убывающего индекса все символы русского языка считаются буквами, а при обычном возрастающем вдруг 5 букв перестают считаться буквами? Почему они всегда считаются буквами в версии Office XP, а в 2000 не считаются? Почему они перестают считаться буквами при включении индексирования, а при отключенных индексах сортировка и выборка данных происходит нормально?

В общем, глюк это, все-так...
...
Рейтинг: 0 / 0
04.06.2003, 12:59
    #32176145
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Боюсь, что ответить не смогу. Но подозрительно, что кроме меня вообще никто ничего не отвечает. В любом случае, предлагаю попробовать поиграть с этим параметром.
...
Рейтинг: 0 / 0
04.06.2003, 13:10
    #32176161
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
здесь
...
Рейтинг: 0 / 0
04.06.2003, 13:13
    #32176168
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
А ссылка верна? Что-то она не работает ("Невозможно отобразить страницу...")
...
Рейтинг: 0 / 0
04.06.2003, 13:24
    #32176195
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Нашел правильную ссылку, но решения-то там и нету :( А промлема описана моя. Был комп с Win98SE и Access 2000, потом проверял на компе с Win2000 и Access XP - на нем все работало. Выходит, какой-то компонент офиса или винды глючит. Вопрос в том, какой.
...
Рейтинг: 0 / 0
04.06.2003, 14:01
    #32176268
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
>Вопрос в том, какой.
Вроде твое:
PRB: Overlocalized Sort Order Strings in Access/Jet ODBC Driver.Q279401
....
The Jet 4.0 ODBC driver incorrectly uses this localized list of sort orders to verify
sort languages while it creates a new database file. This means that applications
that use the CREATE_DB option with the SQLConfigDataSource ODBC function to
create new databases with a specific sort order will fail, unless the localized
version of the sort order language is provided.
...
To resolve this problem, obtain the latest service pack for Microsoft Data Access Components (MDAC) version 2.5.
...
This problem was corrected in MDAC 2.5 Service Pack 1 (SP1), which is also included with Microsoft Windows 2000 SP1

Так что бегом за свежим MDAC и заодно SP на JET неси.
...
Рейтинг: 0 / 0
04.06.2003, 14:12
    #32176288
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
2 ZRW
Первый (любопытно): а какой порядок надо поставить для русского языка в русской версии офиса? (Русский или Кириллица - не предлагать - отсутствуют в списке и никогда их ни в одной версии не видел).
Именно "Русский" и надо поставить. Как это отсутствуют в списке? Внимательнее ищи.

Почему они перестают считаться буквами при включении индексирования, а при отключенных индексах сортировка и выборка данных происходит нормально?
Потому что индекс есть сохраненное отношение порядка. Буквы не перестаются считаться буквами. Аксесу вобще пофиг, буква это, цифра или херня непонятная. Для него важен только относительный порядок символов. Если этот порядок есть готовый (индекс) - он и испольуется при поиске/фильтрации/сортировке. Если нет - определяется на лету.
Собственно разница в поведении - из-за разницы в механизмах определения порядка средствами SQL, VBA и индексов. Все они попарно различаются.
В случае индексов - порядок зависит от упомянутого параметра.
С случае SQL - пока сказать не могу.
В случае VBA - от параметра "Option Compare" в модулях или аргумента Compare в функции StrComp. И там и там есть значение "сравнение строк средствами базы" (Option Compare Database и vbDatabaseCompare). Если его использовать - то по идее должно сравнивать строки также как механизм построения индексов. Но это только в теории. На практике они отличаются. По крайней мере в 97-м аксесе.

Фу блин, аж писать устал.
...
Рейтинг: 0 / 0
04.06.2003, 14:20
    #32176305
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
2Лоху
>Именно "Русский" и надо поставить. Как это отсутствуют в списке? Внимательнее ищи

Лично у меня русского нет :) (Акес2000)
Стоит сейчас универсальный и все работает без каких-либо особых телодвижений. Правда сервис-паки стоят, и MDAC 2.5 SP1.
Но я уже про это писал.
...
Рейтинг: 0 / 0
04.06.2003, 14:41
    #32176341
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Ну значит из 2000-го убрали. В 97-м есть.
...
Рейтинг: 0 / 0
04.06.2003, 15:40
    #32176445
Нуф-нуф
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Сталкивался с энтим глюком и лично у меня все решилось заключением в квадратные скобки всех символов искомой строки, чем занималась соотв. функция.
...
Рейтинг: 0 / 0
04.06.2003, 15:40
    #32176447
Нуф-нуф
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Сталкивался с энтим глюком и лично у меня все решилось заключением в квадратные скобки всех символов по отдельности в искомой строке, чем занималась соотв. функция. Все работало быстро...
...
Рейтинг: 0 / 0
05.06.2003, 08:09
    #32176939
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
2All:
Спасибо, буду тестировать дальше. Обновлю MDAC. Сервис-паки для офиса ставил еще раньше все, без эффекта.
...
Рейтинг: 0 / 0
06.06.2003, 08:49
    #32178034
Zrw
Zrw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с индексами по текстовым полям
Помогла установка MDAC 2.7
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с индексами по текстовым полям / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]