Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по SQL.   Найти похожие ветки 

 
Newuser ©   (2004-07-12 12:26) [0]

Здравствуйте, уважаемые мастера! Помогите пожалуйста. Вопрос связан с использованием SQL-запроса. На форме разместил два RadioGroup-а и два ComboBox-а, в каждом из которых (в Items-ах) много значений. В DBGrid-е данные должны изменяться после именения в каждом из вышеуказанных компоненте. Подскажите, как в коде поступить, перебирать SQL по каждому значению? Или можно по-проще. Извините, если не правильно объяснил.


 
Соловьев ©   (2004-07-12 12:29) [1]


> Подскажите, как в коде поступить, перебирать SQL по каждому
> значению?

менять только строку whereб согласно значениям RadioGroup и ComboBox


 
Курдль ©   (2004-07-12 12:32) [2]

Сейчас последует: "а по подробнее можно (с примерами, кодом и комментариями) за рание благодарен..."


 
Johnmen ©   (2004-07-12 12:34) [3]

см. Filter и Filtered


 
Newuser ©   (2004-07-12 12:34) [4]

[1]
Да, но если у меня, например, в RadioGroup-е выбор года (2002, 2003, 2004), а в dbf-файле поле имеет совсем другие значения.


 
Соловьев ©   (2004-07-12 12:35) [5]


> а в dbf-файле поле имеет совсем другие значения

LocalSQL.hlp+extract


 
Newuser ©   (2004-07-12 12:36) [6]

[2]
Нет не попрошу готовые коды. Прошу только "подтолкнуть" на нужную тропу.


 
Курдль ©   (2004-07-12 12:37) [7]

СУБД какая?


 
Newuser ©   (2004-07-12 12:38) [8]

[7]
DBASE.


 
Newuser ©   (2004-07-12 12:40) [9]

[5]
>LocalSQL.hlp+extract
Поясните пожалуйста.


 
Соловьев ©   (2004-07-12 12:42) [10]


> Поясните пожалуйста.

1-е - это файл справки. он ставится при уставноке БДЕ, 2-е - это функция выдергивания из даты года, месяца и т.п.


 
Newuser ©   (2004-07-12 12:50) [11]

[10]
Я понимаю, но не только в дате дело. Например в ComboBox-е
Другие необоротные материальные активы (библиотечные фонды) 11100
А в поле ss="11100"


 
Newuser ©   (2004-07-12 12:52) [12]

[10]
Извините, убегу минут на 40.


 
Newuser ©   (2004-07-12 15:54) [13]

[10]
Так получилось, что из-за грозы у нас были отключены все компьютеры и только сейчас я могу дальше общаться с Вами.
Ну все-таки, как же быть?
>Другие необоротные материальные активы (библиотечные фонды) 11100
>А в поле ss="11100"


 
Соловьев ©   (2004-07-12 15:59) [14]

Copy,Pos,Lenght - F1


 
Newuser ©   (2004-07-12 16:12) [15]

[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 16:14) [16]


> А хочу проще сделать.

TQuery.Params+F1


 
Newuser ©   (2004-07-12 16:15) [17]

Наверно я вообще все не так делаю, но как?


 
Newuser ©   (2004-07-12 16:18) [18]

Соловьев ©   (12.07.04 16:14) [16]
> Пробовал параметрический запрос. Но или я не так сделал, или... Ну не отправляйте к справке...


 
Соловьев ©   (2004-07-12 16:22) [19]


> Но или я не так сделал,

как делал?


 
Newuser ©   (2004-07-12 16:27) [20]

[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:51) [21]


> ((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:57) [22]

[21]
>почему or? тебе же and надо?
Ну это я на примере одного компонента.
>SQL.Add(build_where(RadioGroup1,RadioGroup2, Combobox1, Combobox2));
А вот тут ничего понимаю...


 
Соловьев ©   (2004-07-12 16:59) [23]


> А вот тут ничего понимаю...

функция которая на основе входных параметров построит строку where.


 
Newuser ©   (2004-07-12 17:03) [24]

А в where...  ...RadioGroup1,RadioGroup2, Combobox1, Combobox2)); в таком виде и остается или подними подразумевается прописывание...


 
Соловьев ©   (2004-07-12 17:10) [25]


> или подними подразумевается прописывание...

под этим поразумевается кодирование, т.е. написание функции, я привел как вызывать ее.


 
Newuser ©   (2004-07-12 17:37) [26]

Соловьев ©   (12.07.04 17:10) [25]
Понял, спасибо!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.031 c
3-1089959352
George
2004-07-16 10:29
2004.08.08
Как экспортировать базу в exсel


1-1090761907
KaLLeKa
2004-07-25 17:25
2004.08.08
Как перемещать визуальные компоненты


3-1089873227
Berezne
2004-07-15 10:33
2004.08.08
Как восстановить индексы?


3-1089708236
a123
2004-07-13 12:43
2004.08.08
поиск двойников


3-1089140482
Elicei
2004-07-06 23:01
2004.08.08
Локальное->Клиент-Серверное





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский