Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сортировка в SQL по нескольким параметрам, поможите [D7]


Страницы:   1 2

Шмфтнср ©   (2007-01-26 08:05:00) 

вопрос в следующем, время поджимает а я чет ни как не могу воткнуться в тему, с скл совсем не долго, много чего еще читать но поможите. Базюлька на msSQL server 2000
Есть две таблицы: скажем авто и клиенты, делается запрос:
dmData.qKontrakt.SQL.Text := 'select * from auto, klient where auto.urn = klient.urn order by model'
все пучком, все просто. Дальше в комбо боксе отображено несколько моделей и один итем "все..." с одним тоже все ок, пишем:
procedure TfrmForm.cbModelChange(Sender: TObject);
begin

   dmData.qKontrakt.Active:=false;
   dmData.qKontrakt.SQL.Clear;

   if cbModel.Text = 'Âñå...' then
     dmData.qKontrakt.SQL.Text := 'select * from auto, klient where auto.urn = klient.urn order by model'
     else
       begin
         dmData.qKontrakt.SQL.Text := 'select * from auto, klient where auto.urn = klient.urn AND auto.model = :ModelChoice order by model';
         dmData.qKontrakt.Parameters.ParamByName('ModelChoice').Value:= cbModel.Text;
       end;

   dmData.qKontrakt.Open;
end;

А ввот дальше хз как сделать, у меня таких комбиков 4, и по всем надо отследить параметр запроса, все ниче если есть сразу параметры выборки тоисть в 1-м к примеру ваз во втором 2110 и т.д, но как поставить чтобы допустим выбрал марку машины - он отсортирова, далее код модели он оставил выбранную марку и в них отсортировал код модели, далее цвет и  опять же из уже выбранных.
Помогите конкретным примером плиз или киньте ссылкой если гдето подобный пример обсуждался. Повторяюсь спрашиваю только из-за нехватки времени.


Sergey13   (2007-01-26 10:21:00) [21]

> [2] Шмфтнср   (26.01.07 09:02)
> идея понятна
Судя по

> [6] Шмфтнср   (26.01.07 10:06)

не очень.

Суть проста на каждое условие (твои комбобоксы) формируется условие в секции where, но таким образом, что это условие можно "заглушить". Т.е. например при :flag1=0 (в моем примере из [1]) условие pole1=:param1 просто не сработает. Остается проанализировать условия (комбобоксы) и правильно присвоить параметры. Причем не переписывая текста запроса (он получится универсальным).


Шмфтнср   (2007-01-26 10:06:00) [22]

ну сортировка это абстрактно, конечно запросы... Вот смотри,  у меня идёт проверка непосредственно на значение итема, ты предлагаешь на нулевое значение, так? а сам запрос то как построить, так чтобы прдыдущие выборки оставались и менялись в зависимости от выбора других значений 1-го из 4-х комбиков. Извиняюсь если тупой вопрос, просто уже зациклился видимо.... Как говорится к черту зюйт вест пальцем покажи :)


Sergey13   (2007-01-26 09:44:00) [23]

Кстати слово "сортировка" в твоем вопросе вроде как совсем ни при чем.


Sergey13   (2007-01-26 09:42:00) [24]

> [3] Шмфтнср   (26.01.07 09:38)

Как конкретно и что не выходит то?


Шмфтнср   (2007-01-26 09:38:00) [25]

Чет не выходит каменный цветок, знаний не хватает, если есть возможность покажите на выше приведённом примере или поподробнее опишите.


Шмфтнср   (2007-01-26 09:02:00) [26]

идея понятна, сейчас покапаю


Sergey13   (2007-01-26 08:21:00) [27]

where
    ((pole1=:param1 and :flag1=1) or :flag1=0)
and  ((pole2=:param2 and :flag2=1) or :flag2=0)
and ....


Идея понятна? С некоторыми компонентами допустимо иметь только 1 парараметр, т.е. всместо проверки парного параметра можно проверить сам параметр на нул.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо