Есть база данных на PostgreSQL к которой подключаюсь с помощью ZeosDBO 6.6.6.
Таблица с полями:
kodxiop (varchar(6)) naimxiop (varchar(150))
15002 Лапароскопия ......
30000 Операция на мягких ....
На форме в Edit вводится код. По выходу из Edit:
zqSprXirOper.Locate('kodxiop', edKodXirOper.Text, [loPartialKey,loCaseInsensitive])
и ничего не происходит. Если заменить на:
zqSprXirOper.Locate('naimxiop', edKodXirOper.Text, [loPartialKey,loCaseInsensitive])
то поиск осуществляется.
Подскажите, пожалуйста, почему в первом случае не осуществляется поиск.
Поиск Locate в БД
Модератор: Модераторы
AkANz писал(а):Подскажите, пожалуйста, почему в первом случае не осуществляется поиск.
Стопудово из-за того, что в edKodXirOper впереди пробел стоял, который Вы не заметили.
Либо в столбце с кодом впереди пробел присутствует.
Добавлено спустя 2 минуты 26 секунд:
Для проверки, попробуйте введите "15" и поиск у Вас переместится на Лапароскопию, если, конечно, поиск по части слова вообще работает (у меня Постгри нету, проверить не могу).
Vadim писал(а):Либо в столбце с кодом впереди пробел присутствует.
Так и есть. Недосмотрел. Базу конвертировал из dbf, конвертер и поставил ведущий пробел в этом поле.
Подскажите, пожалуйста, еще по поиску. У меня не работает регистро-независимый поиск (параметр loCaseInsensitive)
В базе присутствует Иванов, если набрать иванов поиск не осуществляется, а если Иванов, то переходит на запись.
Спасибо.
А Вы зря в качестве кодов оставили:
лучше бы этот столбец преобразовать в целочисленный. По целочисленному полю поиск осуществляется не в пример быстрее, чем по varchar.
У меня есть подозрение, что в этом виноват Postgre. Но не уверен, т.к. я с ним не работаю.
AkANz писал(а):kodxiop (varchar(6))
лучше бы этот столбец преобразовать в целочисленный. По целочисленному полю поиск осуществляется не в пример быстрее, чем по varchar.
AkANz писал(а):Подскажите, пожалуйста, еще по поиску. У меня не работает регистро-независимый поиск (параметр loCaseInsensitive)
У меня есть подозрение, что в этом виноват Postgre. Но не уверен, т.к. я с ним не работаю.
AkANz писал(а):Подскажите, пожалуйста, еще по поиску. У меня не работает регистро-независимый поиск (параметр loCaseInsensitive)
скорее недоработки Zeos, (а почему бы не возвращать выборку с фильтрацией на уровне самого языка SQL)
grigoreo писал(а):(а почему бы не возвращать выборку с фильтрацией на уровне самого языка SQL)
В данной задаче в этом нет необходимости.
Vadim писал(а):лучше бы этот столбец преобразовать в целочисленный.
Да. Я сейчас так и сделал.
Спасибо.
