PDA

View Full Version : مشکل با Crystal Report در تعیین DataBase



picaso2008
پنج شنبه 16 اسفند 1386, 20:14 عصر
من می خوام با کریستال ریپورت گزارشی بسازم که شامل نمودار باشه.
وقتی که از طریق ویزارد خود کریستال یه کانکشن جدید به دیتابیس درست می کنم و در داخل کریستال هم یه نمودار درست می کنم و بعد هم با ReportViewer نشونش می دم
همه چیز به خوبی کار میکنه.
اما............اگه در مسیر دیتابیس تغییری ایجاد بشه مثلا نام پوشه ای عوض بشه دیگه هیچ چیزی نمایش داده نمی شه.
من می خوام مسیر دیتابیس را در هنگام اجرای برنامه بدست بیارم و بعد به کریستال ربطش بدم. کد بدست آوردن مسیر که اینه



string DataPath = Application.StartupPath+@"\Data\DataBase.mdb"; //1


حالا ( با توجه به اینکه من یکبار برای کریستال ریپورت تو حالت ویزارد ، کانکشن تعریف کردم و مسیر دیتابیس را مشخص کردم ) چطور می تونم این دیتابیس را در کد نویسی به کریستال ربط بدم که کریستال اطلاعات مورد نیازش را از این دیتابیس بخونه.


البته من چون می خوام نمودار طراحی کنم پس در اول کار مجبورم یه کانکشن جدید تو ویزارد کریستال ریپورت ایجاد کنم. چون برای رسم نمودار باید حتما یه سری فیلد باشه تا کریستال اجازه رسم نمودار را تو حالت طراحی بده.(ایا راه دیگه ای هم هست ؟؟)


یه سوال دیگه ==>> ایا می تونم یه دیتاست را که شامل اطلاعات یه جدول هست به عنوان منبع داده برای کریستال تعریف کنم تا اطلاعات را ازش بخونه ؟؟


راستی من از C# VS 2005 استفاده میکنم.و بانک اطلاعاتی هم Access

kasra_khan2003
یک شنبه 19 اسفند 1386, 20:03 عصر
من هم همین مشکل رو دارم، با VB .Net 2005 نوشتم، همون Access
کسی مسدونه به من هم بگه!!!

zaynab
یک شنبه 09 تیر 1387, 16:48 عصر
طریقه نصب wizard را مرحله ایی میشه بگید

Amirnikjoo
دوشنبه 10 تیر 1387, 10:01 صبح
salam be ham
man fekr mikonam moshkele shoma ba feature FIELD DEFINITION toye Crystal Report hal beshe

mpmsoft
دوشنبه 10 تیر 1387, 12:00 عصر
دوستان من فکر می کنم راه بهتر این باشه که DataSource رو پاس بدیم به گزارش ، نه اینکه مسیر پایگاه رو بدیم به کریستال و بگیم اون برامون عمل فیلترینگ رو انجام بده

ما فقط نتیجه رو پاس می دیم به کریستال

kablayi
سه شنبه 11 تیر 1387, 01:19 صبح
دوستان من فکر می کنم راه بهتر این باشه که DataSource رو پاس بدیم به گزارش ، نه اینکه مسیر پایگاه رو بدیم به کریستال و بگیم اون برامون عمل فیلترینگ رو انجام بده

ما فقط نتیجه رو پاس می دیم به کریستال

سلام ...
منم موافقم ... برای اینکه فقط مسیر رو پاس بدین بایستی توی available datasource از قسمت database Expert گزینه ole db رو انتخاب کنید و دیتابیس رو به اون معرفی کنید ... دیگه نیازی به مسیر دادن نیست فقط کافیه اسم دیتابیس رو بنویسید ... اینجوری
تصاویرو به ترتیب نگاه کنید ...

http://barnamenevis.org/forum/attachment.php?attachmentid=19735&d=1214860690
http://barnamenevis.org/forum/attachment.php?attachmentid=19736&d=1214860690
http://barnamenevis.org/forum/attachment.php?attachmentid=19737&d=1214860690
http://barnamenevis.org/forum/attachment.php?attachmentid=19738&d=1214860690
http://barnamenevis.org/forum/attachment.php?attachmentid=19739&d=1214860690
بعد این دستورات رو در فرم لودتون که قراره گزارش درون اون نمایش داده بشه بنویسید البته یه crystalreportview روی فرم بزارید ...



Dim strConnection As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBTaxitellFile.accdb"
Dim Connection As New OleDbConnection(strConnection)
Dim strSQL As String = "Select * From drivers where ID='" & textbox1.text & "'"
Dim DA As New OleDbDataAdapter(strSQL, Connection)
Dim DS As New DataSet
'Variable to assign the report name
Dim strReportName As String

DA.Fill(DS)
'Pass the reportname to string variable
strReportName = "CardReport"

'Get the Report Location
Dim strReportPath As String = Application.StartupPath & "\" & strReportName & ".rpt"
'Check file exists
If Not IO.File.Exists(strReportPath) Then
Throw (New Exception("Unable to locate report file:" & vbCrLf & strReportPath))
End If

'Assign the datasource and set the properties for Report viewer
Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent

rptDocument.Load(strReportPath)
rptDocument.SetDataSource(DS.Tables(0))
rptViewer.ShowRefreshButton = False
rptViewer.ShowCloseButton = False
rptViewer.ShowGroupTreeButton = False
rptViewer.ReportSource = rptDocument


اگر مشکلی داشتین در خدمتم ...

موفق باشید ...

shervin_agh67
دوشنبه 25 شهریور 1387, 00:12 صبح
حالا من یک مشکل مشابه دارم اگر دیتابیس رو از نوع ADO.net بگذارید . زمانی که برنامه اجرا بشه هیچی نشون نمیده . کسی می دونه دلیلش چیه؟ من از dataset های پروژه ام استفاده می کنم اونا هم در قسمتهای دیگه برنامه مشکلی ندارن فقط با کریستال مشکل داره.