|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.06.2009, 18:47 | #1 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
FindNearest
Всем добрый вечер! . Возникла небольшая проблемка у меня, нужна ваша помощь. Я написал программу с БД. БД состоит, например, из двух полей: ID (+), LAST_NAME (A). Мне нужно по мере ввода букв фамилии в Edit, чтобы курсор перемещался на позицию, которая удовлетворяет поиску. Взял пример из справки по Delphi.
Код:
Код:
1. Что мне написать в моем случае в строке, рядом с которой стоят вопросительные знаки? 2. Почему, когда я начинаю набирать фамилию искомую, то у меня вылазить ошибка: " 'Г' is not valid integer value for field 'ID' "? Вообщем-то смысл ошибки понятен, а когда я набираю какой-нибудь номер порядковый, то все ништяк переходит. Как сделать, чтобы я мог фамилию вводить а не номер?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
01.06.2009, 19:30 | #2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
замени это
Код:
Код:
|
01.06.2009, 19:45 | #3 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
Выдается такая ошибка:
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
02.06.2009, 18:07 | #4 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Если мне не изменяет память, ...Nearest не работает с числовыми полями.
И вообще, если это не учебное задание, для поиска удобнее использовать sql-запрос Код:
|
03.06.2009, 09:42 | #5 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
if not (Table1.Locate('last_name',Edit1.Te xt,[loCaseInsensitive, loPartialKey])) and (Edit1.Text<>'') then
Label1.Caption:='Данное наименование отсутствует' else Label1.Caption:=''; Принцип работы, если при изменении значения в edit выполняется locate то курсор переходит на ту запись, иначе записывает ошибку.
Единственное, что ограничивает полет мысли программиста-компилятор
|
03.06.2009, 10:31 | #6 |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
А поле LAST_NAME у вас предварительно проиндексировано? Если нет - то проиндексируйте и подключайте этот индекс перед вызовом FindNearest.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
03.06.2009, 10:36 | #7 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
Зачем его индексировать?????
Единственное, что ограничивает полет мысли программиста-компилятор
|
03.06.2009, 10:55 | #8 |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
А как FindNearest будет искать ближайшее значение по вашему?
Сначала он выстроит таблицу по-порядку, в соответствии с индексом, а потом в таблице найдет ближайшее значение, соответствующее ключу. Только так.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
03.06.2009, 10:59 | #9 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
я сама неоднократно использовала данный код, без индексов, работает без проблем!!!
Единственное, что ограничивает полет мысли программиста-компилятор
|
03.06.2009, 11:03 | #10 |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
А я всегда предварительно индексировал. Наверное, я перестраховщик.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |