|
|
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Имеется такая проблема, которая пока не нашла разумного решения. Итак: Имеется база данных в виде одной таблицы со сведениями о людях (типа картотеки). Для работы с ней написана форма, содержащая, среди прочего, два основных элемента: поле ввода и список. При каждом вводе символа в поле (оператор набирает первые буквы фамилии человека, которого ищет) источник данных для списка подходящих записей обновляется по запросу: Код: plaintext ... все замечательно работает. С каждым вводимым символом искомой фамилии число записей в списке убывает, пока не находится единственная нужная. Для ускорения поиска разумным шагом представляется введение индексирования в таблице по полю FamilyName, но тут и начинается проблема: если фамилия начинается с некоторых букв русского алфавита, например "Г" и еще 4-5 из всего алфавита, то запрос возвращает пустой набор (т.е. ничего), хотя записи точно есть в базе. Если индексирование отключить, то все начинает работать адекватно (но медленно). Если задать обратный (убывающий) порядок индекса, то все работает (но где гарнтии, что не выпадут другие буквы?). Указанная проблема возникает при открытии базы данных в MS Access 2000. Открытие ее же в версии XP не вызывает подобной проблемы - там индексы работают правильно. Вот, собственно, и вопрос: никто не сталкивался с такой проблемой и как ее решить, какую заплатку нужно поставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 11:30 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
В Options есть порядок сортировки. Там выбирается язык. После изменения этого параметра надо сжать базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 11:42 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Ставил порядок сортировки, не помогает. Стоит "универсальный", какой-либо иной применять кажется странным, не так ли? Врусской-то версии... Да и проблема не в порядке сортировки - записи не неправильно отсортированы, а просто некоторые, начинающиеся с некоторых букв, не находятся вообще при включенном индексировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 12:38 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
> Стоит "универсальный", какой-либо иной применять кажется странным, не так ли? Врусской-то версии... Если нужна поддержка языка, то универсальный не годится. При универсальном некоторые символы не считаются буквами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 12:48 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Интересно :-) тогда два вопроса. Первый (любопытно): а какой порядок надо поставить для русского языка в русской версии офиса? (Русский или Кириллица - не предлагать - отсутствуют в списке и никогда их ни в одной версии не видел). Второй (по существу): а почему при создании убывающего индекса все символы русского языка считаются буквами, а при обычном возрастающем вдруг 5 букв перестают считаться буквами? Почему они всегда считаются буквами в версии Office XP, а в 2000 не считаются? Почему они перестают считаться буквами при включении индексирования, а при отключенных индексах сортировка и выборка данных происходит нормально? В общем, глюк это, все-так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 12:54 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Боюсь, что ответить не смогу. Но подозрительно, что кроме меня вообще никто ничего не отвечает. В любом случае, предлагаю попробовать поиграть с этим параметром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 12:59 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 13:10 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
А ссылка верна? Что-то она не работает ("Невозможно отобразить страницу...") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 13:13 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Нашел правильную ссылку, но решения-то там и нету :( А промлема описана моя. Был комп с Win98SE и Access 2000, потом проверял на компе с Win2000 и Access XP - на нем все работало. Выходит, какой-то компонент офиса или винды глючит. Вопрос в том, какой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 13:24 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
>Вопрос в том, какой. Вроде твое: 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 неси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 14:01 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
2 ZRW Первый (любопытно): а какой порядок надо поставить для русского языка в русской версии офиса? (Русский или Кириллица - не предлагать - отсутствуют в списке и никогда их ни в одной версии не видел). Именно "Русский" и надо поставить. Как это отсутствуют в списке? Внимательнее ищи. Почему они перестают считаться буквами при включении индексирования, а при отключенных индексах сортировка и выборка данных происходит нормально? Потому что индекс есть сохраненное отношение порядка. Буквы не перестаются считаться буквами. Аксесу вобще пофиг, буква это, цифра или херня непонятная. Для него важен только относительный порядок символов. Если этот порядок есть готовый (индекс) - он и испольуется при поиске/фильтрации/сортировке. Если нет - определяется на лету. Собственно разница в поведении - из-за разницы в механизмах определения порядка средствами SQL, VBA и индексов. Все они попарно различаются. В случае индексов - порядок зависит от упомянутого параметра. С случае SQL - пока сказать не могу. В случае VBA - от параметра "Option Compare" в модулях или аргумента Compare в функции StrComp. И там и там есть значение "сравнение строк средствами базы" (Option Compare Database и vbDatabaseCompare). Если его использовать - то по идее должно сравнивать строки также как механизм построения индексов. Но это только в теории. На практике они отличаются. По крайней мере в 97-м аксесе. Фу блин, аж писать устал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 14:12 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
2Лоху >Именно "Русский" и надо поставить. Как это отсутствуют в списке? Внимательнее ищи Лично у меня русского нет :) (Акес2000) Стоит сейчас универсальный и все работает без каких-либо особых телодвижений. Правда сервис-паки стоят, и MDAC 2.5 SP1. Но я уже про это писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 14:20 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Ну значит из 2000-го убрали. В 97-м есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 14:41 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Сталкивался с энтим глюком и лично у меня все решилось заключением в квадратные скобки всех символов искомой строки, чем занималась соотв. функция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 15:40 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
Сталкивался с энтим глюком и лично у меня все решилось заключением в квадратные скобки всех символов по отдельности в искомой строке, чем занималась соотв. функция. Все работало быстро... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2003, 15:40 |
|
||
|
Проблема с индексами по текстовым полям
|
|||
|---|---|---|---|
|
#18+
2All: Спасибо, буду тестировать дальше. Обновлю MDAC. Сервис-паки для офиса ставил еще раньше все, без эффекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 08:09 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32176939&tid=1681205]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 299ms |

| 0 / 0 |
