با تشکر از شما دوست عزیبه خاطر تحلیل زیبا
کد اصلاح شده:
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add('select count(no)from permit_all');
adoQuery1.SQL.Add('WHERE date_ss BETWEEN :Date1 AND :Date2'+
' and '+ ' unit like '+QuotedStr('%'+ComboBox1.text+'%')+
' and '+ ' amaliat like '+QuotedStr('mec')+
' and '+ 'date_ss>= '+QuotedStr(edit1.Text));
adoQuery1.Parameters.ParamByName('Date1').Value:= shdatetostr(exShDatePicker1.Date);
adoQuery1.Parameters.ParamByName('Date2').Value:= shdatetostr(exShDatePicker2.Date);
edit1.Text:=shdatetostr(ShDatePicker1.Date-30);
adoQuery1.Open;
حال من شرط را از قسمت where برداشتم و در در قسمت sql.add گذاشتم به صورت زیر:
adoQuery1.SQL.Add('select count(case when(no>0 and date_sabt >=''1385/12/20'') then no else null end )'+ ...
جواب میده و درسته ولی وقتی بجای 1385/12/20 از یک ورودی در فرم به نام edit1 استفاده میکنیم یعنی به صورت زیر:
adoQuery1.SQL.Add('select count(case when(no>0 and date_sabt >=edit1.text) then no else null end )'+ ...
خطا میدهد لطفا راهنمایی فرمائید.
با تشکر
داود