PDA

View Full Version : دستور فيلتر براي Crystal Report



Dr.Bronx
دوشنبه 11 آذر 1387, 01:41 صبح
با سلام خدمت دوستان برنامه نويس
من اين كد رو براي في ل تر كردن گزارش كريستال ريپورت ارسال مي كنم ولي جواب نميده
يعني اصلا هيچ تغييري توي گزارش ايجاد نميشه :عصبانی++:
كجاي اين كد اشتباه ؟‌ يا روش ساده تري هم هست . ممنون ميشم پاسخ بدين


Crrept.RecordSelectionFormula = "{ekhtelaf.id}Like '*" & Trim(txtsearch.Text) & "*'" And "{ekhtelaf.DateOut}IN " & "'" & Trim(tt1.Text) & "'TO'" & Trim(tt2.Text) & "'"

sh2007
دوشنبه 11 آذر 1387, 09:05 صبح
من فكر مي كنم شما بايد از طريق كدنويسي كانكشن رو ايجاد كني و كريستال رو به پايگاه وصل كني تا گزارش تازه سازي بشه

mpmsoft
دوشنبه 11 آذر 1387, 11:51 صبح
دوست عزیز شما ابتدا Rs رو باز کنید
و بعد به کریستال پاس بدید

Rpt.Database.Setdatesource Rs

Dr.Bronx
دوشنبه 11 آذر 1387, 13:10 عصر
خوب اين كدهايي هست كه قبل از اين كد من نوشتم !
آيا چيز ديگه اي لازمه ؟


Dim Crapp As New CRAXDRT.Application
Dim Crrept As New CRAXDRT.Report
Dim CrDBTable As CRAXDRT.DatabaseTable
On Error Resume Next
For Each CrDBTable In Crrept.Database.Tables
CrDBTable.Location = App.Path & "\Data\DBE.mdb"
Rpt_Karkard.CrystalActiveXReportViewer1.EnableGrou pTree = False
Next
Set Crrept = Crapp.OpenReport(App.Path & "\report\rpt_karkard.rpt")
Rpt_Karkard.CrystalActiveXReportViewer1.ReportSour ce = Crrept

براي نشون دادن هم از اين استفاده مي كنم


Rpt_Karkard.CrystalActiveXReportViewer1.ViewReport
Rpt_Karkard.Show
Set Crapp = Nothing
Set Crrept = Nothing

اگه ميشه يه راهنمايي جامع بكنيد كه اين مشكل رو حل كنم با تشكر از شما دوستان

Pr0grammer
دوشنبه 11 آذر 1387, 15:50 عصر
این لینک (http://www.scribd.com/doc/4014416/-) رو نگاه، آموزش های خوبی در مورد کریستال رپورت هست! :لبخند:

rezankh
چهارشنبه 13 آذر 1387, 17:18 عصر
با سلام
من با كد زير ابتدا جدول Buy1 رو فيلتر كردم و بعدش ريپورت رو به بانك فيلتر شده وصل كردم :



Private Sub Command1_Click()

'ابتدا فيلتر را اينگونه انجام دادم

Str_Formula = ""

If Search.Combo2 <> "" Then
If Str_Formula <> "" Then
Str_Formula = Str_Formula + " and " + "({Buy1.Sal} = " & "" & Search.Combo2.Text & ")"
Else
Str_Formula = "({Buy1.Sal} = " & "" & Search.Combo2.Text & ")"

End If
End If

If Search.Combo3 <> "" Then
If Str_Formula <> "" Then
Str_Formula = Str_Formula + " and " + "({Buy1.Month} = " & "'" & Search.Combo3.Text & "')"
Else
Str_Formula = "({Buy1.Month} = " & "'" & Search.Combo3.Text & "')"
End If
End If

If Search.Combo4 <> "" Then
If Str_Formula <> "" Then
Str_Formula = Str_Formula + " and " + "({Buy1.Tarikh} = " & "'" & Search.Combo4.Text & "')"
Else
Str_Formula = "({Buy1.Tarikh} = " & "'" & Search.Combo4.Text & "')"
End If
End If

'سپس

If Str_Formula <> "" Then
Dim crApp As New CRAXDRT.Application
Dim crRept As New CRAXDRT.Report
Dim CrDBTable As CRAXDRT.DatabaseTable
Set crRept = crApp.OpenReport(App.Path & "\Reports\Report1.rpt") 'reportfile
crRept.FormulaFields.GetItemByName("Onvanrpt").Text = "'" & Onvan.DataCombo1 & "'"
crRept.FormulaFields.GetItemByName("Dayrpt").Text = "'" & Onvan.Label1 & "'"
crRept.FormulaFields.GetItemByName("Timerpt").Text = "'" & Onvan.Label2 & "'"

For Each CrDBTable In crRept.Database.Tables
CrDBTable.Location = App.Path & "\Buy.mdb"
Next


crRept.RecordSelectionFormula = Str_Formula



Chap.CRViewer1.ReportSource = crRept
Chap.CRViewer1.ViewReport
Set crApp = Nothing
Set crRept = Nothing


Chap.Show
End If


End Sub

اگه متوجه نشديد تا يك مثال درست كنم و براتون بزارم.

Dr.Bronx
چهارشنبه 13 آذر 1387, 17:36 عصر
نه من يك كار ديگه كردم دقيقا 10 دقيقه قبل از اينكه پست شما رو ببينم حل شد

يعني اينجوري كردم
دوتا فرمول ساختم


Private Function Return_Formula() As String
Dim Str_Formula As String
Str_Formula = "{ekhtelaf.ID} Like '*" & (txtsearch.Text) & "*' And "
Str_Formula = Trim(Str_Formula)
If UCase(Right(Str_Formula, 3)) = "AND" Then Str_Formula = Mid(Str_Formula, 1, Len(Str_Formula) - 3)
Return_Formula = Str_Formula
End Function

Private Function Return_Formula1() As String
Dim Str_Formula As String
Str_Formula = "{ekhtelaf.DateOut}IN " & "'" & Trim(tt1.Text) & "'TO'" & Trim(tt2.Text) & "'"
Str_Formula = Trim(Str_Formula)
If UCase(Right(Str_Formula, 3)) = "AND" Then Str_Formula = Mid(Str_Formula, 1, Len(Str_Formula) - 3)
Return_Formula1 = Str_Formula
End Function

بعدش هم براي اعمال شدن اينكارو انجام دادم

Crrept.RecordSelectionFormula = Return_Formula
Frm_Report.CR.Refresh
Crrept.RecordSelectionFormula = Return_Formula1
Frm_Report.CR.Refresh

با تشكر از شما كه زحمت كشيديد - تاپيك به عنوان راه حل ارائه شد

m_vb1386
پنج شنبه 14 آذر 1387, 08:07 صبح
خيلي جالب بود

Dr.Bronx
پنج شنبه 14 آذر 1387, 15:03 عصر
البته يه چيزي
Refresh دومي نبايد باشه
اشكال به وجود مياد
فقط اينجوري


Crrept.RecordSelectionFormula = Return_Formula
Crrept.RecordSelectionFormula = Return_Formula1
Frm_Report.CR.Refresh

y.saied
پنج شنبه 28 آذر 1387, 15:40 عصر
دوست عزیز شما ابتدا Rs رو باز کنید
و بعد به کریستال پاس بدید

Rpt.Database.Setdatesource Rs


میشه بیشتر و کاملتر توضیح بدین ........ ممنون