Crystal Repors Progress

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

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

Crystal Repors Progress

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 11:35 am

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

יעקב צוקערמאן
שר חמש מאות
תגובות: 663
זיך איינגעשריבען אום: מאנטאג מאי 05, 2014 1:27 pm

תגובהדורך יעקב צוקערמאן » דאנארשטאג נובעמבער 19, 2015 12:51 pm

העלו מיי פעלאו פראגראמער
וועלקאם טו דע קלאב
איגוד ה'פראגראמערס ד'אייוועלט יצ"ו

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

תגובהדורך פאטאקי08 » דאנארשטאג נובעמבער 19, 2015 3:00 pm

ארבעטער האט געשריבן: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)

האסט געטרייעט צו ניצן א דעלעגאט?

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

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 3:13 pm

Can you give me an example please?

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

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 3:21 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
שר עשרת אלפים
תגובות: 10842
זיך איינגעשריבען אום: דאנארשטאג אוגוסט 09, 2007 1:30 pm
לאקאציע: בקרוב אין וואשינגטאן

תגובהדורך פאטאקי08 » דאנארשטאג נובעמבער 19, 2015 3:55 pm

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

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

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

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

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 3:59 pm

Thanks
I have just tested it, with same results

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

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 4:03 pm

BTW, Is there any difference between my example & yours?

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

תגובהדורך פאטאקי08 » דאנארשטאג נובעמבער 19, 2015 4:09 pm

די זעלבע ווי דיין קאוד נאר אנשטאט ניצן טרעדינג ניצן א דעלעגאט אזוי ווי דא:
https://msdn.microsoft.com/en-us/library/5t38cb9x.aspx

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

תגובהדורך ארבעטער » דאנארשטאג נובעמבער 19, 2015 4:16 pm

Thanks, So basically, it's not doable? :-( :-( :-(

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

תגובהדורך פאטאקי08 » דאנארשטאג נובעמבער 19, 2015 4:18 pm

לכאורה האסטו דא צוויי אישוס
1) צו הייסן די CPU טוהן צוויי זאכן אויפאמאל
2) דיין פארם זאל וויסן וואס סטוט זיך ביי א פרעמדן אבדזשעקט
פאר 2) איז די עצה צו ניצן א דעלעגאט אבער דו דארפסט און סאמוועי הייסן דעם ליין אוו קאוד וואס נעמט 3 מינוט אז ער זאל זיך אפשטעלן בשעת ער ארבעט פאר א רגע און צוריק שיקן רעזאלטס צום פארם
פאר דעם דארפסטו קריעטן א איווענט אין די rpt אבדזשעקט

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

תגובהדורך פאטאקי08 » דאנארשטאג נובעמבער 19, 2015 4:32 pm

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

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

אבער איך אין דיינע שיך וואלט איך זיי שיין אויסגעפיצט.. איך מיין וואלט איך געטרייעט א הונטער טירל ערגעץ...

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

תגובהדורך ארבעטער » פרייטאג נובעמבער 20, 2015 8:22 am

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

בדוו. איך האב געטרייט מיט מייקראסאפט ריפארטינג און אויכעט dev express, און ביידע ווערט out of memory ביי אזא גרויסע ריפארט, סוי קוקט אויס מיין איינציגסטע אפשען איז crystal,
אפשר ווייסט איינער פון א אנדערע גוטע ריפארטינג ענדשען וואס קען הענדעלען גרויסע ריפארטס?

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

תגובהדורך פאטאקי08 » פרייטאג נובעמבער 20, 2015 8:32 am

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

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

תגובהדורך ארבעטער » פרייטאג נובעמבער 20, 2015 8:47 am

יא יא, עס קוקט איוס ווי דאס וועל איך מוזן טון, בלית ברירה

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

תגובהדורך ארבעטער » פרייטאג נובעמבער 20, 2015 12:08 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-

אוועטאר
גוגל
שר האלף
תגובות: 1869
זיך איינגעשריבען אום: דינסטאג יוני 19, 2012 2:35 pm
לאקאציע: אויף אייוועלט

תגובהדורך גוגל » מוצ"ש נובעמבער 21, 2015 9:00 pm

But if the client will wanna choose a printer that's not the default he would have a problem


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

ווער איז אונליין

באנוצערס וואס דרייען זיך דא: נישטא קיין איינגעשריבענע באנוצערס און 2 געסט