tefos666
شنبه 25 آبان 1387, 23:56 عصر
سلام دوستان من یک فرم دارم توش یک کمبو باکس گذاشتم و با انتخاب مقدار اون کوئری رو اجرا میکنم و میگم مثلا select * from all where name= combobox1.text چون وقت نبود کدش رو ننوشتم ، برای نمایش کوئری از پارامتر استفاده کردم من وقتی خروجی گرید رو میگیرم در جدولم یک ستون اعداد دارم که میخوام sum اون رو هم بگیرم مجبور شدم یک کوئری دیگه بزنم واسه sum ولی مشکلم اینه نمیدونم چجوری sum اون جدول فیلتر شده به وسیله کمبوباکس رو بگیرم ؟
dm.qrrahgiriostan.Close;
dm.qrrahgiriostan.SQL.Clear;
dm.qrrahgiriostan.SQL.Add('select idt as ˜Ï , namet as äÇã ,ostan as ÇÓÊÇä , sum (tedad) as ÌãÚ from nahal');
dm.qrrahgiriostan.SQL.Add('where ostan= :postan group by idt,namet,ostan ');
dm.qrrahgiriostan.Parameters.ParamByName('postan') .Value:=Trim (ComboBox2.Text);
dm.qrrahgiriostan.SQL.Add('order by idt');
dm.qrrahgiriostan.Open;
dm.qrsarjam.Close;
dm.qrsarjam.SQL.Clear;
dm.qrsarjam.SQL.Add('select count(tedad)as count_tedad,sum(tedad)as sumation from nahal');
dm.qrsarjam.Open;
Label6.Caption:=DBGrid2.Fields[0].AsString;
Label4.Caption:=DBGrid2.Fields[1].AsString;
در هر حال نتیجه sum که میگیرم ربطی به فیلتر قبلیم نداره و چون select * from all مجددا زده شده نتیجه کوئری دوم بی توجه به فیلتر اول کل ستون رو میده ؟ چجوری میتونم حلش کنم ؟
با calculated feild ? ضمنا گرید من خالی و وقتی کوئری open میشه اطلاعات رو نشون میده
با union ? نتونستم کدش رو بنویسم ، شاید مساله خیلی ساده باشه ولی خودتون میدونید گاهی اوقات ذهن یاری نمیکنه و کل برنامه گیر یک مشکل سادست لطفا کمک کنید .:بامزه:
البته خودم به ذهنم رسید یک جدول temp درست کنم و هرسری که کوئری میگیرم جدول رو خالی کنم تو temp و از temp کوئری مجدد بگیرم و نتیجه رو برگردونم ولی دیدم یه مقدار غیر معقولانه به نظر میاد و الکی برنامه برای هر تراکنش کلی سنگین میشه و....
dm.qrrahgiriostan.Close;
dm.qrrahgiriostan.SQL.Clear;
dm.qrrahgiriostan.SQL.Add('select idt as ˜Ï , namet as äÇã ,ostan as ÇÓÊÇä , sum (tedad) as ÌãÚ from nahal');
dm.qrrahgiriostan.SQL.Add('where ostan= :postan group by idt,namet,ostan ');
dm.qrrahgiriostan.Parameters.ParamByName('postan') .Value:=Trim (ComboBox2.Text);
dm.qrrahgiriostan.SQL.Add('order by idt');
dm.qrrahgiriostan.Open;
dm.qrsarjam.Close;
dm.qrsarjam.SQL.Clear;
dm.qrsarjam.SQL.Add('select count(tedad)as count_tedad,sum(tedad)as sumation from nahal');
dm.qrsarjam.Open;
Label6.Caption:=DBGrid2.Fields[0].AsString;
Label4.Caption:=DBGrid2.Fields[1].AsString;
در هر حال نتیجه sum که میگیرم ربطی به فیلتر قبلیم نداره و چون select * from all مجددا زده شده نتیجه کوئری دوم بی توجه به فیلتر اول کل ستون رو میده ؟ چجوری میتونم حلش کنم ؟
با calculated feild ? ضمنا گرید من خالی و وقتی کوئری open میشه اطلاعات رو نشون میده
با union ? نتونستم کدش رو بنویسم ، شاید مساله خیلی ساده باشه ولی خودتون میدونید گاهی اوقات ذهن یاری نمیکنه و کل برنامه گیر یک مشکل سادست لطفا کمک کنید .:بامزه:
البته خودم به ذهنم رسید یک جدول temp درست کنم و هرسری که کوئری میگیرم جدول رو خالی کنم تو temp و از temp کوئری مجدد بگیرم و نتیجه رو برگردونم ولی دیدم یه مقدار غیر معقولانه به نظر میاد و الکی برنامه برای هر تراکنش کلی سنگین میشه و....