ورود

View Full Version : مشکل در کد SQL



fire.angle
چهارشنبه 16 شهریور 1390, 19:30 عصر
جون هرکی دست دارید بگید مشکل این کد چیه
این کد رو دریک Query در Access تست کردم و هیچ مشکلی نداره و خروجی میگیرم
اما وقتی اونو توی یه AdoQuery میزارم که از خروجیش واسه گزارشم استفاده کنم خطا میده

Procedure SelBoth(Q_Report:TADOQuery;frxReport1:TfrxReport;P rojectName_Edt:TsEdit;PayTo_Edt:TsEdit);
var
memo1:Tfrxmemoview;
s:String;
begin
with Q_Report do
begin
Close; SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM (((((Pardakhti INNER JOIN Projects ON Pardakhti.CodeProject = Projects.CodeProject)');
SQL.Add(' INNER JOIN PaidTo ON Pardakhti.CodePaidTo = PaidTo.CodePaidTo)');
SQL.Add(' INNER JOIN PayFor ON Pardakhti.CodePayFor = PayFor.CodePayFor)');
SQL.Add(' INNER JOIN Chek ON Pardakhti.CodePrkh = Chek.CodePrkh)');
SQL.Add(' INNER JOIN Bank ON Chek.CodeBank = Bank.CodeBank)');
SQL.Add(' INNER JOIN Branch ON Bank.CodeBank = Branch.CodeBank');
SQL.Add('WHERE (((Pardakhti.Type)=0))');
SQL.Add('UNION');
SQL.Add('SELECT *');
SQL.Add('FROM (((((Pardakhti INNER JOIN Projects ON Pardakhti.CodeProject = Projects.CodeProject)');
SQL.Add(' INNER JOIN PaidTo ON Pardakhti.CodePaidTo = PaidTo.CodePaidTo)');
SQL.Add(' INNER JOIN PayFor ON Pardakhti.CodePayFor = PayFor.CodePayFor)');
SQL.Add(' INNER JOIN Chek ON Pardakhti.CodePrkh = Chek.CodePrkh)');
SQL.Add(' INNER JOIN Bank ON Chek.CodeBank = Bank.CodeBank)');
SQL.Add(' INNER JOIN Branch ON Bank.CodeBank = Branch.CodeBank');
SQL.Add('WHERE (((Pardakhti.Type)=1) AND ((Chek.CodeBank)=[Bank].[CodeBank]) AND ((Chek.CodeBranch)=[Branch].[CodeBranch]))');
SQL.Add('And ((Projects.NameProject)='+QuotedStr(ProjectName_Ed t.Text)+')');
SQL.Add('And ((PaidTo.NameFamilyPaidTo)='+QuotedStr(PayTo_Edt.T ext)+')');
SQL.Add('And (Pardakhti.Date Between :#FromDate# And :#ToDate#)');
SQL.Add('And (Pardakhti.Money Between :FromMOney And :ToMoney)');
s:=SQL.GetText;
Open;
frxReport1.LoadFromFile('print\ReportPardakhti_Prt .fr3');

memo1:=tfrxmemoview(frxreport1.findobject('memo18' ));
memo1.memo.text:=UfarsiDate.TFarDate.MiladyToShams istr(now);

frxReport1.ShowReport(true);
end;
end;

خطاش هم اینه که : Q_Report : Field PayFor.CodePayFor Not Found
حالا چرا فیلد CodePayFor رو پیدا نمیکنه نمیدونم
این کد در Query خود Access بدرستی کار میکنه

لطفا راهنمایی کنید

Vahid.Shatery
چهارشنبه 16 شهریور 1390, 21:27 عصر
سلام
روی adoqry دبل کلیک کنید . باید فیلد PayFor اونجا ضافه شده باشه .
یک بار کلیک راست کنید و addFields کنید .

fire.angle
چهارشنبه 16 شهریور 1390, 22:23 عصر
فیلد CodePayFor اضافه شده هست اما باز هم خطا میده .

Vahid.Shatery
چهارشنبه 16 شهریور 1390, 22:34 عصر
داخل فست ریپورت این فیلد هست ؟

fire.angle
چهارشنبه 16 شهریور 1390, 22:37 عصر
آره . اما قبل از Load شدن Fast Report یعنی موقع Open شدن Adoquery این خطا رو میده

من این دو قسمت Select رو بصورت جداگانه استفاده کردم و جواب میدن
اما نمیدونم چرا وقتی میخوام او 2تا Select رو با هم UNION کنم این خطا رو میده
خیلی عجیبه