![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сортировка в SQL по нескольким параметрам, поможите [D7]
Шмфтнср © (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 парараметр, т.е. всместо проверки парного параметра можно проверить сам параметр на нул.