Topic: Multiselect Combobox в SQL запросе

SELECT   
Zayvka.ZayvkaDateOplata,
Mat.MatName,
Zayvka.ZayvkaKol,
Zayvka.ZayvkaSumma
                 
FROM Zayvka                   
                               
LEFT OUTER JOIN Mat ON Mat.id=Zayvka.id_Mat LEFT OUTER JOIN Gruppa ON Gruppa.id=Mat.id_Gruppa LEFT OUTER JOIN MatMesto ON MatMesto.id=Mat.id_MatMesto LEFT OUTER JOIN Postavsik ON Postavsik.id=Zayvka.id_Postavsik

WHERE
(Zayvka.ZayvkaSumma > 0) AND   
(CASE WHEN {DateTimePicker1} IS NOT NULL THEN date(ZayvkaDateOplata) >= date({DateTimePicker1}) ELSE 1=1 END) AND 
(CASE WHEN {DateTimePicker2} IS NOT NULL THEN date(ZayvkaDateOplata) <= date({DateTimePicker2}) ELSE 1=1 END) AND                                                                                       
(CASE WHEN {ComboBox1} <> -1 THEN Mat.id_Gruppa = {ComboBox1} ELSE 1=1 END) AND
(CASE WHEN {ComboBox2} <> -1 THEN Mat.id_MatMesto = {ComboBox2} ELSE 1=1 END) AND
(CASE WHEN {ComboBox3} <> -1 THEN Zayvka.id_Postavsik = {ComboBox3} ELSE 1=1 END)
   
ORDER BY Zayvka.ZayvkaDateOplata       

Этот SQL запрос работает.
При использовании Multiselect в Combobox работать перестаёт.
Вернее он не воспринимает Combobox с Multiselect.
Помогите доработать!
Спасибо,
Пётр

Re: Multiselect Combobox в SQL запросе

Посмотрите пожалуйста данный проект с примером
http://myvisualdatabase.com/forum/misc. … download=1

Dmitry.

Re: Multiselect Combobox в SQL запросе

DriveSoft wrote:

Посмотрите пожалуйста данный проект с примером
http://myvisualdatabase.com/forum/misc. … download=1

Дмитрий спасибо.
Я находил этот пример прежде чем спросить.
Но мозгов не хватает сообразить как использовать у себя.
А через действие SQLзапрос для кнопки это нельзя реализовать?
Или обязательно в скриптах?

Re: Multiselect Combobox в SQL запросе

Можно и с помощью кнопки с действием SQL запрос, но все равно необходима помощь скрипта, пример

procedure Form1_ButtonSQL_OnClick (Sender: string; var Cancel: boolean);
var
    sSQL: string;
    i: integer;
begin
    Form1.ButtonSQL.dbSQL := 'SELECT id, lastname FROM employees';
    sSQL := '';

    if Form1.cbGroups.SelectedCount>0 then
    begin
        sSQL := sSQL + ' WHERE';

        for i := 0 to Form1.cbGroups.Items.Count-1 do
        begin
            if Form1.cbGroups.ItemsChecked[i] then
                sSQL := sSQL + ' id_groups='+IntToStr(Form1.cbGroups.dbIndexToID(i))+' OR';
        end;

        SetLength(sSQL, Length(sSQL)-3);
        Form1.ButtonSQL.dbSQL := Form1.ButtonSQL.dbSQL + sSQL;
    end;
end;

т.е. формируем SQL запрос для кнопки с помощью скрипта.

Dmitry.

Re: Multiselect Combobox в SQL запросе

ок. спасибо. буду пробовать.