Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
1

Новичёк в delphi по создал БД через database desktop. Немогу понять как организовать поиск что бы при вводе искалось в DBgride.

21.01.2012, 21:25. Показов 2813. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Новичёк в delphi по заданию создал БД через database desktop. Немогу понять как организовать поиск что бы при вводе искалось в DBgride.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2012, 21:25
Ответы с готовыми решениями:

Delphi database desktop
как сделать что бы database desktop можно было печатать русском шрифтом

Delphi+Database Desktop(Paradox 7)
как можно добавлять значения в поля без элемента DBNavigator?(если я БД создал в парадоске через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
22.01.2012, 10:28 2
Цитата Сообщение от fristicol Посмотреть сообщение
Немогу понять как организовать поиск что бы при вводе искалось в DBgride
А отображать данные в DBGrid уже умеете? Если да, то решение зависит от того, как формируете набор. Если пользуете TQuery , то поиск можно организовать в тексте запроса, если TTable (что судя по вопросу наиболее вероятно), то вам надо научиться работать со свойством Filtered и событием OnFilterRecord. Можно еще пользовать свойство Filter, но я его не рекомендую.
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
22.01.2012, 14:16  [ТС] 3
Работаю с DBgridom и Table отобразил таблицу
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
22.01.2012, 18:12 4
Цитата Сообщение от fristicol Посмотреть сообщение
Работаю с DBgridom и Table отобразил таблицу
Ищи примеры фильтрации и осваивай! Гугл тебе в руки!
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
24.01.2012, 13:08 5
Delphi
1
Гугл тебе в руки!
Лучше лопату - вон сколько намело, снегу по колено, а убирать некому - все блин в программеры лезут
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
24.01.2012, 16:58  [ТС] 6
ну так вперёд и на лопату...и дофига герой сразу всё знал???

Добавлено через 28 секунд
Цитата Сообщение от MsGuns Посмотреть сообщение
Delphi
1
Гугл тебе в руки!
Лучше лопату - вон сколько намело, снегу по колено, а убирать некому - все блин в программеры лезут
а то ток трындеть можешь
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
24.01.2012, 17:13 7
Чукчам - не читателям (не умеют, не желают - нужное подчеркнуть) - лопаты !
Как "засовывать" в грид таблицу пишут наверное 90% книг по базам. И уж конечно на лекциях рассказывают. И есть в хелпе Делфи. Я уже молчу про инет

Добавлено через 7 минут
Delphi
1
дофига герой сразу всё знал???
Конечно, не до фига. Но...
1. Все же старался в меру сил читать подручный материал - тот же хелп делфишный (причем подробно, при этом ссылки на незнание аглицкого не катят - айтишникам, не понимающим и не желающим учить аглицкий технический, - лопаты !). И спрашивал когда было непонятно, но спрашивал КОНКРЕТНО.
2. Если обзывали ламером, чайником, пузырем и т.д., совали лопату, кувалду, напильник... (а этого было от пуза) - не обижался, ибо обижаются на учителей только дураки.
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
24.01.2012, 18:02  [ТС] 8
а тут и не звучал вопрос про как засунуть в грид таблицу а звучал вопрос как организовать поиск потому что везде пишется как его организовать через АДОконект а если используем компонент Тайбл не написано, если я не ошибаюсь то этот форум и был создан для помощи начинающим

Добавлено через 3 минуты
Ты сначала вопрос прочти а потом тут свои рассказы пиши
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
24.01.2012, 19:03 9
Delphi
1
Ты сначала вопрос прочти а потом тут свои рассказы пиши
Не в моих правилах дискутировать с хамлом, но раз уж начал
Фраза из топика :
Delphi
1
чтоб при вводе искалось в DBgride
Что искалось и где и что должно вводиться и куда ? Если данные отображаются в гриде, то при вводе в грид они будут соответственно изменяться. Это надо ? Или надо чтобы пользователь вводил символы например в эдит рядом с сеткой, а программа тут же искала по соответствию введенной маске в датасете и при обнаружении делала найденную запись текущей ? Или надо совместить первое и второе - т.е. чтобы эффект поиска был таким же, но вводить не в эдит, а в ячейку грида, но при этом сами данные в наборе, отображаемом в гриде, НЕ менялись ? Или еще что-то четвертое ? Вы не удосужились уточнить оставляя читателям право на домыслы. При этом у некотрых "читателей" возникла мысль о невежестве вопрошающего, который научился кидать компоненты на форму и кое-как связывать их.

Теперь о "поиске по ходу", на который, вероятно, тут намекалось. НЕТ И НЕ МОЖЕТ БЫТЬ единого способа как это сделать ВИЗУАЛЬНО.
Можно сделать как в гугле (офисе) - при вводе символа программа сама дописывает слово или даже предложение (чаще всего из локального кэша) и сразу ищет, иногда реально мешая (если мне надо набрать все по-новому начисто например). Но при этом надо помнить что в гугле мы имеем дело не с таблицей, где много колонок и строк, а с единственной строкой - маской.
Можно сделать как в 1С - при вводе символа в ячейку сраз у ищется запись, у которой значение поля по первым буквам совпадает с введенными подряд символами. При этом в самом НБ (наборе данных или таблице чтоб понятнее было) НИЧЕГО НЕ МЕНЯЕТСЯ. Просто грид (в данном случае именно грид) заставляют отображать не то, что ввели, а то, что нашли в НД, выделяя при этом цветом маску от прочего текста. Тоже не всегда удобно - нет режима редактирования в сетке и для его ключения надо спец. режим, в котором разумеется поиск работать не будет. Кроме того для каждой колонки надо держать свой кэш масок, иначе поиск каждый раз надо начинать но-новой, что не всегда удобно. А кэши - это целая кухня и надо сначала ее ПРОДУМАТЬ, а потом еще и написать немаленьким кодом. Это нужно ?
Есть и другие технологии поиска, например, сразу в список все похожие, при этом список отображается в отдельной сетке.

Короче, способов реализации ИНТЕРФЕЙСА поиска множество. Именно ИНТЕРФЕЙСА, а не собственно поиска данных в НД. Если бы Вы взяли себе труд просто посмотреть ЧТО ЕСТЬ У ВАС НА ПК (тот же офис, гугл, почтовый клиент и т.д.), то у Вас сложилось хотя бы представление о том, КАКОЙ поиск Вам надо бы реализовать. О чем можно было бы и спросить и Вам бы ответили ПО СУЩЕСТВУ.
Вместо этого вы бросили свой вопрос в форум типа "нате ! разберитесь и дайте мне готовое решение того, чего сам не знаю.
Вот поэтому возникла мысль о лопате. Просто потому, что есть мысль, что с лопатой Вы знали бы четко что надо делать
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
24.01.2012, 20:02  [ТС] 10
Тот кто мне 2 ответил почему то сразу понял... Возможно я не сильно коректно задал вопрос... я хотел организовать поиск что бы при вводе в edit введённое значение искало в DbGrid. Я просматривал литературу там везде описанно что при помощи sql запросов но т.к я базу подключал через Table этот метод никатит и метод фильтрации тоже не подходит т.к по заданию написано что именно поиск... Препод запорол мне метод фильтраци
0
8 / 8 / 0
Регистрация: 19.12.2011
Сообщений: 22
24.01.2012, 22:39 11
Цитата Сообщение от fristicol Посмотреть сообщение
я хотел организовать поиск что бы при вводе в edit введённое значение искало в DbGrid
если чуток додумать ты наверное имел ввиду вот ты вводишь в едит что нибудь. Далее происходит ранее описанное событие будь то нажатие кнопки будь то изменение можно даже извратится чуток но не в этом дело во первых тебе уже говорилось что ищет не в DbGrid*е а в Table. Дальше разовьем твою мысль если я буду не прав ты отпишись слушай! ты хочешь что бы найденное слово, цифра или что угодно введенное в едит сделала *текушей* то есть выделенной именно ту строку в которой и имеется то что было в эдите так или нет?
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
24.01.2012, 23:36  [ТС] 12
Да так
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
25.01.2012, 07:12 13
F1 + Locate, lookup. Читаем и размышляем. Вопрос ваш поставлен коряво. К 4 посту стало только ясно чего вам надо. А с тем что вы киваете на SAMZ'а, о том что он понял ваш вопрос. Я думаю он ткнул и попал. А мог и не попасть. У него более развитые телепатические способности.
После вашего вопроса можно к гадалке идти.
В правильно поставленном вопросе. Уже есть половина ответа.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
25.01.2012, 07:46 14
Цитата Сообщение от fristicol Посмотреть сообщение
везде описанно что при помощи sql запросов но т.к я базу подключал через Table этот метод никатит и метод фильтрации тоже не подходит
Был бы я депутатом госдумы, точно предложил бы закон о запрете пользования TTabel с наказанием в виде сжигания на костре тех, кто его нарушает.
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
25.01.2012, 11:45 15
SAMZ в [2] посоветовал Вам использовать вместо поиска отбор нужных записей еще на сервере (фактически то же самое, что и фильтрация, но без пересылки клиенту "лишних" данных), Вам же нужен именно ПОИСК. Так что же он "сразу понял" ?
Препод Вам соверешенно правильно дал отлуп поскольку понял, что для Вас поиск и выборка (фильтрация) - одно и то же
По сути же поиск как одно из основных "фичей" любого нормального интерфейса, никак не заменяется отбором (фильтрацией) ибо он (поиск) работает уже на отобранных (отфильтрованных) наборах данных.

Delphi
1
я хотел организовать поиск что бы при вводе в edit введённое значение искало в DbGrid.
Вот это уже более-менее. Если Вы хотите после изменения текста в эдите сразу искать в НД ПЕРВУЮ запись, у которой содержимое поля, отображаемое в ТЕКУЩЕЙ колонке грида, совпадает (частично совпадает) с образцом в эдите, то Вам нужно что-то вроде:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Edit1Change(Sender: TObject);
var
   DS: TDataSet;
   Fld: TField;
begin
  with TEdit(Sender)  do
    if focused then // Если не проверять, то будет срабатывать при любых изменениях, в т.ч. программных
       if Text>'' then  // Для пустого не искать
         begin
          DS := DBGrid1.DataSource.DataSet;
          Fld := DBGrid1.SelectedField;
          DS.Locate(Fld.FieldName,Fld.AsString,[loCaseInsensitive,loPartialKey]);
         end;
end;
Добавлено через 12 минут
Delphi
1
Был бы я депутатом госдумы, точно предложил бы закон о запрете пользования TTabel с наказанием в виде сжигания на костре тех, кто его нарушает.
Топик никак не связан с компонентной TTable ибо касается методов проектирования поиска в НД и визуализации результатов НА КЛИЕНТЕ.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
25.01.2012, 11:59 16
MsGuns, Вот цитата из поста автора топика
Я просматривал литературу там везде описанно что при помощи sql запросов но т.к я базу подключал через Table этот метод никатит и метод фильтрации тоже не подходит т.к по заданию написано что именно поиск...
поэтому и говорю о TTable
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
25.01.2012, 12:34 17
Автор дабы произвести впечатление, что он "перерыл весь инет" привел первое, что ему выдал поисковик (или книжки) в ответ на его невразумительный запрос (в том, что запрос был невразумительный, сомнений после всех его постов не возникает потому что ТС не ВИДИТ РАЗНИЦЫ между фльтрацией (выборкой) и поиском.

Высказанный в топике конференции тезис про лопату остается в силе


Добавлено через 8 минут
Еще вдогону и в качестве аргумента в пользу лопаты.
"Новичковость", неопытность, даже неграмотность автора сами по себе не есть повод для "лопаты". Возмущает другое. Стиль, язык, которым был написан топик. Сразу видно не только, что чел учится явно не в ВУЗе (ПТУ скорее всего, а если ВУЗ, то явно "за сало" принят), но и общий уровень культуры ("искается обычно подмышкой или в паху"), и степень "уважения" к форумчанам.
А вот это уже клиника однозначно.
И лечится лопатой. Летом-метлой.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
25.01.2012, 12:45 18
Цитата Сообщение от MsGuns Посмотреть сообщение
Возмущает другое. Стиль, язык, которым был написан топик. Сразу видно...
Это, к глубокому сожалению, общая тенденция "инетовской" тусовки. От русского языка остаются ошметки!
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
25.01.2012, 13:30  [ТС] 19
Цитата Сообщение от MsGuns Посмотреть сообщение
Еще вдогону и в качестве аргумента в пользу лопаты.
"Новичковость", неопытность, даже неграмотность автора сами по себе не есть повод для "лопаты". Возмущает другое. Стиль, язык, которым был написан топик. Сразу видно не только, что чел учится явно не в ВУЗе (ПТУ скорее всего, а если ВУЗ, то явно "за сало" принят), но и общий уровень культуры ("искается обычно подмышкой или в паху"), и степень "уважения" к форумчанам.
А вот это уже клиника однозначно.
И лечится лопатой. Летом-метлой.
.кк кеп я тебя так и послушаю. я бы конечно мог ответить тебе грубо, но опустим эти моменты. Зачем ты вообще в теме отписываешь, что бы показать какой ты там супер вундеркинд? Не нравится тебе топик темы возможно я не корректно задал вопрос... Но я написал что я в этом новичок. Меня самое большее убивает когда вы строите из себя там чуть ли не супер мэнов, а остальные типо гавно. Все с чего то начинали и с чего то учились. Но ты же выёживаешься будто ты ток родился и всё ты всё знал.
 Комментарий модератора 
А этот ответ с ссылкой на экскрименты Вы грубым не считаете! Вам замечание!

Добавлено через 13 минут
Цитата Сообщение от MsGuns Посмотреть сообщение
степень "уважения" к форумчанам
Извини конечно но кажется это ты первый влез с без полезным ответом про лопату. И никого из форумчанинов я не оскорблял, так что не надо тут приписывать.

Добавлено через 27 минут
Цитата Сообщение от fristicol Посмотреть сообщение
А этот ответ с ссылкой на экскрименты Вы грубым не считаете! Вам замечание!
Да тут я погорячился за это извиняюсь.
0
6 / 6 / 0
Регистрация: 23.03.2010
Сообщений: 122
27.01.2012, 18:21  [ТС] 20
Как оказалось решение было очень простым этой задачки.
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if not Table1.Locate('Data', Edit1.Text, [loCaseInsensitive,
    loPartialKey]) then
    ShowMessage('Запись не найдена')
end;
 
end.
0
27.01.2012, 18:21
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru