PDA

View Full Version : سوال: crystal report



sahar1982
شنبه 30 اردیبهشت 1391, 12:53 عصر
درود. من در برنامه نویسی یک پروژه که از پایگاه داده استفاده کرده ام از crystal report برای پرینت و خروجی داده به صورت export در excel می خواهم کمک بگیرم. در بخش پرینت مشکلی ندارد ولی برای خروجی Excel عمل نمی کند. از دستور زیر برای Export استفاده کرده ام.
Dim Save As New System.Windows.Forms.SaveFileDialog

If Save.ShowDialog() = Windows.Forms.DialogResult.OK Then

RPT.ExportToDisk(CrystalDecisions.Shared.ExportFor matType.PortableDocFormat, Save.FileName)

End If

با توجه به اینکه تمامی اطلاعات خوانده می شود و در Browser پرینت نشان داده می شود، ظاهراً نباید مشکلی در دریافت اطلاعات باشد. ممنون می شوم اگر کمک نمایید که ممکن است ایراد کارم در کدام مرحله باشد.
با سپاس فراوان

oranoos
یک شنبه 31 اردیبهشت 1391, 09:28 صبح
سلام
دوست عزیز شما وقتی از کریستال ریپورت استفاده می کنید خودش این امکان رو به شما می ده که به صورت فایل اکسل یا متنی فایل رو ذخیره کنید و نیازی به کد نوشتن نداره

sahar1982
یک شنبه 31 اردیبهشت 1391, 10:39 صبح
تشکر می کنم از توجه شما.
فکر میکنم منظورتون گزینه export to report در tab مربط به Main report preview هست. من یه فرم برای خروجی پرینت و export طراحی کردم که کاربر بتونه از اونجا این گزینه ها رو انتخاب کنه. چه جوری می تونم برای اون button فرایندexport رو معرفی کنم؟

barnamenevisforme
یک شنبه 31 اردیبهشت 1391, 19:53 عصر
سلام
امیدوارم این نمونه به کار بخوره

sahar1982
دوشنبه 01 خرداد 1391, 12:31 عصر
واقعاً ممنونم. خیلی عالی بود. لطف کردید.

sahar1982
دوشنبه 01 خرداد 1391, 13:48 عصر
barnamenevisforme:
من یه Table رو میخوام خروجی بگیرم دستور زیر رو می نویسم ولی فقط Header ro mindaze . درواقع اون موقع که جواب بالایی و نوشته بودم جدولم مقدار نداشت فکر کردم درست بوده. الان متوجه شدم. میشه در این مورد هم راهنمایی بفرمایید. من تو Public class form یه Event جدید با code زیر ایجاد کردم:

Public Sub New(ByVal DT As DataTable, ByVal ParNames() As String, ByVal ParValues() As String)
' This call is required by the Windows Form Designer.
InitializeComponent()
Dim rpt As New CrystalReport1
rpt.SetDataSource(DT)
myCrystalReportViewer.ReportSource = rpt
End Sub

( ببخشید چون نمی دونم چه جوری باید به شیوه مناسبتری کد ها رو Paste کنم.)

تو فرمی که می خوام پرینت یا اکپورت کنه برای اون Button این code رو نوشتم:
Dim dt As DataTable
dt = data.SetTableWithProcedure("show_FRP")
Dim frm As New Form2(dt, New String() {}, New String() {})
frm.Show()
ولی دیتاهای DT رو نمی خونه. باید چیکار کنم؟

barnamenevisforme
دوشنبه 01 خرداد 1391, 17:14 عصر
سلم
از بررسی کد چیزی متوجه نشدم.
آیا قبل از export کردن report شما موفق شدید data رو در reportviewr نمایش بدید؟
همچنین

Me.CrystalReport11.SetDataSource(Form2.mydataset)
'aval inke bayad datasource dataset bashe na data table
Me.CrystalReportViewer1.RefreshReport()
'dovom bayad vase eemale taghirat refreshreport ro call konid

sahar1982
سه شنبه 02 خرداد 1391, 11:57 صبح
نه مشکلم دقیقاً همینه که دیتاهای توی جدول رو تو Report نشون نمیده فقط header text هایی که تعریف کردم رو نشون میده. اگه source رو بذارم dataset بازم نشون نمیده داده ها رو . شاید دستور وارد کردن data رو تو report اشتباه می نویسم. من تو کد بالا یه DT از اون جدولی که می خواستم ایجاد کردم. بعدش source ریپورت رو همین DT معرفی کردم. آیا روشی دیگه ای برای معرفی جدول مورد نظرم برای اینکه تو report بیاد باید اتخاذ کنم؟

barnamenevisforme
سه شنبه 02 خرداد 1391, 19:45 عصر
'databadse name=my_database table name=tbl_sample
Dim mySelectQuery As String = "SELECT * FROM tbl_sample WHERE name= @p1"
Dim myConnectionString As String
myConnectionString = My.Settings.my_databaseConnectionString.ToString
Dim myConnection As New System.Data.SqlClient.SqlConnection(myConnectionSt ring)
Dim mycommand As New System.Data.SqlClient.SqlCommand(mySelectQuery, myConnection)
mycommand.Parameters.Add("@p1", SqlDbType.VarChar).Value = UsernameTextBox.Text
Try
myConnection.Open()
Catch
Dim rsl As MsgBoxResult = MsgBox("ایراد در برقراری ارتباط با پایگاه داده،لطفا موارد زیر را چک کنید:ا" + vbCrLf + "کامپیوتر سرور روشن است؟" + vbCrLf + "قرار دارد؟ start در حالتsql server" + vbCrLf + "درست تنظیم شده؟ server name", MsgBoxStyle.MsgBoxRight + MsgBoxStyle.YesNo, "ایراد در برقراری ارتباط با پایگاله داده")
If rsl = MsgBoxResult.Yes Then
MsgBox("در صورت درست بودن همه موارد سیستم شما دچار نقص دیگری است" + vbCrLf + "لطفا با پشتیبان نرم افزار تماس بگیرید", MsgBoxStyle.MsgBoxRight + MsgBoxStyle.Information, "تماس با پشتیبان نرم افزار")
Else
frm_connection_setting.ShowDialog()
End If
Exit Sub
End Try
Dim MyDataAdapter As New System.Data.SqlClient.SqlDataAdapter
MyDataAdapter.SelectCommand = mycommand
Dim mydataset As New System.Data.DataSet
MyDataAdapter.Fill(mydataset)
Me.CrystalReport1.SetDataSource(mydataset)
Me.CrystalReportViewer1.RefreshReport()

sahar1982
چهارشنبه 03 خرداد 1391, 10:32 صبح
مرسی از راهنماییتون ولی من اینا رو نوشته بودم. تو نشون دادن دیتا تو report یعنی اون قسمت آخرش دچار مشکل میشم و نشون نمیده. شاید یه error داخلی باشه. دوباره می سازم اگر حل نشد مجدداً مزاحمتون میشم.

sahar1982
پنج شنبه 04 خرداد 1391, 14:02 عصر
barnamenevisforme

سلام. خیلی ممنونم. حل شد.