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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 14:12   #1
simka16
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
По умолчанию Поиск как в 1С

Здравствуйте! появилась такая идея, сделать как в 1 С следующее:
например я создам справочник с должностями предприятия по нажатию на кнопку "..." открываеца полный список всех должностей преприятия, так вот, какой компонент лучше использовать для просмотра всего списка? чтобы потом по этому компоненту можно было сделать поиск как в 1С буквально по первым буквам.
заранее благодарна!
simka16 вне форума Ответить с цитированием
Старый 09.03.2011, 14:30   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Боюсь, что мой ответ не очень в тему, но попробую ответить,
если кто-то знает вариант лучше - то обязательно расскажет о нём.

А я думаю, что Вам подойдёт любой продвинутый грид.

у нас в рабочем проекте, например, используется старенький EhLib (с небольшими ручными доработками). Единственное, что для каждого справочника "нарисована" своя форма, на которой лежит Ehlib (и эта же форма служит для добавления/удаления/редактирования элементов справочника, что достаточно удобно для пользователя).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.03.2011, 15:25   #3
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

А мы издревле пользовались только штатными компонентами...
И поиск - это очень просто:
Код:
Table1.Locate('Field_dolznost',Edit1.Text,[loCaseInsensitive, loPartialKey]);
asmodey1 вне форума Ответить с цитированием
Старый 09.03.2011, 15:27   #4
simka16
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
По умолчанию

спасибо! с поиском разобралась!

тогда я уточняю что вы имете ввиду:
для каждого справочника, например у меня их 10 шт создавать отдельную форму на которой будет по одному dbgridу? как то не рационально...как быть то?
simka16 вне форума Ответить с цитированием
Старый 09.03.2011, 15:57   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
для каждого справочника создавать отдельную форму
Неа, не так... Форма одна.
Код:
var Spravochnik: string;

Select * from '+Spravochnik+' where Upper(Field_Name) LIKE Upper("%' + Edit1.Text +'%");');
P.S. В ADO оператор Upper не работает, но поиск все равно будет производиться без учета регистра.
_SERGEYX_ вне форума Ответить с цитированием
Старый 09.03.2011, 15:59   #6
simka16
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
По умолчанию

Код:
var Spravochnik: string;

Select * from '+Spravochnik+' where Upper(Field_Name) LIKE Upper("%' + Edit1.Text +'%");');
нее..не поняла....можно по другому объяснить как нибудь?
simka16 вне форума Ответить с цитированием
Старый 09.03.2011, 16:46   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, как я понимаю, каждый Справочник - это отдельная таблица. И мы знаем из какой таблицы будем делать выборку. Для этого берем чистый Query. И связываем DBGrid -> DataSource -> Query. И выбираем из нужного Справочника
Код:
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('Select * from '+Spravochnik+' where Upper(Field_Name) LIKE Upper("%' + Edit1.Text +'%");');
Query.Open
Впрочем, если нет знаний по sql-запросам, то я напрасно объясняю...
_SERGEYX_ вне форума Ответить с цитированием
Старый 09.03.2011, 16:51   #8
simka16
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 28
По умолчанию

я спрашиваю одно изначально, а мне совсем другое!

вот люди на этих форумах сидят, лишь бы блин где нибудь подковырнуть задаваемого вопрос, а конкретно ответить на поставленный вопрос не могут!
если не знаете, лучше вообще не отвечайте!
simka16 вне форума Ответить с цитированием
Старый 09.03.2011, 17:02   #9
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от simka16 Посмотреть сообщение
для каждого справочника, например у меня их 10 шт создавать отдельную форму на которой будет по одному dbgridу? как то не рационально...как быть то?
Если вас устраивает одна форма - делайте в одной.
Вы ведь справочники как-то переключать будете ?
Допустим, при помощи меню. Тогда в обработчике каждого пункта меню вы будете :
- выбирать таблицу справочника
- переключать DataSource на эту таблицу
- устанавливать список полей, отображаемых в DBGrid
и т.д.
К этому добавляем назначение имени поля, по которому будем производить поиск, для чего осталось только чуть-чуть временно переделать наш поисковый обработчик:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var fld: string;
begin
fld:='Name';
Query1.Locate(fld,Edit3.Text,[loCaseInsensitive, loPartialKey]);
end;
Это я вам дал простой временный вариант, чтоб было понятно.
На самом деле присвоение fld конкретного имени поля должно происходить в обработчике пункта меню, а fld должна быть объявлена глобально...
Вот и все.

З.Ы. А если у вас во всех таблицах поле поиска названо одинаково, то этого не понадобится.

Последний раз редактировалось asmodey1; 09.03.2011 в 17:06.
asmodey1 вне форума Ответить с цитированием
Старый 14.03.2011, 11:28   #10
19vitek
Пользователь
 
Регистрация: 13.03.2011
Сообщений: 21
По умолчанию

Я бы воспользовался компонентом DBLokubComboBox. Специально разработан для работы со справочниками. Удобно подключается к любой таблице справочника.
19vitek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать поиск по строкам. shinta111 БД в Delphi 1 20.02.2011 22:34
Как организовать поиск по DBGrid ? Fastex C/C++ Базы данных 4 24.01.2011 20:53
Как осуществить поиск в диапазон? Simbad Microsoft Office Word 4 25.03.2010 12:09
Как убыстрить поиск? Dennikid Общие вопросы Delphi 8 31.10.2008 16:17
как реализовать поиск синонимов? borsh Помощь студентам 24 16.12.2006 10:48