PDA

View Full Version : مشکل در لینک جداول در Crystal



kablayi
جمعه 14 تیر 1387, 05:13 صبح
سلام ...
میخواستم بدونم چطور میشه اطلاعات رو از چندین جدول استخراج کرد و در report نمایش داد ...
البته من این کد رو برای Report خودم نوشتم ولی اصلا عمل نمیکنه و یه جوابی برای خودش میده ... :متعجب:


Dim strSQL As String
Dim strReportName As String
Dim paper As CrystalDecisions.Shared.PaperSize
strSQL = "SELECT Services.drvID, Services.moshID, Services.ID, Services.Masir, Services.saat, Services.tarikh1, drivers.Name, drivers.LastName, Customer.Address " & _
"FROM ((Services INNER JOIN drivers ON Services.drvID = drivers.ID) INNER JOIN Customer ON Services.moshID = Customer.IDCode) " & _
"where (Services.ID='1003')"
strReportName = "GHABZ"
paper = CrystalDecisions.Shared.PaperSize.PaperA4
Dim strConnection As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DBTaxitellFile.accdb"
Dim Connection As New OleDbConnection(strConnection)
Dim DA As New OleDbDataAdapter(strSQL, Connection)
Dim DS As New DataSet
DA.Fill(DS)
Dim strReportPath As String = Application.StartupPath & "\" & strReportName & ".rpt"
If Not IO.File.Exists(strReportPath) Then
Throw (New Exception("Unable to locate report file:" & vbCrLf & strReportPath))
End If
Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent
rptDocument.PrintOptions.PaperSize = paper
rptDocument.Load(strReportPath)
rptDocument.SetDataSource(DS.Tables(0))
rptViewer.ShowRefreshButton = False
rptViewer.ShowCloseButton = False
rptViewer.ShowGroupTreeButton = False
rptViewer.ReportSource = rptDocument


نمیدونم شاید مشکل از query باشه ولی اونو تست کردم جواب داد ...
تمام دیتافیلدهارو هم تو قسمت Design Report سر جاشون قرار دادم و تنظیم کردم ... :گیج:
جداول--> customer:مشخصات مشتریان ... drivers: مشخصات راننده ها... service: مسیرهای زفته شده توسط رانندگان ....
ممنون .... :چشمک:

kablayi
شنبه 15 تیر 1387, 10:59 صبح
سلام ....
کمممممممممممممممممک !!!!!!!!!!!!

khz-web1
شنبه 15 تیر 1387, 23:31 عصر
با همون ویزارد که حل میشه .... می تونی چندتا جدول بگیری

kablayi
یک شنبه 16 تیر 1387, 00:20 صبح
سلام ...
حل شد ...
از Selection Formula استفاده کردم ، حل شد دیگه نیازی به نوشتن کوئری در برنامه نیست.....
کد بالا رو اینجوری نوشتم ...


Dim strReportName As String
Dim paper As CrystalDecisions.Shared.PaperSize
strReportName = "GHABZ"
paper = CrystalDecisions.Shared.PaperSize.PaperA4
Dim strReportPath As String = Application.StartupPath & "\" & strReportName & ".rpt"
If Not IO.File.Exists(strReportPath) Then
Throw (New Exception("Unable to locate report file:" & vbCrLf & strReportPath))
End If
Dim formula As String = "{Services.ID} = '1005'"
Dim rptDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent
rptDocument.PrintOptions.PaperSize = paper
rptDocument.Load(strReportPath)
rptDocument.DataDefinition.RecordSelectionFormula = formula
rptViewer.ReportSource = rptDocument

موفق باشید ... :چشمک: