PDA

View Full Version : نحوه ی گزارش گرفتن از Join دو جدول به کمک FastReport?



AlirezaBahredar
یک شنبه 21 مرداد 1386, 09:29 صبح
باسلام....
از دوستان کسی می دونه چجوری میشه نتیجه یک Join ساده بین 2 جدول مرتبط به هم رو با کمک ADOQuery وFastReport نشون داد.......
با تشکر

Batman
یک شنبه 21 مرداد 1386, 09:55 صبح
با سلام
دوست عزیز لطف کنید و نام فیلدها و نام جدول را بگید تا راحت تر و دقیقتر جواب بگیرید
موفق باشید

AlirezaBahredar
یک شنبه 21 مرداد 1386, 10:20 صبح
با سلام
دوست عزیز لطف کنید و نام فیلدها و نام جدول را بگید تا راحت تر و دقیقتر جواب بگیرید
موفق باشید

مطلب روشن هست...با این وجود یک مثال می زنم
فرضا TableAبا فیلد های (ID,Name,Family,Number)و TableBبا فیلدهای(ID,Address,Tel)را داریم
با کمک دستور JOIN دوتا جدول رو به هم متصل می کنیم(البته با کمک فیلد مشترک ID) حال قصد دارم با دستور زیر نتیجه رو با کمک ADOQuery وFastReport چاپ کنم:
SELECT TableA.Nme,TableA.Family,TableA.Number,TableB.Addr ess,TableB.Tel
FROM TableA INNER JOIN TableB
ON TableA.ID=TableB.ID

Batman
یک شنبه 21 مرداد 1386, 11:30 صبح
با سلام دوست عزیز شما خودت کد رو نوشتی خوب بعد از فیلتر شدن جدول
توی fastreport باید دوتا جدول رو باز کنی و هر فیلدی رو که لازم داری توی صفحه طراحی بذاری همین
موفق باشید

AlirezaBahredar
یک شنبه 21 مرداد 1386, 11:44 صبح
با سلام دوست عزیز شما خودت کد رو نوشتی خوب بعد از فیلتر شدن جدول
توی fastreport باید دوتا جدول رو باز کنی و هر فیلدی رو که لازم داری توی صفحه طراحی بذاری همین
موفق باشید

میشه بیشتر راهنمایی کنی.....ببین من می خوامنتایج یک ADOQoury روبه fastreport منتقل کنما...متوجه هستید؟
ممنون.....

Batman
یک شنبه 21 مرداد 1386, 11:56 صبح
با سلام
آره عزیز میدونم
همونطوری که در پست قبلیم اشاره کردم شما همون جداولی رو که join میکنی از منوی report گزینه data رو انتخاب کن و جداولی رو که می خوای انتخاب کن و سپس فیلدهایی رو که نیاز داری رو صفحه بذار شما زمانیکه تو برنامه فیلتر رو انجام بدی خود query به همون شکل توی fastreport نمایش داده میشه
موفق باشید

AlirezaBahredar
یک شنبه 21 مرداد 1386, 12:13 عصر
با سلام
آره عزیز میدونم
همونطوری که در پست قبلیم اشاره کردم شما همون جداولی رو که join میکنی از منوی report گزینه data رو انتخاب کن و جداولی رو که می خوای انتخاب کن و سپس فیلدهایی رو که نیاز داری رو صفحه بذار شما زمانیکه تو برنامه فیلتر رو انجام بدی خود query به همون شکل توی fastreport نمایش داده میشه
موفق باشید
دوست عزیز....
با تشکر از اظهار نظرات شما....ولی اگر به مطلبی بطور کامل اشراف ندارید خواهشا موردی را ذکر نکنید که باعث سردرگمی دوستان دیگر شود......

vcldeveloper
یک شنبه 21 مرداد 1386, 15:52 عصر
دوست عزیز....
با تشکر از اظهار نظرات شما....ولی اگر به مطلبی بطور کامل اشراف ندارید خواهشا موردی را ذکر نکنید که باعث سردرگمی دوستان دیگر شود......
دوست عزیز، اگر خوب به مطلب نوشته شده دقت می کردید، دچار سردرگمی نمی شدید!

مطلب از این قراره که برای FastReport فرقی نمی کنه که شما از Join استفاده می کنید، یا داده ها را از یک یا چند جدول می گیرید. FastReport از شما DataSet می خواد. شما هر کد SQL ایی در AdoQuery یا هر کامپوننت مشتق شده از TDataSet بنویسید، نتیجه آن بصورت یک RecordSet برگشت داده میشه. FastReport هم از شما همین را می خواد.
شما باید یک frxDataSet بر روی فرم برنامه قرار بدید و آن را به AdoQuery مورد نظر متصل کنید.
حالا می تونید در داخل FastReport Designer از منوی Report گزینه Data... را انتخاب کنید و نام frxDataSet مربوطه را انتخاب کنید تا این دیتاست در FastReport قابل دسترس باشد. بعد از انجام این کارها، می توانید گزارش خود را طراحی کنید.
این روش برای همه کامپوننت های مشتق شده از TDataSet صدق می کند.

امیدوارم دوباره دچار سردرگمی نشده باشید

AlirezaBahredar
دوشنبه 22 مرداد 1386, 09:05 صبح
ممنون....بابت توضیحات
شاید اشکال از نحوی بیان من بوده....ببینید دستورات SQL من زمان RunTime ایجاد میشه...بنابراین من نمی دونم چه تعداد فیلدی باید برای گزارشم در نظر بگیرم...گرچه تعداد ماکزیمم فیلدهای من در یک گزارش حداکثر 10 فیلد می باشد.
ممنون میشم راهنماییم کنید.

vcldeveloper
دوشنبه 22 مرداد 1386, 11:26 صبح
من نمی دونم که طرح گزارش شما به چه شکلی است، اما می تونید یا کنترل های مختلف را بر روی گزارش خود قرار دهید و قبل از چاپ مقدار هر یک از آنها را با نام فیلدهای برگشت داده شده از Query تعویض کنید (مثلا در متد OnBeforePrint گزارش یا از طریق Script نویسی).
یا اینکه خودتان بطور دینامیک کنترل ها را ایجاد کنید و آنها را مقداردهی کنید که در صورت پیچیده بودن گزارش، کار سخت و زمان بری خواهد بود.