ورود

View Full Version : مشكل در adoquery



shining_eye
سه شنبه 27 مهر 1389, 08:35 صبح
با سلام
من يه adoquery دارم كه تو قسمت پراپرتيsql ش يه query نوشتم و activeش كردم و بازدن دكمهprint از مقاديري كه query برمي گردونه پرينت مي گيره. من روي فرمم 3تا tedit ديگه هم دارم كه مي خوام كاربر بتونه بر اساس هر كودوم از اون edit هاهم بتونه گزارش بگيره ولي حالا مشكل من اينجاست كه كجا بايد كد هاي جديدم رو بزارم من خودم رفتم اين كد ها رو تو قسمت onclick فرمي كه روش quickreportم رو گذاشتم نوشتم




begin
ADOQuery1.Close;
....ADOQuery1.SQL.Text := 'select
.....اينجارو تو قسمت sql مربوط به adoquery نوشتم كه اينجا هم تكرارش كردم و كد هاي زير رو به هش اضافه كردم
if (Form1.Edit1.Text<>'')then
ADOQuery1.SQL.Add('and code='+Form1.Edit1.Text);
//+'order by code ,Int13.itemcode' ;
if (Form1.Edit2.Text<>'')then
ADOQuery1.SQL.Add('and ItemCode>='+Form1.Edit2.Text);


if (Form1.Edit3.Text<>'')then
ADOQuery1.SQL.Add('and ItemCode<='+Form1.Edit3.Text);
ADOQuery1.Open;


end;



end;


حالا مي خوام ببينم مشكل اين كدهام چيه كه وقتي اجرا مي كنم برنامه ام رو همون كاري كه اولش انجام مي داد (بدون اضافه كردن كد هاي بالا همون ها رو انجام ميده)

majid_ramak
سه شنبه 27 مهر 1389, 12:24 عصر
قسمت onclick فرمي كه روش quickreportم رو گذاشتم نوشتم
چرا OnClick فرم گذاشتین چرا از Button استفاده نمی کنین؟
در ضمن Query تون رو کامل بنویسید شاید اشکال از اون باشه

shining_eye
سه شنبه 27 مهر 1389, 13:24 عصر
آخه اگه مشکل از query باشه پس چه طور select * كلش رو مي آره؟
فقط وقتی این کد های بالا رو بهش اضافه می کنم نمی دونم چرا هیچ تغییری نمی کنه؟
این هم کد کامل



procedure TForm6.FormClick(Sender: TObject);
begin
ADOQuery1.Close;


ADOQuery1.SQL.Text := 'select int12.Code,int12.Name ,int12.DocNo,int12.Date ,Int13.ItemCode , int07.Name ----,sum(Quantity)'


+',bedehkar = '
+' CASE actiontype '
+'WHEN 86 THEN (isnull(( select sum(quantity) from int13 in13 inner join int12 in12 '
+ ' on (in12.docNo = in13.docno'
+ 'and in12.Accountyear = in13.Accountyear'
+ ' AND in12.InventoryCode = in13.InventoryCode'
+ 'and in12.docType = in13.docType)'
+' where itemcode =int13.Itemcode and in12.DocNo = int12.Docno'
+' and in12.doctype = 2 and actiontype = 86 ),0) -'
+'isnull((select sum(quantity) from int13 in13 inner join int12 in12'
+' on (in12.docNo = in13.docno '
+'and in12.Accountyear = in13.Accountyear'
+' AND in12.InventoryCode = in13.InventoryCode '
+'and in12.docType = in13.docType)'
+ ' where itemcode =int13.Itemcode and in12.DocNo = int12.Docno '
+ 'and in12.doctype = 1 and actiontype = 86 ),0))'

+'ELSE 0 '
+' END'

+',bestankar = '
+' CASE actiontype'
+ 'WHEN 87 THEN (select isnull(sum(quantity),0) from int13 in13 inner join int12 in12'
+'on (in12.docNo = in13.docno'
+'and in12.Accountyear = in13.Accountyear '
+'AND in12.InventoryCode = in13.InventoryCode'
+'and in12.docType = in13.docType)'
+'where itemcode =int13.Itemcode and Code = int12.code'
+'and in12.doctype = 2 and actiontype = 87)'

+'ELSE 0'

+'END'
+'from int13 inner join int12 on (int12.docNo = int13.docno'
+'and int12.Accountyear = int13.Accountyear'
+'AND int12.InventoryCode = int13.InventoryCode'
+'and int12.docType = int13.docType)'
+'left outer join int07 on (int07.ItemCode = Int13.ItemCode)'
+'where OthersGroup = 18' ;

if (Form1.Edit1.Text<>'')then
ADOQuery1.SQL.Add('and code='+Form1.Edit1.Text);
//+'order by code ,Int13.itemcode' ;
if (Form1.Edit2.Text<>'')then
ADOQuery1.SQL.Add('and ItemCode>='+Form1.Edit2.Text);

if (Form1.Edit3.Text<>'')then
ADOQuery1.SQL.Add('and ItemCode<='+Form1.Edit3.Text);
ADOQuery1.Open;

end;


end;

end.

majid_ramak
چهارشنبه 28 مهر 1389, 11:14 صبح
خوب چرا از OnClick فرم استفاده کردین ممکن OnClick فرمتون اصلا اجرا نشه برای مثال اگه تو فرمتون یک Panel بذارین و خاصیت Align اون رو AlClient کنین و توی OnClick فرمتون کد نوشته باشین هیچ وقت اون کد اجرا نخواهد شد چون نمیتونین روی فرمتون کلیک کنین ممکن مشکل شما هم همین باشه که نمیتونین روی فرم کلیک کنین که Onclick فرمتون اجرا بشه برای این منظور از یک Button استفاده کنین

shining_eye
چهارشنبه 28 مهر 1389, 15:25 عصر
با تشکر از راهنمایی تون
بله مشکل من یکی این بود که باید تو خصوصیت oncreate می نوشتمش و هم اینکه تو قسمت select بین کاراکتر ها و علامت کوتیشن فاصله نذاشته بودم و به همین دلیل query به درستی اجرا نمی شد.