ورود

View Full Version : ارتباط Rave و AdoQuery



ihpled
شنبه 14 اردیبهشت 1387, 21:42 عصر
با سلام

یک AdoQuery دارم که می خوام مقدار یک فیلد آن را در گزارش Rave داشته باشم.

در دلفی RvDataSetConnection1 ، را قرار می دم و DataSet آن را بر روی ADOQuery1 قرار می دم

و در گزارشی که دارم در ریو ریپورت طراحی می کنم با Direct Data View به RvDataSetConnection1 وصل میشم

و برای نمایش مقدار فیلد از DataText استفاده می کنم و همچون وصل شدن به فیلدهای یک جدول معمولی(AdoTable) ، گزینه DataView آن را بر روی DataView1 و DataField آن را روی DataView1.Fname قرار میدهم که Fname نام فیلد مورد نظر می باشد که در زمان اجرای برنامه ساخته می شود.

ولی پس از اجرا در دلفی به جای مقدار آن فیلد عبارت (invalid) را برای آن می نویسد.


کجای کار ایراد داشت و چگونه می توان مقدار فیلد یک کوئری را در Rave داشت
سپاس

echoes
چهارشنبه 18 اردیبهشت 1387, 20:26 عصر
fname ازچه نوع هستش، آيا Foreign Key هست؟

ihpled
چهارشنبه 18 اردیبهشت 1387, 23:07 عصر
Fname نام فیلدی از جدول می باشد که نه کلید اصلی می باشد و نه خارجی (معمولی)
ممنون میشم کمکم کنید
سپاسّّ

echoes
پنج شنبه 19 اردیبهشت 1387, 18:30 عصر
و نوعش؟ ضمنا از چه و‍رژني از دلفي استفاده مي كنيد؟

ihpled
جمعه 20 اردیبهشت 1387, 22:30 عصر
fname ازچه نوع هستش، آيا Foreign Key هست؟




و نوعش؟ ضمنا از چه و‍رژني از دلفي استفاده مي كنيد؟


مشخصاً First Name از نوع String هست و دلفی 7 استفاده میکنم.

این سوالات بعنی اینکه مراحلی که من انجام داده ام درست بوده؟

goldenagesoftware
سه شنبه 28 خرداد 1387, 15:50 عصر
آیا مطمئن هستید وقتی برنامه run میشه ADOQuery.Execute و ADOQuery.Open فراخوانی میشن؟

ihpled
چهارشنبه 12 تیر 1387, 21:07 عصر
بله، حتی رکوردهای ادوکوئری را در یک دیبیگیرید مشاهده می کنم و بعد گزارش را صدا می زنم.

البته با ادوتیبیل مشکل ندارم و یک جدول تمپوری تعریف کردم و تمامی رکوردها رو از کوئری به ادوتیبل میریزم و به گزارش میرم جواب میده!!

یعنی نمیشه مستقیما رکوردهای یک ادوکوئری را در گزارش ریو صدا زد؟
میشه یه مثال کوچیک بهم بدید

Hsimple11
چهارشنبه 12 تیر 1387, 22:38 عصر
بله میشود. مراحل کارتان مشکلی ندارد.
در Rave Designer زمان طراحی گزارش خود یک Preview بگیرید ببینید در آنجا مشکلی ندارد. اگر مشکلی نداشته باشد مشکل در کدهای برنامه تان برای فراخوانی کوئری است.

ihpled
جمعه 14 تیر 1387, 16:36 عصر
نه در طراحی ریو هم وقتی Preview می گیرم بازهم (invalid) میده! فکر هم نکنم کدهای گرفتن کوئری مشکل داشته باشه چون قبل از صدا زدن پرینت گزارش در ران تایم کوئری را در یک جدول می بینم و از صحت آن اطمینان دارم.

طریقه اتصال را هم که در پست اول کامل گفتم
ممنون میشم اگه یک کوئری کوچیک رو لینک تو ریو کنید و اینجا قرار بدید من که هرکاری کردم نشد‼

Hsimple11
جمعه 14 تیر 1387, 18:31 عصر
FieldName مربوط به Dataview1 خود را درست وارد کرده اید؟ یکبار خصوصیات مربوط به فیلد مورد نظر خود را در Rave Designer چک کنید.
این برنامه از یک Query یک گزارش ساده میگیرد.

ihpled
جمعه 21 تیر 1387, 20:42 عصر
ممنون یک چیزایی دستگیرم شد نحوه ارتباط یک ریپورت با یک کوئری با فیلدهای ثابت را فهمیدم اما

چون من در طول برنامه مدام مقدار ادوکوئری را برای دستورهای گوناگون تغییر میدم وقتی ادوکوئری مورد نظر برای گزارش بدست می آید باید در برنامه ریوریپورت در پنل سمت راست DataView1 را رفرش کنم تا نام فیلدهای جدید را بفهمد.

حالا چجوری میشه Dataview1 را که در ریو ریپورت وجود دارد در کدهای برنامه در رانتایم رفرش نمود؟

Hsimple11
شنبه 22 تیر 1387, 00:06 صبح
حالا چجوری میشه Dataview1 را که در ریو ریپورت وجود دارد در کدهای برنامه در رانتایم رفرش نمود؟

برای اینکار از متد CreateFields استفاده کنید :


uses
RVData;
procedure TForm1.button1Click(Sender: TObject);
var
DataView: TRaveBaseDataView;
begin
RaveProject1.Open;
With RaveProject1.ProjMan do begin
Dataview := FindRaveComponent('Dataview1',nil) as TRaveBaseDataView;
CreateFields(DataView, nil, nil, true);
end;
if RaveProject1.Design then begin
RaveProject1.Save;
end;
end;
end;

ihpled
دوشنبه 24 تیر 1387, 15:29 عصر
ممنون
کد شما پس از اجرا در این خط


if RaveProject1.Design then begin


پیغام ارور زیر رو میده:
Error loading rave.dll

ممنون میشم خودتون هم این کد رو تست کنید و من رو راهنمایی فرمایید

Hsimple11
دوشنبه 24 تیر 1387, 19:20 عصر
این کد مربوط به Rave4 است. اگر از ورژن پایین تری استفاده می کنید در TRaveBaseDataView را به TRaveDataView تغییر دهید.

ihpled
دوشنبه 24 تیر 1387, 21:29 عصر
نه از دلفی 7 و ریو ورژن 5 که دیفالت روش نصب هست استفاده می کنم

تو اینترنت سرچ کردم یک فایل با نام rave.dll پیدا کردم البته فکر نکنم ارتباطی به rave report داشته باشه و از فایل های 3dmax بود چون مخفف این بود Rendering Acceleration Virtual ، اونو تو system32 کپی کردم دیگه اون ارور رو نداد ولی این بار میگه:
َAccess Violation at address 00000000, read of address 00000000

می خواستم شما این کد رو اجرا کنید و اگر مشکلی باهاش ندارید فایل rave.dll صحیح را که احتمالا تو system32 هست اینجا قرار بدید.

شاید هم مشکل جور دیگه ای حل بشه
ممنون میشم کمک کنید تا این بحث به نتیجه برسه
سپاس

Hsimple11
سه شنبه 25 تیر 1387, 01:43 صبح
این dll تنها در نشخه Pro ابزار Rave موجود است. سایتهای http://www.dll-files-download.com و http://www.dlldll.com را جستجو کنید. امیدوارم بیابید!

ihpled
چهارشنبه 26 تیر 1387, 16:55 عصر
فایل رو از هر دو سایت گرفتم با اینکه مطمئن نبودم برای Rave Report باشن کپی کردم و همان ارور مموری 00000000 رو داد.

یه کد تو Run میزدیم که فایل های ocx رو ویندوز رجیستر کنه از اون کارا نمی خواد انجام بدم؟

Hsimple11
چهارشنبه 26 تیر 1387, 17:08 عصر
استفاده از ProjectManager در Rave کاربری های زیادی را مانند همین Update کردن Dataview ها به شما میدهد ولی فکر نمیکنم بدون نسخه Pro بتوانید آن را انجام دهید. شاید راه دیگری وجود داشته باشد که من از آن بی اطلاعم .

ihpled
پنج شنبه 27 تیر 1387, 00:20 صبح
ممنون دوست من از کمک های خوبت میرم دنبال rave pro تا پیداش کنم
آخه نمیدونم چرا این قدر کار کردن با فست ریپورت یا بقیه ریپورت ها برام سخته و واقعا با ریو راحت ترم