ورود

View Full Version : آموزش: اینتراوب و FastReport



ariopax
شنبه 08 شهریور 1393, 01:33 صبح
procedure TfrmLossRun.btnPrnLossClick(Sender: TObject);
var
s0,s1,s2 : String;
begin
with UserSession do
begin
Setup Dir Locations
s0 := WebApplication.UserCacheDir;
s1 :=
GetTempFile(WebApplication.UserCacheDir,UserSessio n.sUserID+'.PDF');
s2 := WebApplication.UserCacheURL+extractfilename(s1);
// Load correct Loss Run File
frxRpt.LoadFromFile(webapplication.ApplicationPath +'Lossrun.fr3');
frxRpt.Variables['usrname'] := frCreateStr(sUserID);
frxRpt.PrepareReport(true);
frPDFX.FileName := s1;
frxRpt.Export(frPDFX);
frxRpt.Clear;
WebApplication.NewWindow(s2);
end;
end;


ازاین کد برای استفاده از fastreport استفاده میکنم ولی جواب نمیده .تقاضای کمک برای یک کد خوب و استیبل برای گزارشگیری چند کاربره

mrm0101
یک شنبه 09 شهریور 1393, 00:44 صبح
فرض کنید شما در دینابیس یه جدول به نام students دارید .
یک datasource روی فرم قرار بدهید . و توی usersession یک دیتایست به نام mainprint از نوع adoquery داریم که به جدول students وصل می شود و نام آن MainPrintSource است.
کد زیر ابتدا گزارش را ایجاد و در یک حافظه stream قرار می دهد و سپس پی دی اف ان را دنلود می کند
توی usersession یک متغییر از نوغ TMemoryStream به نام PrintStream l معرفی می کنیم
حال کد زیر را اجرا می کنیم


UserSession.MainPrint.Close;
UserSession.MainPrint.SQL.Clear;
UserSession.MainPrint.SQL.Text:= 'select * from students';
UserSession.MainPrint.opn;

MainPrintSource.DataSet:= UserSession.MainPrint;
frxDBDataset1.DataSource:=MainPrintSource;
frxReport1.DataSet:=nil;

frxReport1.LoadFromFile(WebApplication.Application Path+'Reports\s1.fr3');

UserSession.PrintStream := TMemoryStream.Create;
frxPDFExport1.Stream := UserSession.PrintStream;

ForceDirectories(ExtractFileDir(frxPDFExport1.File Name));
frxReport1.PrepareReport;

try
frxReport1.Export(frxPDFExport1);
except
end;

try
WebApplication.SendStream(UserSession.PrintStream, False,'','report2.pdf');
except
end;

ariopax
جمعه 14 شهریور 1393, 14:59 عصر
باتشکرازپاسخ شما دوست عزیز
چندمورد پیش آمده را با شمادرمیان میگذارم امیدوارم وقت کنید وپاسخ دهید.
1- برنامه اگر این خط را نبدم Error میدهد .امابعدازبستن پاسخ میدهد .
الف-چطور آنرا حل کنم ؟
ب-این تکه کدبرای چیست ؟ //ForceDirectories(ExtractFileDir(frxPDFExport1.File Name));//error

2-اجرا در اینترنت اکسپلورر بدون مشکل میباشد.امادر فایرفاکس فونت آن بهم میریزد.ودر کروم چیزی نمایش نمیدهد.(چطوردردیگر Browserهامشکل حل شود؟)

3-اگربخواهم دکمه هائی برای بازگشت به صفحه قبل بگذارم چطور؟اگربخواهم دراینترنت اکسپلورر و کروم در تب جدید بازشود چه کدی لازم است؟

4-با تحت شبکه اجرا شدن مشکلی ایجادنخواهدشد؟

5-آیا از حافظه ایستگاههائی که آنرااجرامیکنند استفاده میشود یاازحافظه سرور؟

mrm0101
جمعه 14 شهریور 1393, 16:48 عصر
سلام
برای مشکل در فونت ، فونت استفاده شده را در فست ریپورت از نوع tahoma و کد پیج آن را از نوع arabic انتخاب کنید و در قسمت rtl را true ;kdn
دکمه back مرور گر در وب اپلیکشین ها کار نمی کندد. باید خودتون یک دکمه بذارید و کد آن را relase بنویسید
نوع نسخه اینتراوب استفاده شده را بگید؟

ariopax
جمعه 14 شهریور 1393, 21:22 عصر
باتشکر
نسخه بنده ورژن 14.0.13 میباشدبادلفی XE2 وفست ریپورت fr4_15_6_d16e.اما یک نسخه 14.0.32 دارم که دکمه Back درآن کارمیکند.بسته به تنظیمی که انجام میشوددر یونیت ServerController
فونت از نوع Tahoma میباشد.اما کدپیچ در کجا تنظیم شود وrtl درکجا؟
1-درضمن آن خط کدی که کار نمیکند برای چیست ؟وچطوررفع ایرادشود؟
2-در اینکه چند کاربر از این گزارش استفاده کنندمشکلی پیش نمی آید؟حافظه از کجاست ؟سرور یا استیشن ؟

باتشکرفراوان

mrm0101
شنبه 15 شهریور 1393, 00:48 صبح
سلام برای فهمیدن خطا باید برنامه را ببینم .
در هیچ نسخه اینتراوب دکمه بک کار نمی کند . در نسه 14.32 هم گزینه ای قرار داده تا کاربر در صورت کلک روی بک پیام خطا یا هشدار نشان داده شود
وقتی پی دی اف گزارش ایجاد شود روی مموری سرور ذخیره و سپس دانلود می شود و تلاقی کاربران ایجاذ نمی شوذ
در فست ریپرت وقی یک شی از نو text روی گزارش می گذارید در فسمت خصوصیات ابجکت هم گزینه فونت هست که بعد از نماش نو ع فوت کد پیج ان گه زیر اسم فونت بصورت پیش فرض westerm هست را به arabic تعییر دهید و در قسمت خصوصیات ابجکت گزینه rtl را True کنید

ariopax
دوشنبه 17 شهریور 1393, 22:46 عصر
سلام
چطور صفحه گزارش در یک صفحه جدید(تب جدید) باز شود؟

دلفــي
چهارشنبه 02 مهر 1393, 17:26 عصر
در هیچ نسخه اینتراوب دکمه بک کار نمی کند . در نسه 14.32 هم گزینه ای قرار داده تا کاربر در صورت کلک روی بک پیام خطا یا هشدار نشان داده شود


اگر خاصيت History را در يونيت ServerController بر روي True قرار بديد مي تونيد از دكمه ي Back مرورگر خود استفاده كرده و به صفحه ي قبل برگرديد ولي فقط آخرين ارسالي صفحه ي Html ارسال شده از طرف سرور نمايش داده خواهد شد و اطلاعات refresh و به روز رساني نخواهند شد به عبارت ساده تر شما در حالت Offline صفحه ي قبلي را مشاهده خواهيد كرد ، توصيه مي شود از اين خاصيت استفاده نكنيد .