ورود

View Full Version : معرفی Database به Report در VB6



A.Farzin
شنبه 18 فروردین 1386, 17:29 عصر
با سلام

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

دیتابیس من SQL Server 2000 و کدهایم با VB 6.0 است و با OLE DB به آن متصل می‌شوم. ریپورتم (Report1.Rpt) را کریستال ریپورت 9ساخته‌ام و از طریق کد زیر گزارشم را در برنامه اجرا می‌کنم.


Dim crApp As New CRAXDRT.Application
Dim crReport As New CRAXDRT.Report
Dim crDBTab As CRAXDRT.DatabaseTable

Set crReport = crApp.OpenReport(App.Path & "\Reports\Report1.Rpt")
crReport.Database.LogOnServer "p2ssql.dll", DbInstance, DatabaseName, "sa", ""

For Each crDBTab In crReport.Database.Tables
crDBTab.SetLogOnInfo DbInstance, DatabaseName, "sa", ""
Next

ولی مشکل اینجاست که:
1 - من دو دیتابیس 1 و 2 دارم که ساختار و طراحی هر دو دیتابیس کاملا شبیه هم است.
2 - محتویات دیتابیس 1 مربوط به شرکت الف و دیتابیس 2 مربوط به شرکت ب می‌باشد.
3 - برنامه به شکلی است که کاربر تعیین می‌کند این گزارش برای کدام شرکت باید تهیه شود آنگاه اتصال به همان دیتابیس برقرار و داده‌های همان شرکت به ریپورت ارسال می‌شود.
4 - مشکل این است که در تمام حالات، اطلاعات شرکت الف نشان داده می‌شود. علتش هم این است که من گزارش را بر اساس دیتابیس شرکت الف ساخته‌ام و حالا نمی‌دانم از طریق کد چگونه باید آنرا عوض کنم.

این موضوع را توسط خود کریستال ریپورت هم تست کردم و از طریق set database location اقدام به تغییر آنها کردم ولی در آنجا هم فقط اطلاعات شرکت الف می‌آمد.
جالب این است که در ‌properties اتصال اسم دیتابیس عوض می‌شود ولی با این حال موقع نمایش اطلاعات می‌بینم اطلاعات نمایش داده شده مربوط به شرکت الف است. مراحل کارم در این مورد عبارتست از:
1) من گزارش ساخته شده را در کریستال ریپورت باز کردم و از طریق set database location دیتابیس مربوط به شرکت ب را با Current data source گزارش جایگزین کردم
2) در درختواره بالایی همین پنجره (set database location) تمام properties مربوط به Current data source به خصوصیات دیتابیس شرکت ب تغییر کرد.
3) وقتی گزارش را به نمای پیش‌نمایش چاپ بردم، بازهم دیدم اطلاعات شرکت الف در گزارش آمده است.
4) از منوی Database فرمان Show SQL Query را اجرا کردم و دیده که در قسمت FROM این دستور اسن دیتابیس شرکت الف آمده است.

با سپاس از دوستان