|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск по одному и нескольким значениям в БД MSSQL 2005
Добрый день , Господа.
Помогите Ламмеру в написании процедуры поиска значений в БД MSSQL по одному и нескольким значениям. В двух словах . Есть БД ,в одной таблице по разным колонкам надо искать значения В некоторых колонках есть значения NULL или вообще пусто (их надо игнорировать). Приводу процедуру взятую вот тут http://delphiworld.narod.ru/base/search_and_filter.html Тут значения находяться только по одной колонке, а мне надо по одной и по нескольким. Буду рад за любую помощь. Заранее благодарен!!! Последний раз редактировалось yuoras, 11.03.2014 в 23:22. |
#2
|
|||
|
|||
А что находится в Merkury.SQL ?
|
#3
|
||||
|
||||
Цитата:
ТС, так в WHERE нужен на AND, а OR Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
yuoras (11.03.2014)
|
#4
|
|||
|
|||
Огромное спасибо or взамен помогло.
Но есть в разных колонках и пустые и NULL значения. При переходе на одну из EDIToв в той колонке откуда действует этот EDIT уже по умолчанию выбираются пустые или NULL значения. Как можно исключить эти пустые и NULL значения из отображения. P.S. В каждой из 6-ти колонок присутствуют пустые или NULL значения. Заранее благодарен |
#5
|
||||
|
||||
ты бы, для начала, запрос показал то
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#6
|
|||
|
|||
Цитата:
Код:
select distinct 'Ip'=sety, 'Л'=licn, 'Н.'=name, 'Т'=tipesch, 'Улица'=street, 'Ном.Дома'=NBILD, 'Квартира'=kvart FROM TB_Obj Country where (sety Like :sety_param) or (licn Like :licn_param) or (name Like :name_param) or (street Like :street_param) or (NBILD Like :NBILD_param) or (kvart Like :kvart_param) order by licn, nbild ,kvart Вот что выпадает при клапании мышки в любой из EDITов для написания значения для поиска. Последний раз редактировалось yuoras, 14.03.2014 в 13:20. |
#7
|
|||
|
|||
Опишите пожалуйста , как дать возможность пользователю с клиенским приложением самому выбирать сервер и базу данных.
Есть три сервера с разными IP но одинаковыми базами (одинаковой структурой). Тупо было бы использовать три программы для работы всего лишь с разницей подключения баз. Заранее спасибо!!! |
#8
|
||||
|
||||
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var ServerName, DatabaseName: String; begin if InputQuery('', 'Введите имя сервера или его IP-адрес', ServerName) and InputQuery('', 'Введите имя базы данных', DatabaseName) then begin ADOConnection1.Close; ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;'+ 'Persist Security Info=False;Initial Catalog='+DatabaseName+';Data Source='+ServerName; ADOConnection1.Open; end; end; // Или так: procedure TForm1.Button2Click(Sender: TObject); var ServerName, DatabaseName, User, Password: String; begin if InputQuery('', 'Введите имя сервера или его IP-адрес', ServerName) and InputQuery('', 'Введите имя базы данных', DatabaseName) and InputQuery('', 'Введите имя пользователя', User) and InputQuery('', 'Введите пароль пользователя', Password) then begin ADOConnection1.Close; ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password='+Password+ ';Persist Security Info=True;User ID='+User+';Initial Catalog='+DatabaseName+ ';Data Source='+ServerName; ADOConnection1.Open; end; end; |
#9
|
||||
|
||||
как-то так
Код:
SELECT DISTINCT 'ip'=sety, 'л'=licn, 'н.'=name, 'т'=tipesch, 'улица'=street, 'ном.дома'=nbild, 'квартира'=kvart FROM tb_obj country WHERE ( sety LIKE :sety_param OR licn LIKE :licn_param OR name LIKE :name_param) OR street LIKE :street_param OR nbild LIKE :nbild_param OR kvart LIKE :kvart_param ) AND ( sety IS NOT NULL AND licn IS NOT NULL AND name IS NOT NULL AND street IS NOT NULL AND nbild IS NOT NULL AND kvart IS NOT NULL AND sety <> '' AND licn <> '' AND name <> '' AND street <> '' AND nbild <> '' AND kvart <> '' ) ORDER BY licn, nbild, kvart Цитата:
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 12.03.2014 в 15:41. |
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
yuoras (12.03.2014)
|
#10
|
|||
|
|||
Yurk@
Спасибо ,работает. Но есть одна проблема В столбце kvart есть не только цифры но и названия Например "Подсобка" Ввожу любое точное название(кроме циферного) не ищет |
#11
|
||||
|
||||
Цитата:
варианты: 1. хранить в поле все в только большом\маленьком регистре, ну и в программе тоже, соответственно, вводить значения в таком же регистре 2. в запросе принудительно поднимать\опускать регистр, например Код:
OR UPPER(kvart) LIKE UPPER(:kvart_param) ps. вместо UPPER может быть немного другая команда под определенный сервер Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
yuoras (12.03.2014)
|
#12
|
|||
|
|||
Спасибо , попробую.
Регистр ввожу так как в Базе |
#13
|
|||
|
|||
К сожалению не помогло.
Даже когда ищу точное значение в любой из editов, где в колонке kvart содержится не цифра , а название. Всё равно не отображается строчка Например ввожу в edit "licn" или любой другой , точное значение , но в его строчке есть в kvart словесное значение типа "Помещение". Просто вообще ничего не отображает и всё, такое чувство , что его просто нет в таблице |
#14
|
||||
|
||||
Цитата:
Код:
SELECT * FROM TB_Obj WHERE kvart LIKE 'Помещение' |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
yuoras (12.03.2014)
|
#15
|
|||
|
|||
Да, так работает.
Работает даже если сделать вот так Код:
SELECT DISTINCT 'ip'=sety, 'л'=licn, 'н.'=name, 'т'=tipesch, 'улица'=street, 'ном.дома'=nbild, 'квартира'=kvart FROM tb_obj country WHERE ( kvart LIKE :kvart_param ) AND ( AND kvart IS NOT NULL AND kvart <> '' ) ORDER BY licn, nbild, kvart Но мне надо задействовать все колонки , а не только одну Последний раз редактировалось yuoras, 12.03.2014 в 20:43. |