Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / генерирование selectа для фильтрации грида / 14 сообщений из 14, страница 1 из 1
15.05.2006, 06:58
    #33725884
генерирование selectа для фильтрации грида
Есть форма. На ней грид и комбобоксы. Выбрав в комбобоксе (-ах) значения, грид должен отобразить отфильтрованные данные.
Проблема в том, что фильтрация в одном запросе может быть только по одному полю, а в другом сразу по всем. Как реализовать такой запрос одной строкой.
PS. Приложение пишу в С#
...
Рейтинг: 0 / 0
15.05.2006, 07:29
    #33725908
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Очередной сеанс ТормоЖжения?
Что конкретно не понятно: как в запросе несколько условий объединить?

P.S. C# - это конечно хорошо, но какое отношение это имеет к InterBase, Firebird, Yaffil?

-------------------------------------------------------------------
I Live Again!
...
Рейтинг: 0 / 0
15.05.2006, 07:31
    #33725910
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Select что_нужно from откуда_взять
where условие_из_первого_комбобокса
and условие_из_второго_комбобокса
and условие_из_третьего_комбобокса
....

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15.05.2006, 07:40
    #33725919
генерирование selectа для фильтрации грида
да как select использовать я знаю.
вот например : Com = "select * from Otchet where kod = " + Kod + " and " + "Data between " + "'" + dtpC.Text + "'" + " and " + "'" + dtpPo.Text + "'" + " order by Name_P ascending";
У меня получается, что значение для сравнения берется из формы, а если его нет? Тогда получится такая строка для запроса (не выбрал Kod): Com = "select * from Otchet where kod = and " + "Data between " + "'" + dtpC.Text + "'" + " and " + "'" + dtpPo.Text + "'" + " order by Name_P ascending";
...
Рейтинг: 0 / 0
15.05.2006, 07:44
    #33725924
генерирование selectа для фильтрации грида
А непонятно то, как сделать запрос, где были бы указаны все условия для select, даже если некоторые не будут выбраны. т.е. нужен некий автоселект (если такое вообще возможно) который бы сам подставлял значения для where если они есть и не подставлял - если их нет.
...
Рейтинг: 0 / 0
15.05.2006, 08:01
    #33725942
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
1) Используй параметризированные запросы!
2) Ну так сделай в проге разбор по условиям:
если пользователь выбрал в кобобоксе1 что-то -> вставить в запрос соответсвующее условие.
если пользователь НЕ выбрал в кобобоксе1 что-то -> НЕ вставить в запрос соответсвующее условие.





I Live Again!
...
Рейтинг: 0 / 0
15.05.2006, 08:18
    #33725956
генерирование selectа для фильтрации грида
AsPiro1) Используй параметризированные запросы!

вот наверно это то, что надо. А как?

2) Ну так сделай в проге разбор по условиям

так я и начал делать так, но подумал и остановился. У меня 4 комбобокса -> 10 вариантов комбинаций (1-2-3-4, 2-3-4, 3-4, 4), а если порядок поменять, тогда вообще, так что не катит.
...
Рейтинг: 0 / 0
15.05.2006, 08:26
    #33725969
Dynamic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Рискуя получить по шапке.....вот, простенько (для Дельфи):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var s: string;
IBQuery.SQL.Text := 'SELECT * FROM Table';
s := '';
if ComboBox1.Text <> '' then
 s := s + 'FIELD1=' + QuotedStr(ComboBox1.Text);
if ComboBox2.Text <> '' then
begin
 if s <> '' then
  s := s + ' AND ';
  s := s + 'FIELD1=' + QuotedStr(ComboBox2.Text);
end;
..........
if s <> '' then
 IBQuery.SQL.Add('WHERE ' + s);
...
Рейтинг: 0 / 0
15.05.2006, 08:36
    #33725983
Borr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Dynamic
фигня это все. Ставиш SELECT Pole, Pole1 FROM Table WHERE 1=1.... И тогда не надо будет отрабатывать AND'ы (везде будет надо ставить AND и не морочить с ним голову)
...
Рейтинг: 0 / 0
15.05.2006, 08:39
    #33725987
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Олег из Омска AsPiro1) Используй параметризированные запросы!

вот наверно это то, что надо. А как?

Тут я наверное маленько погорячился:)

Олег из Омска
2) Ну так сделай в проге разбор по условиям

так я и начал делать так, но подумал и остановился. У меня 4 комбобокса -> 10 вариантов комбинаций (1-2-3-4, 2-3-4, 3-4, 4), а если порядок поменять, тогда вообще, так что не катит.

Да хоть мульён вариантов:)
Порядок следования условий не имеет значения!
Что 2-3-4, что 3-2-4, что 4-3-2 серверу по суфиксу!


А сами условия формируй примерно так:
Если kod устновлен, то
Код: plaintext
select * from Otchet where (kod =  123 )and(...)and(...)
иначе
Код: plaintext
select * from Otchet where (...)and(...)
...
Рейтинг: 0 / 0
15.05.2006, 10:39
    #33726258
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
С такими проблемами надо в другой форум... куда смотрят модераторы...
...
Рейтинг: 0 / 0
15.05.2006, 11:04
    #33726341
генерирование selectа для фильтрации грида
а такой запрос что делает? зачем @?
select * from Otchet where kod = @kod
...
Рейтинг: 0 / 0
15.05.2006, 13:46
    #33727053
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
> С такими проблемами надо в другой форум... куда смотрят модераторы...
Работаем... Иногда... Поехали в "Программирование"...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15.05.2006, 15:01
    #33727469
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
генерирование selectа для фильтрации грида
Лучше такое писать с помощью N отдельных запросов и выполнять в зависимости от условий один из них. Если конечно у тебя не таблица в 100 строк или если большая, но в которой ни одного индекса нет.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / генерирование selectа для фильтрации грида / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]