View Full Version : دستور فيلتر براي Crystal Report
  
Dr.Bronx
دوشنبه 11 آذر 1387, 02:41 صبح
با سلام خدمت دوستان برنامه نويس
من اين كد رو براي في ل تر كردن گزارش كريستال ريپورت ارسال مي كنم ولي جواب نميده
يعني اصلا هيچ تغييري توي گزارش ايجاد نميشه :عصبانی++:
كجاي اين كد اشتباه ؟ يا روش ساده تري هم هست . ممنون ميشم پاسخ بدين
 Crrept.RecordSelectionFormula = "{ekhtelaf.id}Like '*" & Trim(txtsearch.Text) & "*'" And "{ekhtelaf.DateOut}IN " & "'" & Trim(tt1.Text) & "'TO'" & Trim(tt2.Text) & "'"
sh2007
دوشنبه 11 آذر 1387, 10:05 صبح
من فكر مي كنم شما بايد از طريق كدنويسي كانكشن رو ايجاد كني و كريستال رو به پايگاه وصل كني تا گزارش تازه سازي بشه
mpmsoft
دوشنبه 11 آذر 1387, 12:51 عصر
دوست عزیز شما ابتدا Rs رو باز کنید
و بعد به کریستال پاس بدید
Rpt.Database.Setdatesource Rs
Dr.Bronx
دوشنبه 11 آذر 1387, 14: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, 16:50 عصر
این لینک (http://www.scribd.com/doc/4014416/-) رو نگاه، آموزش های خوبی در مورد کریستال رپورت هست! :لبخند:
rezankh
چهارشنبه 13 آذر 1387, 18: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, 18: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, 09:07 صبح
خيلي جالب بود
Dr.Bronx
پنج شنبه 14 آذر 1387, 16:03 عصر
البته يه چيزي
Refresh دومي نبايد باشه
اشكال به وجود مياد
فقط اينجوري
       
 Crrept.RecordSelectionFormula = Return_Formula
        Crrept.RecordSelectionFormula = Return_Formula1
        Frm_Report.CR.Refresh
y.saied
پنج شنبه 28 آذر 1387, 16:40 عصر
دوست عزیز شما ابتدا Rs رو باز کنید
و بعد به کریستال پاس بدید
Rpt.Database.Setdatesource Rs
 
 
میشه بیشتر و کاملتر توضیح بدین ........ ممنون
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.