ورود

View Full Version : ADOQuery و FastReport



rezamahdizadeh
شنبه 13 مرداد 1386, 07:38 صبح
سوال کرده بودم فرض کنید گزارشی می خواهیم مشخصات دانشجویان را چاپ کند و با تغییر قسمت where در SQL مربوط به ADOQuery آن دانشجویان را انتخاب کنیم که این انتخاب در زمان Runtime خواهد بود اما متاسفانه Fast Report این را نمی فهمد چه کار می شود کرد؟ آقای کشاورز جواب داده بودند که Fast Report با تغییر Query مشگلی ندارد اگر امکان دارد نمونه برنامه زیر را جهت پاسخ به این سوال تکمیل کنید یا راهنمایی کنید که بتوان با آن بصورت اجرایی آن را پیاده سازی کرد. با تشکر از آقای کشاورز که حداقل این امیدواری را بوجود آوردند که راه حلی دارد از بقیه انتظارات بیشتری می رفت

babak869
شنبه 13 مرداد 1386, 09:37 صبح
سلام
شما باید ابتدا جدول اصلی رو به فست ریپورت متصل کنید(اختیاری و برای راحتی کار ) و صفحه گزارشتون رو طراحی کنید . یا میتونید کوئری رو وصل کنید و در خاصیت SQL اون بنویسید
SELECT * FROM Table1
و خاصیت Active اونو True کنید تا بتونید همه فیلدها رو ببینید .
بعد از اینکه فرم طراح گزارش رو تموم کردید و تست زدید اونوقت اگه از روش اول استفاده کردید جدول رو بردارید و گزارش رو به کوئری وصل کنید و اگه از روش دوم رفتید اون قسمت دستور SQL رو پاک کنید . حالا میتونید برنامه رو اجرا کنید و کاربر با هر مشخصات و در هر محدوده ای بخواد گزارش بگیره گزارش شما مشکلی نخواهد داشت

موفق باشید

rezamahdizadeh
شنبه 13 مرداد 1386, 10:55 صبح
با تشکر
من امتحان کردم نشد اگر امکان دارد یک نمونه برنامه بسازید و برایم به آدرس mahdizadeh_r@yahoo.com ارسال کنید.

rezamahdizadeh
شنبه 13 مرداد 1386, 11:09 صبح
آقای احدی من هم یک نمونه برنامه درست کرده ام اگر امکان دارد این را اصلاح کنید. نمونه برنامه در http://barnamenevis.org/forum/attachment.php?attachmentid=9898&d=1185705563 است.

Mah6447
سه شنبه 06 آذر 1386, 19:01 عصر
مرحله اول
ابتدا یک دیالوگ رو فرم بسازید.
این دیالوگ شامل یک لیبل ( شماره دانشجویی) و یک Editbox قرار دهید این EditBox در زمان
رانتایم گزارش شماره دانشجویی را از ورودی میگرید یک دکمه باتون روی فرم جهت تأیید قرار دهید.
یک EditBox دیگر در فرم قرار دهید و در تکست آن ' را قرار دهید در کد استفاده می شود ولی ویزیبل
آن را فالس کنید که دیده نشود.

Mah6447
سه شنبه 06 آذر 1386, 19:04 عصر
با کلیک بر رو باتون کد زیر را بنویسید.

AdoQuery1.SQL.Clear;
AdoQuery1.SQl.Add('Select * From T_Banks Where CodeDaneshgini='+Edit2.Text+Edit1.Text+Edit2.Text' );
')
AdoQuery1.Active=True;

Mah6447
سه شنبه 06 آذر 1386, 19:20 عصر
فایل گزارش شما با اجازه شما ویرایش کردم لطفا فقط یک فرم بسازید و در مسیر داخل
درایو دی پوشه استیودنت فقط با استفاده از فست ریپورت لود نمود و پرویو بگیرید.

Mah6447
سه شنبه 06 آذر 1386, 19:23 عصر
فست ریپورت قابلیت های زیادی دارد بهترین قابلیت آن نسبت به RB استفاده از رابطه پدر و
فرزندی در حین گزارش سازی است ولی RB این قابلیت را تا زمانی در حین ایجاد گزارش به شما
می دهد که شما کد SQL آن را تغییر نداده باشی.

Mah6447
سه شنبه 06 آذر 1386, 19:29 عصر
بنده مطلب در رابطه پدر و فرزندی در حین اجرای گزارش ندیدم شاید هم هست من پیدا نکردم .

فست ریپورت قابلیت های زیادی دارد بهترین قابلیت آن نسبت به RB استفاده از رابطه پدر و
فرزندی در حین گزارش سازی است ولی RB این قابلیت را تا زمانی در حین ایجاد گزارش به شما
می دهد که شما کد SQL آن را تغییر نداده باشی.

Query1 , Query2 را در نظر بگیرید که دارای فیلد مشترکی به نام Code باشند.
و می خواهید Query2 فرزند Query1 باشد کافیست Master شیی Query2 را به اولی وصل
نمایید و در انتهای کد Query 2 کد زیر را بنویسی Where Code=:Code