Topic: Сквозной поиск
Добрый день, помогите реализовать сквозной поиск через TextBox на основной форме в проекте. Чтобы можно было осуществлять поиск по всем полям во всех таблицах. С SQL, к сожалению, не в ладах, поэтому и прошу помощи.
My Visual Database → Russian → Сквозной поиск
Добрый день, помогите реализовать сквозной поиск через TextBox на основной форме в проекте. Чтобы можно было осуществлять поиск по всем полям во всех таблицах. С SQL, к сожалению, не в ладах, поэтому и прошу помощи.
Помогите пожалуйста сделать поиск хотя бы по всем контактам, телефонам и e-mail
Если хотите иметь расширенный функционал, надо изучать SQL
Для решения вашей задачи вам понадобится вычисляемое поле, в котором будут присутствовать текстовые данные из всех полей, по которым вы хотите искать, например, такое:
( coalesce( name, '' ) || ' ' || coalesce( phone, '' ) || ' ' || coalesce( e_mail, '' ) )
функция coalesce() нужна для того, чтобы предотвратить превращение результата в null, если в записи отсутствует какое-то из значений в искомых полях. https://www.sqlite.org/lang_corefunc.html
Это поле вы можете использовать при настройке фильтра на форме, в свойстве Filter не забудьте прописать %s%, чтобы поиск был по вхождению.
Обожаю такие ответы, сразу чувствуется, что вы программист именно так на форумах по программированию и отвечают. Спасибо конечно, но я прошу помощи с данным проектом. Без танцев с бубном и изучения SQL. Тем более, что мне это нужно всего один раз. Я же не так много прошу.
Обожаю такие ответы, сразу чувствуется, что вы программист именно так на форумах по программированию и отвечают. Спасибо конечно, но я прошу помощи с данным проектом. Без танцев с бубном и изучения SQL. Тем более, что мне это нужно всего один раз. Я же не так много прошу.
Обожаю такие просьбы: сделайте за меня мою работу; я не хочу разбираться и вникать, а уж тем более чему-то учиться; просто дайте мне то, что мне сейчас нужно.
Объясняю же, что это разовый проект для себя и знания SQL в моей жизни больше не пригодятся.
Вот вы больше времени потратили на написание нравоучительного текста, а могли бы просто помочь.
здравствуйте! k245 в прицепе прав. Если все будут делать за Вас, то Вы ничему не научитесь.. Я сам через это прошел
На форуме бывает долго отвечают, все потому, что у нас тоже есть свои дела, и кто-то знает ответ а кто-то не очень..
Вот Вам готовый поиск, не ругайтесь больше!
Огромное Вам человеческое спасибо, только поясните пожалуйста как туда добавить поиск и по дополнительным контактам, которые находятся внутри формы. А насчет k245 я не ругался, все понимаю просто если людям обычно некогда они проходят мимо, а не нравоучают. Я подождал бы человека который как Вы смогли бы уделить мне немного внимания.
k245 - если чем обидел приношу свои извинения
Огромное Вам человеческое спасибо, только поясните пожалуйста как туда добавить поиск и по дополнительным контактам, которые находятся внутри формы.
какВы уже поняли в кнопке поиска создан 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}
Спасибо, за подробное разъяснение. C этой частью понятно более менее, а как добавить одновременно поиск и по другой таблице с дополнительными контактами, которые не отображаются на основной форме их видно только если выбрать редактирование. И можно ли добавить счетчик записей которые выводятся при поиске, не ID а именно счетчик.
я так понимаю нужно как-то связать ID второй таблицы с ID основной и потом добавить в поиск?
Спасибо, за подробное разъяснение. C этой частью понятно более менее, а как добавить одновременно поиск и по другой таблице с дополнительными контактами, которые не отображаются на основной форме их видно только если выбрать редактирование. И можно ли добавить счетчик записей которые выводятся при поиске, не ID а именно счетчик.
дополнительную таблицу вводим так (если не запамятовал)
SELECT
Контрагент,
Gorod.Город
FROM
PhoneBook
LEFT OUTER JOIN Gorod ON Gorod.id = PhoneBook.id_Gorod
WHERE
Ваши условия
а как добавить одновременно поиск и по другой таблице с дополнительными контактами, которые не отображаются на основной форме их видно только если выбрать редактирование..
можно добавить новаю таблицу на форму и скрыть ее .. условия поиска скапировать и добавить дополнительные поля.. В нужный момент просто делать ее (таблицу) видимой..
создать именно счетчик можно
http://myvisualdatabase.com/forum/viewtopic.php?id=1088
Спасибо, но не ищет почему-то во второй таблице. Попробовал добавить поиск по e-mail из второй таблице и фиг
Прошу прощения что отнял много времени, нужно закругляться и идти учить SQL похоже это безнадежно.
Всем спасибо!
У Вас поле PhoneBook.id_DopKontact не содержит номера ключа поэтому поиск по ней не осуществляется
У Вас поле PhoneBook.id_DopKontact не содержит номера ключа поэтому поиск по ней не осуществляется
Что нужно сделать напишите уже пожалуйста чтобы я от всех отстал. А лучше в файле сразу поправить.
все дело в том, что поле PhoneBook.id_DopKontact- это внешний ключ и в нем содержится номер id записи в самой таблице DopKontact, так создается связь..
без этого номера невозможно приезвести какие-то действия с двумя и более таблицами связанными с их объединением
для примера я записал в поле значения 1 и 2..
я не совсем понимаю зачем Вам это поле ..
Отлично!!!! Огромное спасибо, это то что надо!!! Буду разбираться
Попробуйте так:
Это для поиска по полям "Контакт", "email", "Городской", "Сотовый". Если нужно сюда же добавить поля из связанных таблиц, то придется учить SQL и добавить нужные поля через запрос SELECT
Я не собирался давать вам наставления или нравоучения, это привилегия для моих учеников. Вам - только советы:
1. Не используйте в названии полей кириллицу - это усложнит вам составление SQL-запросов.
2. Прочитайте книгу автора этой системы, там есть много из того, что вы ищите: http://myvisualdatabase.com/forum/viewtopic.php?id=2554
Предлагаемые изменения в вашем проекте:
Предлагаемые изменения в вашем проекте:
Благодарю за помощь
Предлагаемые изменения в вашем проекте:
Очень классный метод, а из другой таблицы DopKontact туда можно подцепить поля?
про SELECT прочитал позже чем написал ответ ))))
My Visual Database → Russian → Сквозной поиск
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi