ورود

View Full Version : سوال: عدم تشخیص کلاس tfrxAdoDatabase در فست ریپورت



u.2u.4u
یک شنبه 30 آبان 1389, 21:12 عصر
با سلام خدمت همه دوستان و اساتید.
برای درست کردن یک گزارش master-detail از این جهت که لازم بود به چندتا جدول وصل بشم، تو خود فست ریپورت یک کانکشن به دیتابیس ایجاد کردم (ADODatabase). و بعد با استفاده از این کانکشن به جداول ado وصل شدم. حالا نمی دونم تا اینجای کار اصولی هست یا روش بهتری هم داره.اگه داره لطفا توضیح بدید.
به هر حال زمانی که می خوام برنامه را کامپایل و اجرا کنم، برنامه خطا می ده که کلاس TfrxADODatabse وجود نداره. علت این خطا چیه و برای حلش باید چیکار کنم؟
60679
یه مشکل دیگه که پیش میاد اینه که هر بار که دفعه اول وارد ادیت گزارش می شم، اگر آدرس نسبی به کانکشنم داده باشم، یعنی با توجه به اینکه توی روت برنامه هست فقط اسم دیتابیس را نوشته باشم، باز هم خطا می ده که در myDocuments همچین دیتابیسی وجود نداره و به این ترتیب مجبورم دوباره وارد کانکشن بشم بهش آدرس دهی کنم. البته با آدرس مطلق مشکل نداره. ظاهرا فولدر اصلی برنامه را تشخیص نمی ده. برای حل این یه مشکل باید چیکار کنم؟
60680
60681

Touska
دوشنبه 01 آذر 1389, 08:49 صبح
شما احتمالا Package ها FastReport خود را بصورت کامل نصب نکردید :

شما این dclfrxADO?.dpk را که علامت سئوال نگارش دلفی هست نصب نکردید.

u.2u.4u
دوشنبه 01 آذر 1389, 13:42 عصر
نمی دونم درست تشخیص می دم یا نه، اما فکر کنم همچین چیزی نصب شده:

vcldeveloper
دوشنبه 01 آذر 1389, 19:05 عصر
برای درست کردن یک گزارش master-detail از این جهت که لازم بود به چندتا جدول وصل بشم، تو خود فست ریپورت یک کانکشن به دیتابیس ایجاد کردم (ADODatabase). و بعد با استفاده از این کانکشن به جداول ado وصل شدم. حالا نمی دونم تا اینجای کار اصولی هست یا روش بهتری هم داره.اگه داره لطفا توضیح بدید.
لازم نبود که حتما در داخل فست ریپورت این کار را انجام بدید. اگر از دیتاست های موجود در برنامه خودتان هم استفاده می کردید و آنها را با استفاده از frxDBDataset به فست ریپورت معرفی می کردید، می تونستید این کار را انجام بدید.

علت بروز اون خطا این هست که یونیت مربوط به اون کامپوننت در سورس کد شما use نشده. می تونید ازلیست کامپوننت های نصب شده، در گروه FastReport، کامپوننت frxADOComponents را روی فرم بیاندازید، یا اینکه مستقیما خودتان frxADOComponents را به لیست uses فرم تان اضافه کنید.

u.2u.4u
سه شنبه 02 آذر 1389, 05:53 صبح
گر از دیتاست های موجود در برنامه خودتان هم استفاده می کردید و آنها را با استفاده از frxDBDataset به فست ریپورت معرفی می کردید، می تونستید این کار را انجام بدید.
ببخشید مشکل من هم همین بود. زمانی که از طریق منوی (گزارش-->داده...) یک دیتا ست را اضافه می کنیم، روی درخت داده نمایش داده میشه اما نمی تونیم به خصوصیت master یا هر خصوصیت دیگری از اون دست پیدا کنیم چون روی صفحه کنترل های داده قابل دسترسی نیست.
توی کنترلهای جعبه ابزار داده هم چیزی به نام frxDataset وجود ندارد.

hp1361
سه شنبه 02 آذر 1389, 08:34 صبح
سلام

اگه اشتباه نکنم منظور آقای کشاورز اینه که frxDBDataset رو روی فرم یا ماژول تون قرار بدید و به گزارش معرفیش کنید.نکه از توی محیط گزارش سازی فست ریپورت frxDataset اضافه کنید(چون نوشتین از طریق منوی (گزارش-->داده...) بداشت من اینه که در محیط فست ریپورت دارید سعی میکنید کاری رو که آقای کشاورز گفتن انجام بدین که قاعدتا نمیشه!)

vcldeveloper
سه شنبه 02 آذر 1389, 11:14 صبح
ببخشید مشکل من هم همین بود. زمانی که از طریق منوی (گزارش-->داده...) یک دیتا ست را اضافه می کنیم، روی درخت داده نمایش داده میشه اما نمی تونیم به خصوصیت master یا هر خصوصیت دیگری از اون دست پیدا کنیم چون روی صفحه کنترل های داده قابل دسترسی نیست.
چرا میخواید به خصوصیت MasterSource یا MasterField آن دسترسی پیدا کنید؟!

شما بین اون دو دیتاست در دلفی رابطه Master/Detail برقرار کنید، و هر دو را هم با استفاده از frxDBDataset به داخل گزارش تون بیارید. حالا فقط کافیه که یک باند داده را به جدول master تان اختصاص بدید، و یک باند داده را هم به جدول detail. در زمان نمایش گزارش، فست ریپورت به طور خودکار رکوردهای جدول master را فراخوانی میکنه، و این کار باعث میشه که دلفی به طور خودکار رکوردهای مرتبط با آن رکورد را در جدول detail لود کنه، و فست ریپورت هم رکوردهای جدول detail را در گزارش نمایش بده.

u.2u.4u
سه شنبه 02 آذر 1389, 11:36 صبح
نمی دونم از چه مسیری باید وارد بشم. هرچه که تو محیط دلفی، دنبال خصوصیات دیتاست های frx می گردم، محلی که بشه مستر و دیتیل را مشخص کرد پیدا نمی کنم. میشه دقیقا بگید چه مراحلی را باید طی کرد؟

vcldeveloper
سه شنبه 02 آذر 1389, 16:29 عصر
نمی دونم از چه مسیری باید وارد بشم. هرچه که تو محیط دلفی، دنبال خصوصیات دیتاست های frx می گردم، محلی که بشه مستر و دیتیل را مشخص کرد پیدا نمی کنم.
توی frxDBDataset که نباید باشه، گفتم در دیتاست های خودِ دلفی، یعنی مثلا AdoQuery یا AdoTable ایی که استفاده می کنید. شما اونها رو با هم Master\Detail کنید، و یک frxDBDataset رو به جدول Master اختصاص بدید، و یک frxDBDataset رو هم به جدول Detail. در این حالت، فست ریپورت کاری به کار ارتباط Master\Detail شما نداره، فست ریپورت فقط از طریق frxDBDataset ها داده ایی که دلفی در اختیارش میزاره رو نمایش میده.

u.2u.4u
سه شنبه 02 آذر 1389, 16:39 عصر
توی frxDBDataset که نباید باشه، گفتم در دیتاست های خودِ دلفی، یعنی مثلا AdoQuery یا AdoTable ایی که استفاده می کنید. شما اونها رو با هم Master\Detail کنید،
adotable ها این امکان را دارند ولی توی کوئری ها همچین چیزی نیست و بیشتر کار من با کوئری هاست. می شه بگید برای ADOQuery ها باید چکار کنم؟
علاوه بر این یه مشکل دیگه هم دارم. توی Adotable ها هم، در قسمت mastersource هیچ جدولی دیده نمی شه.

vcldeveloper
سه شنبه 02 آذر 1389, 16:59 عصر
adotable ها این امکان را دارند ولی توی کوئری ها همچین چیزی نیست و بیشتر کار من با کوئری هاست. می شه بگید برای ADOQuery ها باید چکار کنم؟
برای کوئری می تونید پارامتر تعریف کنید و از طریق پارامتر این کار رو انجام بدید. اگر در Master\Detail کردن مشکل دارید، اون رو در یک تاپیک جداگانه مطرح کنید، چون به فست ریپورت مربوطه نمیشه. البته چند بار قبلا توضیح داده شده.