Проблема с поиском в неиндексированном поле

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Проблема с поиском в неиндексированном поле

Сообщение Volan » 26.01.2005 (Ср) 13:06

Лет 5 назад написал базу под Access98 для 4-х машин - все прекрасно работало. Затем база разрослась и количество пользователей увеличилось до 16 все стало падать. Сначала раз в месяц потом чаще когда стала падать 3...4 раза в день таблицы перевел на SQL. Клиентская часть осталась в Access 2000. В принципе все работает не падала ни разу, но есть такой глюк: если искать в неиндексированнм текстовом поле то первые 1...3 совпадения находятся, дальше Access преводит курсор на запись, которая ничего общего не имеет с искомой строчкой. Если нажать еще раз "найти далее", то просто закроется access.
Поьзователи очень ругаются а найти решение никак не удается.

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Re: Проблема с поиском в неиндексированном поле

Сообщение snov » 27.01.2005 (Чт) 11:03

Volan писал(а):... количество пользователей увеличилось до 16 все стало падать. Сначала раз в месяц потом чаще когда стала падать 3...4 раза в день таблицы перевел на SQL. Клиентская часть осталась в Access 2000. В принципе все работает не падала ни разу, но есть такой глюк: если искать в неиндексированнм текстовом поле то первые 1...3 совпадения находятся, дальше Access преводит курсор на запись, которая ничего общего не имеет с искомой строчкой. Если нажать еще раз "найти далее", то просто закроется access.
Поьзователи очень ругаются а найти решение никак не удается.
В поле какого типа ищем? В одном ли поле? Ищем средствами АДО? ДАО? Своими руками? Конкретизируйте

Krasavica
Небожительница
Небожительница
Аватара пользователя
 
Сообщения: 1378
Зарегистрирован: 04.11.2003 (Вт) 17:51
Откуда: Россия, город-герой Москва ;-)

Сообщение Krasavica » 27.01.2005 (Чт) 11:04

Access представляет из себя систему desktop-уровня. Её можно использовать для 2-3 клиентов. Но уже и на этом уровне иногда возникают проблемы.
Стоит вероятно просто написать клиента на каком-нибудь языке программирования для этого предназначенного, и с клиента подключаться к базе. :)
я - ангел!!! ...просто крылья в стирке, а нимб на подзарядке!
Меня трудно найти, легко потерять и невозможно забыть.Изображение

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 27.01.2005 (Чт) 11:10

Krasavica писал(а):Access представляет из себя систему desktop-уровня. Её можно использовать для 2-3 клиентов. Но уже и на этом уровне иногда возникают проблемы.
Стоит вероятно просто написать клиента на каком-нибудь языке программирования для этого предназначенного, и с клиента подключаться к базе. :)
Access, насколько я понял, здесь используется не более чем просто клиент, сама база лежит на MSSQL. вроде так. Какая разница сколько Access'ов будет цепляться за MSSQL? 2? 3? больше? Тут ведь не в этом проблема! Проблема в поиске! Или в руках?! Пока не ясно ..

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 27.01.2005 (Чт) 15:25

Киньте индекс на поле. Сиквел прекрасно хэндлит достаточно большие индексы, единственное - надо будет немного подумать, как организовать периодическую реиндексацию.

Krasavica
Небожительница
Небожительница
Аватара пользователя
 
Сообщения: 1378
Зарегистрирован: 04.11.2003 (Вт) 17:51
Откуда: Россия, город-герой Москва ;-)

Сообщение Krasavica » 27.01.2005 (Чт) 23:47

snov писал(а): Access, насколько я понял, здесь используется не более чем просто клиент, сама база лежит на MSSQL. вроде так. Какая разница сколько Access'ов будет цепляться за MSSQL? 2? 3? больше? Тут ведь не в этом проблема! Проблема в поиске! Или в руках?! Пока не ясно ..

Возможно проблема в Аксессе. Аксесс не предназначен для написания программ-клиентов для SQL баз данных.

То, что в нём есть возможность подключить внешний источник данных, ещё не говорит о том, что Вы можете с ним делать все операции, которые Вы захотите.
я - ангел!!! ...просто крылья в стирке, а нимб на подзарядке!
Меня трудно найти, легко потерять и невозможно забыть.Изображение

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 28.01.2005 (Пт) 7:53

Krasavica писал(а):Возможно проблема в Аксессе. Аксесс не предназначен для написания программ-клиентов для SQL баз данных.

То, что в нём есть возможность подключить внешний источник данных, ещё не говорит о том, что Вы можете с ним делать все операции, которые Вы захотите.
Так или иначе поиск делает не Access и как следствие не из-за кривости оного появился баг.
2Ennor. Индексирование, IMHO, самое универсальное решение проблемы

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 28.01.2005 (Пт) 10:00

Krasavica писал(а):... Аксесс не предназначен для написания программ-клиентов для SQL баз данных.

То, что в нём есть возможность подключить внешний источник данных, ещё не говорит о том, что Вы можете с ним делать все операции, которые Вы захотите. [/color][/i]
Посмотри сюда
http://msdn.microsoft.com/library/defau ... apg03_prog

Krasavica
Небожительница
Небожительница
Аватара пользователя
 
Сообщения: 1378
Зарегистрирован: 04.11.2003 (Вт) 17:51
Откуда: Россия, город-герой Москва ;-)

Сообщение Krasavica » 28.01.2005 (Пт) 13:07

snov
С момента обсуждения автор топика вообще пропал :lol:
я - ангел!!! ...просто крылья в стирке, а нимб на подзарядке!
Меня трудно найти, легко потерять и невозможно забыть.Изображение

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 28.01.2005 (Пт) 13:47

Krasavica писал(а):snov
С момента обсуждения автор топика вообще пропал :lol:
Куда это я пропал? Тута я!

Krasavica
Небожительница
Небожительница
Аватара пользователя
 
Сообщения: 1378
Зарегистрирован: 04.11.2003 (Вт) 17:51
Откуда: Россия, город-герой Москва ;-)

Сообщение Krasavica » 28.01.2005 (Пт) 13:50

Volan - автор топика, или это вы и есть? :)
я - ангел!!! ...просто крылья в стирке, а нимб на подзарядке!
Меня трудно найти, легко потерять и невозможно забыть.Изображение

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 28.01.2005 (Пт) 13:53

Krasavica писал(а):Volan - автор топика, или это вы и есть? :)
Нет :oops: Пардон, обшибся. Я параллельно еще в 1 форуме сижу и ман по проге пишу. запарился

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 28.01.2005 (Пт) 14:14

Извините, только добрался до компа. Поле по которому ищу - текстовое "название предприятия". По совету народа с "sql.ru" преобразовал базу к формату 2002 - вылетать перестала, но ищет странно. Допустим в строке поиска (стандартное средство Access) набираем "энергия" - находся одно из предприятий содержащее это слово, жмем "найти далее" в результате находит предприятие например "рога и копыта" и где тут энергия??? если нажать далее, то вновь может найти правильное соответствие, а может и нет. НАсколько целесообразно индексировать текстовое поле??

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 28.01.2005 (Пт) 14:33

Volan писал(а):Извините, только добрался до компа. Поле по которому ищу - текстовое "название предприятия". По совету народа с "sql.ru" преобразовал базу к формату 2002 - вылетать перестала, но ищет странно. Допустим в строке поиска (стандартное средство Access) набираем "энергия" - находся одно из предприятий содержащее это слово, жмем "найти далее" в результате находит предприятие например "рога и копыта" и где тут энергия??? если нажать далее, то вновь может найти правильное соответствие, а может и нет. НАсколько целесообразно индексировать текстовое поле??
Подожди а какие таблицы ты перевел на SQL, и как я понял база все таки на Access'e, тогда что значит перевел на SQL?

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 28.01.2005 (Пт) 14:40

все таблицы находятся на SQL. На клиентских машинах установлен офис ХР в котором соответственно есть access2002. Поскольку в проект adp переделать не успел, то у клиентов стоит MDB файл с линковаными таблицами.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 28.01.2005 (Пт) 17:42

Volan писал(а): НАсколько целесообразно индексировать текстовое поле??


IMHO дело (в данном случае) не в индексе. Даже на скорость этот индекс влиять не будет, ибо поиск делается по подстроке.

Кстати, для непонявших - человек просто открывает таблицу в окошке базы Access и нажав Ctrl+F пытается в ней что-то найти. ;)

Похоже что-то не то с настройками локализации базы...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 28.01.2005 (Пт) 18:59

To Andrey Fedorov
Спасибо, Очень кратко и качественно изложил суть проблемы. А вот что такое локализация?????

Krasavica
Небожительница
Небожительница
Аватара пользователя
 
Сообщения: 1378
Зарегистрирован: 04.11.2003 (Вт) 17:51
Откуда: Россия, город-герой Москва ;-)

Сообщение Krasavica » 28.01.2005 (Пт) 23:56

Andrey Fedorov

Изображение :cheers:
я - ангел!!! ...просто крылья в стирке, а нимб на подзарядке!
Меня трудно найти, легко потерять и невозможно забыть.Изображение

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 31.01.2005 (Пн) 12:47

Здравствуйте, с новой всех рабочей неделей.
Итак, с проблемой определились (за выходные бага не исчезла) будут ли какие предложения, господа Гуру (и конечно же дамы, не знаю как Гуру женского рода).

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 01.02.2005 (Вт) 20:31

Индекс так и не положил, как я понимаю? Ну-ну...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 01.02.2005 (Вт) 22:21

Volan писал(а): будут ли какие предложения

Предложение - не циклись на дефолтных фичах Access'a.
Напиши свою функцию, которая будет фильтровать данные через SELECT, передавая ему искомую подстроку в качестве параметра поиска.

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 03.02.2005 (Чт) 14:28

Свой поиск написать можно, дело уже даже не в этом. Раз проявляется такой глюк - снижается уверенность, что связка Access+SQL 2000 вообще нормально работает, а вдруг оно как РУХНЕТ??!!. Или будет глючить исподтишка так, что я об этом узнаю через пару месяцев и нормальных бакапов уже не будет? В общем, эйфория от того, что после перехода на SQL база перестала падать прошла и начали вылезать следующие тараканы.

ЗЫ Индекс то я поставил но пациент не реагирует.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 03.02.2005 (Чт) 14:50

Volan писал(а):... снижается уверенность, что связка Access+SQL 2000 вообще нормально работает, а вдруг оно как РУХНЕТ??!!. ..

Не рухнет, будь спокоен :D

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 03.02.2005 (Чт) 14:59

Спасибо, полегчало. Но почему ctrl+F глючит??!!!!!!!!!! (Крик души)

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 03.02.2005 (Чт) 15:27

Да зачем тебе ctrl+F нужен? Ты же все равно не предоставляешь пользователям возможность прямой работы с таблицами? Я надеюсь.
Забей на бесплодное ковыряние в ошибках Office -- очередной сервиспак решит и эту проблему тоже :)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 03.02.2005 (Чт) 15:29

Да нет такой ошибки - все прекрасно работает!

P.S. Что он там сотворил с настройками отсюда нам просто не увидеть...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 03.02.2005 (Чт) 16:06

К таблицам прямого доступа естественно нет. Пользователь например вызывает форму в которой табличным списком отображаются названия предприятий заказчиков их примерно 3000 из 600000 внесенных в бузу заводов. Так вот в этой выборке он и пытается переместится на нужного ему заказчика нажимая ctrl+F и вводя то слово, которое помнит из названия.

А настойки при установках sql стандартные сисадмин ставил по умолчанию.

Volan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 24.06.2003 (Вт) 11:21

Сообщение Volan » 03.02.2005 (Чт) 16:44

Кстати глюк обнаружился и в индексированном ключевом поле. Если искать по номеру счета (он уникальный это ключевое поле и кластерный индекс), то записи очень бысто находятся, затем по мере работы (1...2 часа) вместо искомой записи начинают находится совершенно несвязанные. Параметры поиска: В указанном сотбце, направление поиска-все; поле целиком; без учета формата.
Лечится это так: закрыли базу - открыли базу и все работает еще пару часов. Вот так.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList