Topic: Сквозной поиск

Добрый день, помогите реализовать сквозной поиск через TextBox на основной форме в проекте. Чтобы можно было осуществлять поиск по всем полям во всех таблицах. С SQL, к сожалению, не в ладах, поэтому и прошу помощи.

Post's attachments

Attachment icon тест.zip 342.41 kb, 280 downloads since 2019-10-29 

Re: Сквозной поиск

Помогите пожалуйста сделать поиск хотя бы по всем контактам, телефонам и e-mail

Re: Сквозной поиск

Если хотите иметь расширенный функционал, надо изучать SQL smile
Для решения вашей задачи вам понадобится вычисляемое поле, в котором будут присутствовать текстовые данные из всех полей, по которым вы хотите искать, например, такое:


( coalesce( name, '' ) || ' ' || coalesce( phone, '' ) || ' ' || coalesce( e_mail, '' ) )

функция coalesce() нужна для того, чтобы предотвратить превращение результата в null, если в записи отсутствует какое-то из значений в искомых полях.  https://www.sqlite.org/lang_corefunc.html


Это поле вы можете использовать при настройке фильтра на форме, в свойстве Filter не забудьте прописать %s%, чтобы поиск был по вхождению.

Визуальное программирование: блог и телеграм-канал.

Re: Сквозной поиск

Обожаю такие ответы, сразу чувствуется, что вы программист именно так на форумах по программированию и отвечают. Спасибо конечно, но я прошу помощи с данным проектом. Без танцев с бубном и изучения SQL. Тем более, что мне это нужно всего один раз. Я же не так много прошу.

Re: Сквозной поиск

Artison wrote:

Обожаю такие ответы, сразу чувствуется, что вы программист именно так на форумах по программированию и отвечают. Спасибо конечно, но я прошу помощи с данным проектом. Без танцев с бубном и изучения SQL. Тем более, что мне это нужно всего один раз. Я же не так много прошу.

Обожаю такие просьбы: сделайте за меня мою работу; я не хочу разбираться и вникать, а уж тем более чему-то учиться; просто дайте мне то, что мне сейчас нужно.

Визуальное программирование: блог и телеграм-канал.

Re: Сквозной поиск

Объясняю же, что это разовый проект для себя и знания SQL в моей жизни больше не пригодятся.

Re: Сквозной поиск

Вот вы больше времени потратили на написание нравоучительного текста, а могли бы просто помочь.

8 (edited by sibprogsistem 2019-10-30 09:55:28)

Re: Сквозной поиск

здравствуйте! k245 в прицепе прав. Если все будут делать за Вас, то Вы ничему не научитесь.. Я сам через это прошел

На форуме бывает долго отвечают,  все потому, что у нас тоже есть свои дела, и кто-то знает ответ а кто-то не очень.. 
Вот Вам готовый поиск, не ругайтесь больше!

Post's attachments

Attachment icon тест.7z 9 kb, 283 downloads since 2019-10-30 

Re: Сквозной поиск

Огромное Вам человеческое спасибо, только поясните пожалуйста как туда добавить поиск и по дополнительным контактам, которые находятся внутри формы. А насчет k245 я не ругался, все понимаю просто если людям обычно некогда они проходят мимо, а не нравоучают. Я подождал бы человека который как Вы смогли бы уделить мне немного внимания.

Re: Сквозной поиск

k245 - если чем обидел приношу свои извинения

11 (edited by sibprogsistem 2019-10-30 10:36:48)

Re: Сквозной поиск

Artison wrote:

Огромное Вам человеческое спасибо, только поясните пожалуйста как туда добавить поиск и по дополнительным контактам, которые находятся внутри формы.

какВы уже поняли в кнопке поиска создан SQLзапрос
 
в этой части указываем поле которые будут выводится в таблице

SELECT     
Контрагент,
Контакт,
Городской,
Сотовый,
email,
id   

   
здесь указываем из какой таблицы       

FROM
PhoneBook  

   
а вот это уже условия поиска         

WHERE           
(CASE WHEN '{Find}' <> '' THEN                                       
Контрагент LIKE '%{Find}%' or 
Контакт LIKE '%{Find}%' or
Городской LIKE '%{Find}%' or 
Сотовый LIKE '%{Find}%' or                                                                                                                                                                             
email LIKE '%{Find}%' or
id LIKE '%{Find}%'  
ELSE 1=1 END)      
AND
(CASE WHEN {ComboGorod} <> -1 THEN PhoneBook.id_Gorod = {ComboGorod} ELSE 1=1 END) AND 
(CASE WHEN {ComboOtdel} <> -1 THEN PhoneBook.id_Dubly = {ComboOtdel} ELSE 1=1 END)     

     

где '{Find}' и   {ComboGorod}  - это имена компонентов на форме с помощью которых осуществляется поиск
в данном случае

 Контрагент LIKE '%{Find}%' or 

означает, что будет произведен поиск по полю контрагент в котором есть запись как LIKE в поле поиска %{Find}%,
где %  значит искать (примерные совпадения)..

or или - то есть программа ищет совпадения или в поле  Контрагент или Городской
AND - и при условии

(CASE WHEN {ComboGorod} <> -1 THEN PhoneBook.id_Gorod = {ComboGorod} ELSE 1=1 END) 

если {ComboGorod} <> -1 значение в комбобокс не равняется -1 (был сделан выбор)
то THEN  искать в поле PhoneBook.id_Gorod значение равное  = значению выбранному в комбобоксе {ComboGorod}

Re: Сквозной поиск

Спасибо, за подробное разъяснение. C этой частью понятно более менее, а как добавить одновременно поиск и по другой таблице с дополнительными контактами, которые не отображаются на основной форме их видно только если выбрать редактирование. И можно ли добавить счетчик записей которые выводятся при поиске, не ID а именно счетчик.

Re: Сквозной поиск

я так понимаю нужно как-то связать ID второй таблицы с ID основной и потом добавить в поиск?

Re: Сквозной поиск

Artison wrote:

Спасибо, за подробное разъяснение. C этой частью понятно более менее, а как добавить одновременно поиск и по другой таблице с дополнительными контактами, которые не отображаются на основной форме их видно только если выбрать редактирование. И можно ли добавить счетчик записей которые выводятся при поиске, не ID а именно счетчик.

дополнительную таблицу вводим так (если не запамятовал)

SELECT     
Контрагент,
Gorod.Город
FROM
PhoneBook
LEFT OUTER JOIN Gorod ON Gorod.id = PhoneBook.id_Gorod
WHERE
Ваши условия
Artison wrote:

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

можно добавить новаю таблицу на форму и скрыть ее .. условия поиска скапировать и добавить дополнительные поля.. В нужный момент просто делать ее (таблицу) видимой..
   
создать именно счетчик можно
http://myvisualdatabase.com/forum/viewtopic.php?id=1088

Re: Сквозной поиск

Спасибо, но не ищет почему-то во второй таблице. Попробовал добавить поиск по e-mail из второй таблице и фиг

Post's attachments

Attachment icon test1.zip 342.48 kb, 272 downloads since 2019-10-30 

Re: Сквозной поиск

Прошу прощения что отнял много времени, нужно закругляться и идти учить SQL похоже это безнадежно.
Всем спасибо!

Re: Сквозной поиск

У Вас поле PhoneBook.id_DopKontact не содержит номера ключа поэтому поиск по ней не осуществляется

Re: Сквозной поиск

sibprogsistem wrote:

У Вас поле PhoneBook.id_DopKontact не содержит номера ключа поэтому поиск по ней не осуществляется

Что нужно сделать напишите уже пожалуйста чтобы я от всех отстал. А лучше в файле сразу поправить.

19 (edited by sibprogsistem 2019-10-30 12:37:51)

Re: Сквозной поиск

все дело в том, что  поле PhoneBook.id_DopKontact- это внешний ключ и в нем содержится номер id  записи в самой таблице DopKontact, так создается связь..
без этого номера невозможно приезвести какие-то действия с двумя и более таблицами связанными с их объединением
 

для примера я записал в поле значения 1 и 2..
 
я не совсем понимаю зачем Вам это поле ..

Post's attachments

Attachment icon test1.7z 9.2 kb, 265 downloads since 2019-10-30 

Re: Сквозной поиск

Отлично!!!! Огромное спасибо, это то что надо!!! Буду разбираться

21 (edited by k245 2019-10-30 15:53:33)

Re: Сквозной поиск

Попробуйте так:

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=5931&amp;download=0

Это для поиска по полям "Контакт", "email", "Городской", "Сотовый".  Если нужно сюда же добавить поля из связанных таблиц, то придется учить SQL и добавить нужные поля через запрос SELECT  smile


Я не собирался давать вам наставления или нравоучения, это привилегия для моих учеников. Вам - только советы:


1. Не используйте в названии полей кириллицу - это усложнит вам составление SQL-запросов.
2. Прочитайте книгу автора этой системы, там есть много из того, что вы ищите: http://myvisualdatabase.com/forum/viewtopic.php?id=2554

Post's attachments

Attachment icon Изменения.png 160.9 kb, 118 downloads since 2019-10-30 

Визуальное программирование: блог и телеграм-канал.

Re: Сквозной поиск

Предлагаемые изменения в вашем проекте:

Post's attachments

Attachment icon 1.rar 300.26 kb, 303 downloads since 2019-10-30 

Визуальное программирование: блог и телеграм-канал.

Re: Сквозной поиск

k245 wrote:

Предлагаемые изменения в вашем проекте:

Благодарю за помощь

Re: Сквозной поиск

k245 wrote:

Предлагаемые изменения в вашем проекте:

Очень классный метод, а из другой таблицы DopKontact туда можно подцепить поля?

Re: Сквозной поиск

про SELECT прочитал позже чем написал ответ ))))