![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по SQL. [D6]
Newuser © (2004-07-12 12:26:00)Здравствуйте, уважаемые мастера! Помогите пожалуйста. Вопрос связан с использованием SQL-запроса. На форме разместил два RadioGroup-а и два ComboBox-а, в каждом из которых (в Items-ах) много значений. В DBGrid-е данные должны изменяться после именения в каждом из вышеуказанных компоненте. Подскажите, как в коде поступить, перебирать SQL по каждому значению? Или можно по-проще. Извините, если не правильно объяснил.
Newuser (2004-07-12 17:37:00) [1]Соловьев © (12.07.04 17:10) [25]
Понял, спасибо!
Соловьев (2004-07-12 17:10:00) [2]
> или подними подразумевается прописывание...
под этим поразумевается кодирование, т.е. написание функции, я привел как вызывать ее.
Newuser (2004-07-12 17:03:00) [3]А в where... ...RadioGroup1,RadioGroup2, Combobox1, Combobox2)); в таком виде и остается или подними подразумевается прописывание...
Соловьев (2004-07-12 16:59:00) [4]
> А вот тут ничего понимаю...
функция которая на основе входных параметров построит строку where.
Newuser (2004-07-12 16:57:00) [5][21]
>почему or? тебе же and надо?
Ну это я на примере одного компонента.
>SQL.Add(build_where(RadioGroup1,RadioGroup2, Combobox1, Combobox2));
А вот тут ничего понимаю...
Соловьев (2004-07-12 16:51:00) [6]
> ((nn= :Name_param) or (nn=:Name_param1)
> or (nn=Name_param2) or (nn=Name_param3) or (nn=:Name_param4))
почему or? тебе же and надо?
тут действительно надо формировать строку where - параметры не спасут.
> А хочу проще сделать.
напиши функцию которая возвращает строку where:
with Query1 do begin
SQL.Clear;
SQL.Add('select a.ns, ss, cena, q1, sum1, qt, sumt, data, b.namem, c.text_');
SQL.Add('from m_s0401 a, m_nc b, c_kei c');
SQL.Add(build_where(RadioGroup1,RadioGroup2, Combobox1, Combobox2));
SQL.Add('order by ss');
Open;
Newuser (2004-07-12 16:27:00) [7][19]
>как делал?
Ну примерно так:
select a.ns, ss, cena, q1, sum1, qt, sumt, data, b.namem, c.text_
from m_s0401 a, m_nc b, c_kei c
where a.nn=b.nn and b.kei=c.kod and ((nn= :Name_param) or (nn=:Name_param1)
or (nn=Name_param2) or (nn=Name_param3) or (nn=:Name_param4))
Соловьев (2004-07-12 16:22:00) [8]
> Но или я не так сделал,
как делал?
Newuser (2004-07-12 16:18:00) [9]Соловьев © (12.07.04 16:14) [16]
> Пробовал параметрический запрос. Но или я не так сделал, или... Ну не отправляйте к справке...
Newuser (2004-07-12 16:15:00) [10]Наверно я вообще все не так делаю, но как?
Соловьев (2004-07-12 16:14:00) [11]
> А хочу проще сделать.
TQuery.Params+F1
Newuser (2004-07-12 16:12:00) [12][14]
Хорошо, со справкой я ознакомлюсь, но все же я думаю Вы меня не понимаете. Проблема в том, что я перебираю каждый компонент таким образом:
procedure TFm_ostatView.Button2Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:
case RadioGroup2.ItemIndex of
0:
case ComboBox1.ItemIndex of
0:
case ComboBox2.ItemIndex of
0:
with Query1 do begin
SQL.Clear;
SQL.Add('select a.ns, ss, cena, q1, sum1, qt, sumt, data, b.namem, c.text_');
SQL.Add('from m_s0401 a, m_nc b, c_kei c');
SQL.Add('where a.nn=b.nn and b.kei=c.kod and ns="00000001" and ss="11100"');
SQL.Add('order by ss');
Open;
end;
end;
begin
case RadioGroup1.ItemIndex of
0:
case RadioGroup2.ItemIndex of
0:
case ComboBox1.ItemIndex of
0:
case ComboBox2.ItemIndex of
1:
with Query1 do begin
SQL.Clear;
SQL.Add('select a.ns, ss, cena, q1, sum1, qt, sumt, data, b.namem, c.text_');
SQL.Add('from m_s0401 a, m_nc b, c_kei c');
SQL.Add('where a.nn=b.nn and b.kei=c.kod and ns="00000001" and ss="11200"');
SQL.Add('order by ss');
Open;
end;
end;
................
А хочу проще сделать.
Соловьев (2004-07-12 15:59:00) [13]Copy,Pos,Lenght - F1
Newuser (2004-07-12 15:54:00) [14][10]
Так получилось, что из-за грозы у нас были отключены все компьютеры и только сейчас я могу дальше общаться с Вами.
Ну все-таки, как же быть?
>Другие необоротные материальные активы (библиотечные фонды) 11100
>А в поле ss="11100"
Newuser (2004-07-12 12:52:00) [15][10]
Извините, убегу минут на 40.
Newuser (2004-07-12 12:50:00) [16][10]
Я понимаю, но не только в дате дело. Например в ComboBox-е
Другие необоротные материальные активы (библиотечные фонды) 11100
А в поле ss="11100"
Соловьев (2004-07-12 12:42:00) [17]
> Поясните пожалуйста.
1-е - это файл справки. он ставится при уставноке БДЕ, 2-е - это функция выдергивания из даты года, месяца и т.п.
Newuser (2004-07-12 12:40:00) [18][5]
>LocalSQL.hlp+extract
Поясните пожалуйста.
Newuser (2004-07-12 12:38:00) [19][7]
DBASE.
Курдль (2004-07-12 12:37:00) [20]СУБД какая?