Crystal Repors Progress

די אחראים: זייער נייגעריג,אחראי,thefact

אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

Crystal Repors Progress

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

I’m developing a windows application, which needs to export a crystal report to PDF,
The report is really big, it needs to read 80,000 records, & generate 4500 pages,
It takes 2-3 minutes to export the report, & I need to show the progress for the user while it’s exporting,
The best would be if I can show a progress bar with the percentage & saying “Exporting page X of X” (When you run a report in crystal report designer, there is something like this),
Based on what I have searched it sounds like there is no way to do this with there API,, But without this it’s almost useless, So I’m wondering if there may be some workaround to accomplish this;
Here is my code:

קאוד: וועל אויס אלע

Dim WithEvents rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
rpt.Load("\\fs\users\SomeUser\Temp\report1.rpt")
 'This line takes 2-3 minutes, I need to provide status to the user in this time
        rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "C:\Temp\TestReport.pdf")


I have tried to run it in a different thread, & run a timer in the main thread that should constantly check the page count, but the application gets frozen & it doesn’t return anything (probably it’s not made for multi-threading)

קאוד: וועל אויס אלע

Public Class Form1
    Dim WithEvents Timer1 As New Timer
    Dim WithEvents BG1 As New System.ComponentModel.BackgroundWorker
    Dim WithEvents rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        rpt.Load("\\fs\users\SomeUser\Temp\report1.rpt")
        Timer1.Start()
        BG1.RunWorkerAsync()
    End Sub

 Private Sub BG1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BG1.DoWork
        'This line takes 2-3 minutes, I need to provide status to the user in this time
        rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "C:\Temp\TestReport.pdf")

    End Sub

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Try
            TextBox1.Text = Now & ": " & rpt.ReportRequestStatus.NumberOfRecordRead & " - " & rpt.ReportRequestStatus.NumberOfPages
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
יעקב צוקערמאן
שר חמש מאות
תגובות: 705
זיך איינגעשריבן אום: מאנטאג מאי 05, 2014 1:27 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך יעקב צוקערמאן »

העלו מיי פעלאו פראגראמער
וועלקאם טו דע קלאב
איגוד ה'פראגראמערס ד'אייוועלט יצ"ו
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

ארבעטער האט געשריבן:I’m developing a windows application, which needs to export a crystal report to PDF,

The report is really big, it needs to read 80,000 records, & generate 4500 pages,
I have tried to run it in a different thread, & run a timer in the main thread that should constantly check the page count, but the application gets frozen & it doesn’t return anything (probably it’s not made for multi-threading)

האסט געטרייעט צו ניצן א דעלעגאט?
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

Can you give me an example please?
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

I have tried to run the following, with same results,
Is this what you mean?

קאוד: וועל אויס אלע

Public Class Form1
    Dim WithEvents Timer1 As New Timer
    Dim WithEvents rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        rpt.Load("\\fs\users_FS\SomeUser\Temp\report1.rpt")
        Timer1.Start()
        Dim t1 As New Threading.Thread(AddressOf ExportReport)
        t1.Start()
    End Sub

    Private Sub ExportReport()
        'This line takes 2-3 minutes, I need to provide status to the user in this time
        rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "C:\Temp\TestReport.pdf")
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Try
            TextBox1.Text = Now & ": " & rpt.ReportRequestStatus.NumberOfRecordRead & " - " & rpt.ReportRequestStatus.NumberOfPages
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

פרוביר
נישט זיכער אז סוועט ארבעטן זינט איך האב עס נאר געשריבן אויף פאפיר אן עס אויסטרייען ניטאמאל געטשעקט די סינטאקס

קאוד: וועל אויס אלע

Public Class Form1
    Dim WithEvents Timer1 As New Timer
    Dim WithEvents rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        rpt.Load("\\fs\users_FS\SomeUser\Temp\report1.rpt")
        Timer1.Start()
        'Dim t1 As New Threading.Thread(AddressOf ExportReport)
   BeginInvoke(New ExportReportDelegate(AddressOf ExportReport))
        't1.Start()
    End Sub
   
Public Delegate Sub ExportReportDelegate()   

    Private Sub ExportReport()
        'This line takes 2-3 minutes, I need to provide status to the user in this time
        rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "C:\Temp\TestReport.pdf")
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Try
            TextBox1.Text = Now & ": " & rpt.ReportRequestStatus.NumberOfRecordRead & " - " & rpt.ReportRequestStatus.NumberOfPages
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

Thanks
I have just tested it, with same results
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

BTW, Is there any difference between my example & yours?
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

די זעלבע ווי דיין קאוד נאר אנשטאט ניצן טרעדינג ניצן א דעלעגאט אזוי ווי דא:
https://msdn.microsoft.com/en-us/library/5t38cb9x.aspx
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

Thanks, So basically, it's not doable? :-( :-( :-(
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

לכאורה האסטו דא צוויי אישוס
1) צו הייסן די CPU טוהן צוויי זאכן אויפאמאל
2) דיין פארם זאל וויסן וואס סטוט זיך ביי א פרעמדן אבדזשעקט
פאר 2) איז די עצה צו ניצן א דעלעגאט אבער דו דארפסט און סאמוועי הייסן דעם ליין אוו קאוד וואס נעמט 3 מינוט אז ער זאל זיך אפשטעלן בשעת ער ארבעט פאר א רגע און צוריק שיקן רעזאלטס צום פארם
פאר דעם דארפסטו קריעטן א איווענט אין די rpt אבדזשעקט
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

ארבעטער האט געשריבן:Thanks, So basically, it's not doable? :-( :-( :-(

לויט וויאזוי די עקספערטן אויף די געוועלב זאגן ביסטו גערעכט
http://www.experts-exchange.com/Program ... 59502.html
https://scn.sap.com/thread/3356379

אבער איך אין דיינע שיך וואלט איך זיי שיין אויסגעפיצט.. איך מיין וואלט איך געטרייעט א הונטער טירל ערגעץ...
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

איך מוטשע מיך שוין אפאר טעג צו טרעפן א אונטער טירל without success
דעיס וואס די זאגסט וועגן א איווענט, דעיס איז התינח ווען איך האב עקסעס צו crystal source code
אבער אזוי ווי אונז זעמער אין גלות, קען איך נאר ניצען וואס זיי שטעלן מיך צי, און זיי האבן נישט עני usefull איווענטס.

בדוו. איך האב געטרייט מיט מייקראסאפט ריפארטינג און אויכעט dev express, און ביידע ווערט out of memory ביי אזא גרויסע ריפארט, סוי קוקט אויס מיין איינציגסטע אפשען איז crystal,
אפשר ווייסט איינער פון א אנדערע גוטע ריפארטינג ענדשען וואס קען הענדעלען גרויסע ריפארטס?
אוועטאר
פאטאקי08
שר עשרת אלפים
תגובות: 13865
זיך איינגעשריבן אום: דאנערשטאג אוגוסט 09, 2007 1:30 pm
פארבינד זיך:

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך פאטאקי08 »

אפשר ברענג ארויף פארן יוזער דזשאסט א ענימעטעד פיקטשער למשל א באלי וואס דרייעט זיך ווילאנג די רעפארט סעיווט זיך
סזאל זיין א שיינע בילד וואס די יוזער זאל זיך קענען איינרעדן ווייסעך וואס דער ווייזט דיר.. אבער אין פאקט איז דאס נישט מער ווי א גיף פייל...
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

יא יא, עס קוקט איוס ווי דאס וועל איך מוזן טון, בלית ברירה
אוועטאר
ארבעטער
שר מאה
תגובות: 161
זיך איינגעשריבן אום: דאנערשטאג מארטש 22, 2012 9:53 pm

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך ארבעטער »

OK, I found the back door ;l;p- ;l;p- ;l;p- ;l;p-
My plan was to export to PDF & then print it from the PDF, So Really I just want to print & not to export
So They have a method PrintToPrinter, & I see that while it's generating the report it sends the generated pages to the printer,
So I can check the print spooler how many pages is already sent from this jb
;l;p- ;l;p- ;l;p- ;l;p- ;l;p- ;l;p-
אוועטאר
גוגל
שר האלפיים
תגובות: 2055
זיך איינגעשריבן אום: דינסטאג יוני 19, 2012 2:35 pm
לאקאציע: אויף אייוועלט

  • ציטיר
  • צו לייגן א דאנק דארפט איר זיין אריינגעלאגט

תגובה דורך גוגל »

But if the client will wanna choose a printer that's not the default he would have a problem
שרייב תגובה

צוריק צו “דעוועלאופערס ווינקל”