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

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

Вопрос по SQL. [D6]


Страницы:   1 2

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]

СУБД какая?


Страницы:   1 2

Наверх

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