PDA

View Full Version : ارتباط Crystal Report با adodc



ali190
چهارشنبه 05 آبان 1389, 22:04 عصر
باسلام
دوستان میخواستم بدونم ارتباط vb6 با crystal report از طریق adodc چگونه است
اگر امکان داره این قضیه رو از طریق یک پروژه نمونه مطرح فرمائید
یاعلی

ali190
پنج شنبه 06 آبان 1389, 15:04 عصر
باسلام و عرض خسته نباشید
دوستان در نمونه زیر اطلاعات ابتدا توسط فیلدهای مختلف فیلتر میشوند
هدفم اینست که اطلاعات بعد از فیلتر شدن توسط دکمه گزارش در ریپورتی که توسط کریستال ریپورت درست کردم نمایش داده شوند
نمونه رو جهت اصلاح خدمتتون قرار یمدم
نکته : گزارش رو با کریستال ریپورت 2008 درست کردم و در پروژه ام از dll ورژن 9 کریستال ریپورت استفاده میکنم
ممنون میشم در برقراری ارتباط میان adodc و کریستال ریپورتر کمکم کنید
ممنون
یاعلی

Dr.Bronx
پنج شنبه 06 آبان 1389, 16:49 عصر
در بخش Crystal Report جناب In_Chand_Nafar آموزش دادند و نمونه های vb رو هم قرار دارند .

اون ها رو بگیرید مطالعه کنید کامل متوجه میشید .

موفق باشید ./

ali190
پنج شنبه 06 آبان 1389, 17:29 عصر
سلام
متاسفانه نتونستم نمونه ای از ایشون که در رابطه با نحوه اتصال adodc به کریستال ریپورتر باشه رو نیافتم
اگر امکانش هست فایل ضمیمه ای رو که خدمتتون قرار دادم رو برام اصلاح بفرمائید
ممنون و متشکر
یاعلی

vbhamed
جمعه 07 آبان 1389, 01:24 صبح
سلام

اينم يك نمونه يك البته فقط براي جستجو در فيلد فاميل تغيير دادم
براي بقيه هم بايد رشته جستجو رو تشكيل بدين

ali190
جمعه 07 آبان 1389, 09:24 صبح
سلام
جناب vbhamed عزیز ممنون از شما
ولی ارور میده
تصویر خطا رو خدمتتون قرار میدم


http://barnamenevis.org/forum/attachment.php?attachmentid=59242&stc=1&d=1288332779


من در واقع میخوام بعد از فیلترسازی داده هام نتیجه فیلتر (جستجو) در گزارش نمایش داده بشه که این نتیجه جستجو همان عبارت اس کیو ال strQuery هست
در واقع میخوام منبع گزارش (source) عبارت strQuery باشد که نتیجه یک جستجوی تودر تو هست
مثلاً در همین مثال من سورس adodc1 رو برابر این عبارت قرار دادم:

Adodc1.RecordSource = strQuery

حالا میخوام report source ام رو مساوی این عبارت strQuery بذارم
ممنون از لطف شما

vbhamed
جمعه 07 آبان 1389, 14:54 عصر
سلام

دستور جستجوي نمونه كه من گذاشتم رو ببينيد، اون رو خودم تست كردم كار مي كنه
اگر دقت كنيد نام فيلد با جدول اومده و داخل آكولادد هم بايد باشه ولي در ADODC داخل آكولاد نيست
بنابراين موقع تبديل بايد براي نام فيلدها آكولاد هم بزاريد

همون تابعي كه براي ساخت دستور SQL براي ADODC نوشتين رو براي كريستال هم بازنويسي كنيد

ali190
جمعه 07 آبان 1389, 16:05 عصر
باسلام و عرض خسته نباشید
جناب vbhamed عزیز ممنون از راهنما ییهاتون
با الهام از راهنماییهای شما تونستم از طریق adodb اطلاعات رو در کریستال ریپورت نمایش بدم ، با مشاهده چند نمونه دیدم که اکثر ارتباطات بین vb6 و کریستال از طریق adodb انجام میگیره
خواهشاً این نمونه رو مشاهده بفرمائید (http://barnamenevis.org/forum/attachment.php?attachmentid=59263&stc=1&d=1288356302)

اما از آنجائیکه سرچ وفیلترینگ اطلاعات بنده در adodc انجام میپذره میخوام کمکم کنید تا بتونم نتیجه فیلترینگ adodc رو که یک عبارت sql است رو به adodb منتسب کنم
این کار رو تا حدودی انجام دادم فقط یک جا خطا میگیره که به کمک شما نیازمندم

خواهشاً نمونه دوم رو مشاهده بفرمائید (http://barnamenevis.org/forum/attachment.php?attachmentid=59262&stc=1&d=1288356302)

من عبارت strQuery رو که یک عبارت sql هست و از نتیجه فبلتر adodc بیرون میاد رو در قسمت general تعریف کردم تا بتونم اون رو به adodb فرم frm_preview منتسب کنم
خواهشاً به ShowGrid فرم frm_preview دقت بفرمائید
یک متغیر x تعریف کردم و مقدار اون رو :

x = Chr(34) & strQuery & Chr(34)
در واقع عبارت sql رو از طریق chr(34) شبیه سازی کردم
با تمام این توضیحات باز هم پیغام خطای زیر رو دریافت میکنم


http://barnamenevis.org/forum/attachment.php?attachmentid=59264&stc=1&d=1288357459


ممنون و متشکر از لطف شما
یاعلی

vbhamed
جمعه 07 آبان 1389, 18:03 عصر
سلام

فكر كنم شما به توضيحات پست قبلي توجه نكردين
اگر دقت كنيد گفتم تابع ساخت SQL رو بازنويسي كنيد نه اينكه از همون استفاده بشه
strQuery شما براي ADO و كريستال با هم فرق دارن
براي كريستال نام فيلدها بايد داخل آكولاد باشه {نام جدول.نام فيلد}
ضمنا در مورد كريستال فقط شرط رو بزاريد و دستور SELECT و From و ... و همچنين دستورات مرتب سازي يعني Order by و Group by نبايد داشته باشيد
به طور مثال يك چنين عبارتي بايد باشه :


Instr({table1.famil}, 'Rezaey') > 0 And {table1.name} = 'ali'

ali190
جمعه 07 آبان 1389, 18:28 عصر
سلام
ممنون از توضیحاتتون
خواهشاً این نمونه رو مشاهده بفرمائید (http://barnamenevis.org/forum/attachment.php?attachmentid=59263&stc=1&d=1288356302)

براي كريستال نام فيلدها بايد داخل آكولاد باشه {نام جدول.نام فيلد}

در این نمونه من هیچ کدام از فیلدها رو در آکولاد نذاشتم و منبع گزارشم رو به adodb منتسب کردم که همون عبارت :

Rs.Open "SELECT Table1.id, Table1.group, Table1.nam, Table1.famil, Table1.tavaloddate, Table1.tahsilat, Table1.sokoonat, Table1.ghad, Table1.pedar, Table1.nomre FROM Table1;", Conn, adOpenStatic, adLockOptimistic

است که یک عبارت Sql است و گزارش بدون هیچ خطایی اجرا شد
ولی در برنامه دوم (http://barnamenevis.org/forum/attachment.php?attachmentid=59262&d=1288356764) هم خواستم با همین نیت این کار رو انجام بدم که متاسفانه برنامه دچار خطا میشه
ممنون
یاعلی

vbhamed
شنبه 08 آبان 1389, 10:30 صبح
سلام

تو برنامه دومتون موقع اجراي Rs.Open x, Conn, adOpenStatic, adLockOptimistic در متد ShowGrid متغير x خالي هست و رشته sql نداره

ali190
شنبه 08 آبان 1389, 18:59 عصر
سلام
ممنون از جناب vbhamed عزیز بابت تذکر بجا و درستتون ، حق باشما بود ، x مقداری نداشت
در نمونه اصلاح شده مقدار x رو از طریق رجیستری مقداردهی کردم
ولی بازهم ارور دریافت میکنم
ممنون میشم نگاهی به نمونه بندازید
ممنون وم متشکر
یاعلی

ali190
یک شنبه 09 آبان 1389, 21:15 عصر
سلام
با کمک دوستان مشکلم حل شد
فایل نمونه رو جهت بهره برداری دوستان اینجا قرار میدم (http://barnamenevis.org/forum/attachment.php?attachmentid=59389&d=1288540065)
یاعلی