با سلام
من دو خط کدی که اضافه نمود به برنامه یعنی این دو خط :
ADOQuery1.sql.Add('select count(c1) ,count( c2) , count( C3) ,count( c4) ,count(c5) from (');
AdoQuery1.SQL.Add(') as TBL1');
برای همه ستونها یک عدد ثابت میدهد که هیچ ربطی به عملیات ما ندارد یعنی برای همه عدد 5 را نمایش میدهد
و بدون اضافه کردن این دو کد جواب میدهد و هیچ مشکلی ندارد ولی فقط در یک سطر نیستند مانند ضمیمه تایپیک قبلی
کل برنامه نوشته شده برای این کوئری:
ADOQuery1.SQL.Clear;
ADOQuery1.sql.Add('select count(c1) ,count( c2) , count( C3) ,count( c4) ,count(c5) from (');
ADOQuery1.sql.Add('select count(NO) as c1 ,0 as c2 , 0 AS C3 ,0 as c4 ,0 as c5 from permit_all');
AdoQuery1.SQL.Add('Union all');
ADOQuery1.sql.Add('SELECT count(status) as c2 , 0 as c1 ,0 AS C3,0 as c4 , 0 as c5 from permit_all where status like'+QuotedStr('cancel'));
AdoQuery1.SQL.Add('Union all');
ADOQuery1.sql.Add('SELECT count(status) as c3 , 0 as c1 ,0 AS C2 , 0 as c4 , 0 as c5 from permit_all where status like'+QuotedStr('open'));
AdoQuery1.SQL.Add('Union all');
ADOQuery1.sql.Add('select count(doreyi) as c4 , 0 as c1 ,0 AS C2, 0 as c3 , 0 as c5 from permit_all where doreyi like '+QuotedStr('ÏÇÑÏ'));
AdoQuery1.SQL.Add('Union all');
ADOQuery1.sql.Add('SELECT count(pm) as c5 , 0 as c1 ,0 AS C2 , 0 as c3 , 0 as c4 from permit_all where PM like'+QuotedStr('ÏÇÑÏ'));
AdoQuery1.SQL.Add(') as TBL1');
بدون خط دوم و آخر جواب درست است در یک سطر نیست با این دو خط جواب همه 5 میباشد ولی در یک سطر
با تشکر از همراهی صمیمانه شما عزیزان
داود