Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Грамотный поиск записей 
V
    Опции темы
former
Дата 13.12.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Подскажите, пожалуйста, как организовать грамотный поиск при условии, что данные могут повторяться в разных записях. Необходимо получить список этих записей с указанием даннх из других полей этих записей (например, в ListView) и число найденных записей. smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Rodman
Дата 13.12.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


Почитай про LIKE
PM MAIL WWW Skype GTalk YIM MSN   Вверх
former
Дата 13.12.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Использую AbsoluteDB

Цитата

Rodman:  Почитай про LIKE


Не понял! smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Rodman
Дата 13.12.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Пишешь запрос
Код

SELECT * FROM Table where (Field like 'Вася');


И запускаешь его...

Все строки в которіх в поле Field  встречается Вася будут выведены....
PM MAIL WWW Skype GTalk YIM MSN   Вверх
former
Дата 13.12.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Это понятно. Вопрос в другом. Я имею виду следующее. После выполнения поиска записей будет повляться окно (результаты поиска) в котором присутствует список найденных записей следующего вида:

Допустим ищем текст 'абвгд' в поле 'поле 1'. Находим, допустим 5 записей. Теперь в появляется форма результатов поиска на которой находится Label с количеством найденных замисей и список типа ListView в котором заполнены колонки найденными записями. ListView имеет следующие колонки: 
  1) порядковый номер
  2) 'поле 1' найденной записи
  3) 'поле 2' тойже записи

и так для всех пяти.

Разжевал до безобразия. smile 


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Vas
Дата 13.12.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



former, а почему обязательно ListView, чем DBGrid не устраивает или AbsoluteDB не свяжешь с гридом?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
former
Дата 13.12.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Vas, DBGrid отображает все поля записи, а мне нужно всего два.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
ТоляМБА
Дата 14.12.2006, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(former @  13.12.2006,  21:22 Найти цитируемый пост)
Допустим ищем текст 'абвгд' в поле 'поле 1'.

Цитата(former @  13.12.2006,  21:22 Найти цитируемый пост)
  2) 'поле 1' найденной записи
  3) 'поле 2' тойже записи
 
Код

Select поле1, поле2 from table1 where поле1 Like '%абвгд%'
 
Цитата(former @  13.12.2006,  22:06 Найти цитируемый пост)
Vas, DBGrid отображает все поля записи, а мне нужно всего два. 
 В Table1 может быть хоть 100 полей, но в гриде только 2 из селекта отобразятся
PM   Вверх
SergeBS
Дата 14.12.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



former, 
Цитата
Vas, DBGrid отображает все поля записи, а мне нужно всего два. 

А если зайти в Columns Editor? Для каждой колонки есть свойства  visible, readonly и еще куча не менее полезных. Так что F1 и вперед smile (в дополнение к способу select что надо)
PM MAIL   Вверх
Akella
Дата 14.12.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



а ещё кроме SQL можно использовать Locate, Lookup, TTable.Filter, событие OnFilterRecord

короче возможностей для поиска, группировки и фильтрации масса... smile 
PM MAIL   Вверх
former
Дата 14.12.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Цитата

ТоляМБА:
Код

Select поле1, поле2 from table1 where поле1 Like '%абвгд%'



ТоляМБА, а как связать этот запрос с ListView? Я не то, что в SQL, я с БД только начинаю работать. Поэтому хотелоь бы увидеть код. smile 

Понятно, что использовать таблицу целесообразнее. Однако, я решил решил использовать ListView, т.к. хочу иметь пронумерованный список(1, 2, 3...n) найденных записей при щелчке по которым в главной форме появляется нужная запись. К тому же на против каждой записи будет стоять соответствующая иконка (в зависимости от типа найденной записи). Это упростит работу пользователя с результатами поиска. Поэтому, благодарю за советы Vas, ТоляМБА, SergeBS, Akella, но вариант с таблицей меня не устраивает.


И ещё. Остаётся непонятным как определить количество найденных записей. Если бал бы ListView было бы проще.






--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
skyboy
Дата 14.12.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



former, у компонента - наследника TQuery есть свойство RowCount или RecordCount(не помню, чесно говоря) - это и есть количество записей в результате запроса.
PM MAIL   Вверх
former
Дата 15.12.2006, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



skyboy, спасибо.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
SergeBS
Дата 18.12.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



former, 
ListView будешь связывать с результатами, как нетрудно догадаться, ручками. Т.е. своими строчками кода. Это не DB-aware компонент.
PM MAIL   Вверх
Akella
Дата 18.12.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



что-то вроде этого
Код

while not Query1.eof do begin
  ListView1.add(query1.FieldByName('Имя_Поля').asString);
  query1.next;
end;

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.