Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 21:29   #1
FarSeer
 
Регистрация: 07.12.2010
Сообщений: 7
По умолчанию Поиск и фильтрация

На форме имеется DBGrid и Edit'ы, заполняя туда данные,по Button'у должно отфильтровать и выдать нужные данные.
Делаю так:
if not form1.gr.Locate('fio',(edit1.Text),[])then
showmessage('Нет записи'); то получается что ставиться курсор на точно набранную запись.
Возникла проблема-как сделать чтобы к примеру выдавалось значение "Петров Пётр Петрович", в то время как мы введём "Петров". Возможны однофамильцы, и это тоже надо учитывать, если такие имеются, выдавать эти записи. Также возникла проблема с вводом начала фамилии с маленькой, или большой буквы. Слышал что можно установить так чтоб было без разницы. Прошу объяснить, если это возможно. Заранее спасибо.
FarSeer вне форума Ответить с цитированием
Старый 14.12.2010, 17:18   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Почитай про фильтрацию.
И хотелось бы знать, что за компонент gr который на form1, и что за СУБД используете?

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

Последний раз редактировалось vovk; 14.12.2010 в 17:25.
vovk вне форума Ответить с цитированием
Старый 14.12.2010, 18:47   #3
FarSeer
 
Регистрация: 07.12.2010
Сообщений: 7
По умолчанию

В Delphi создано 3 формы, на 1 форме размещены все таблицы. По кнопке "поиск" вызываем 3 форму, где производим поиск по разным полям "fio" "inn" "tel" и т.д.

Вот возникла такая проблема-как сделать чтобы к примеру выдавалось значение "Петров Пётр Петрович", в то время как мы введём "Петров". Возможны однофамильцы, и это тоже надо учитывать, если такие имеются, выдавать эти записи. Также возникла проблема с вводом начала фамилии с маленькой, или большой буквы.

Литературу читал, но мало что понял, понял как делать поиск, что в итоге курсор ставиться на правильно набранную запись. Но мне вот нужно другое
FarSeer вне форума Ответить с цитированием
Старый 14.12.2010, 19:05   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

почитайте эту тему http://www.programmersforum.ru/showthread.php?t=93228&highlight=%F 4%E8%EB%FC%F2%F0%E0%F6%E8%FF
там вроде как раз об этом же.
потом опции поиска и фильтрации не игнорируем
Цитата:
FilterOptions
loCaseInsensitive - нечувствительность поиска к регистру, в котором введены символы
loPartialKey - допустимость частичного совпадения.
и поиском по ветке бд в делфи, ищем 'фильтрация'. Ну и в хелпе почитать.
Цитата:
Фильтрация задается свойствами Filter, Filtered и FilterOptions.
При наличии фильтра доступными становятся только те записи, поля которых удовлетворяют условиям фильтрации. Свойство Filtered включает или выключает использование фильтра. Свойство FilterOptions задает опции фильтрации. А сам фильтр записывается в свойство Filter в виде строки, содержащей определенные ограничения на значения полей. Например, значение Filter

Dep='Цех 1'

при Filtered = true, обеспечивает отображение только тех записей, в которых поле Dep имеет значение "Цех 1". В условиях сравнения строк можно использовать символ звездочки "*", который как в обычных шаблонах означает: "любое количество любых символов". Например, фильтр

Dep='Цех*'

приведет к отображению всех записей, в которых значение поля Dep начинается с "Цех". Но для того, чтобы это сработало, надо, чтобы в опциях, содержащихся в свойстве FilterOptions, была выключена опция foNoPartialCompare, запрещающая частичное совпадение при сравнении.

При записи условий можно использовать операции отношения =, >, >=, <, <=, <>, а также логические операции and, or и not. Например, вы можете написать фильтр

(Dep='Цех 1')and(Year_b<=1970)and(Year_b>=194 0)

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

При фильтрации пустые записи пропускаются, если только их появление не указано в фильтре явным образом, как в следующем примере:

Dep='Цех*' or Dep = NULL

Фильтрация на удаленных таблицах SQL и в клиентских наборах данных поддерживает сравнение полей. Например:

Field1 > Field2

Эта операция не поддерживается в локальных таблицах (Paradox, dBASE, Access, FoxPro).

Последний раз редактировалось vovk; 14.12.2010 в 19:08.
vovk вне форума Ответить с цитированием
Старый 15.12.2010, 08:01   #5
FarSeer
 
Регистрация: 07.12.2010
Сообщений: 7
По умолчанию

Спасибо огромное. Учту
FarSeer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск или фильтрация подставных полей killas966 БД в Delphi 2 06.12.2010 13:32
Фильтрация auffasst Общие вопросы Delphi 3 21.06.2010 18:10
Фильтрация Arinka БД в Delphi 0 13.05.2010 13:44
Фильтрация Screame Microsoft Office Excel 7 30.07.2009 13:49
Фильтрация Screame Microsoft Office Excel 7 01.07.2009 22:37