Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

Îåêßíçóå áðü ôï ìÝëïò tzarot. Τελευταία δημοσίευση από το μέλος axaros στις 03-11-2005, 13:10. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-09-2005, 17:14 5656

    Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Παράξενο!!!

    Έχουμε κάπου στον κώδικά μας ...

    public CrystalDecisions.CrystalReports.Engine.ReportDocument rptDoc;

    public CrystalDecisions.Windows.Forms.CrystalReportViewer crReportViewer;

    έχουμε επίσης φτιάξει και δύο crystal reports έστω vs.rpt και cr.rpt το ένα με το Crystal Report Designer του VS2003, ενώ το δεύτερο με το ίδιο το Crystal Reports 9.

    Όταν τώρα από τον κώδικά μας πάμε να κάνουμε:

    rptDoc.Load("???.rpt");                                                 

    rptDoc.SetDataSource(dt);

    rReportViewer.ReportSource = rptDoc;

    Απλά δεν δουλεύει για cr.rpt (Crystal Report made) ενώ δουλεύει άψογα για vs.rpt (Visual Studio made). Για την ακρίβεια αγνοεί την SetDataSource(dt) και δείχνει τα όποια δεδομένα σώθηκαν κατά τη φάση του design. Αν μάλιστα χρησιμοποιήσουμε Field Definition File (.ttx) για την κατασκευή του report - και όχι κάποιο SQL binded σε κάποιο Server - θα δείξει τα όποια sample data, αν είχαν εισαχθεί και περιγράφονταν στο .ttx

    Πιο Παράξενο!!!

    Αν φτιάξουμε την cr.rpt με CR10 Developer Edition και αναστρέψουμε!!! την σειρά:

                rptDoc.Load("???.rpt");                                                 

    rReportViewer.ReportSource = rptDoc;

    rptDoc.SetDataSource(dt);

     τότε παίζει !!! Angry [:@]

    Υπόχρεος για όποια ιδέα ή λύση ...

     


    Debug macht frei.
  •  23-09-2005, 14:38 5678 σε απάντηση της 5656

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Γειά σου tzarot !!!
    Όντως ακούγεται περίεργο...
    Το ίδιο πράγμα (περίπτωση 1) κάνω χωρίς προβλήματα με Crystal Reports 9 developer.
    To report βέβαια το κάνω bind σε XML Schema (ADO.NET Xml datasource)
    Δεν το δοκιμάζετε και έτσι;

    Επίσης υποθέτω ότι έχετε τρέξει όλα τα service packs ;


    Πάνος Αβραμίδης
  •  23-09-2005, 15:04 5680 σε απάντηση της 5678

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Applies to:

    Reported version only
    Development
    ado.net

    Synopsis

    An application uses Crystal Reports for Visual Studio
    .NET 2002 as the reporting development tool.

    How can you use Crystal Reports 8.5 (CR 8.5) reports,
    designed on Data Definition Files (TTX files), with
    ADO.NET datasets in Visual Studio .NET 2002?

    Solution

    The following example demonstrates how to use CR8.5
    reports designed on TTX files with ADO.NET datasets.
    The CR8.5 reports are loaded from disk into the
    application at runtime (so as not to upgrade them to
    the newer .rpt format).

    The following code is an example of how to display the
    data from a dataset:

    Private Sub Form1_Load(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles MyBase.Load

    Dim rpt As New
    CrystalDecisions.CrystalReports.Engine.ReportDocument()
    Dim ds As New System.Data.DataSet()

    ' Load a TTX report from disk into the reportdocument
    ' object.
    rpt.Load("c:\custttx.rpt")


    ' Read the dataset from an xml file, or fill using an
    ' OledbDataAdapter, or build it through code.
    ds.ReadXml("c:\customer.xml")

    Αυτό το κάνετε ;
    ' Set the table name in the dataset to agree
    ' with the table name in the report.
    ds.Tables(0).TableName =
    rpt.Database.Tables(0).Name

    'Set the dataset to be the report's data source.
    rpt.SetDataSource(ds)

    'Display the report in the viewer.
    CrystalReportViewer1.ReportSource = rpt

    End Sub

    ====================
    NOTE:

    For the application to run successfully, the dataset
    schema (all table names and field names) must exactly
    match the report`s expected schema. If your dataset has
    more than one table, modify the code above to set all
    the dataset table names to match the report`s table
    names.
    ====================


    Πάνος Αβραμίδης

    Κοίτα και αυτό:

    How to use ADO.NET datasets with reports designed from TTX files

    The information in the article refers to:
    Crystal Reports for Visual Studio .NET

  •  25-10-2005, 17:53 6440 σε απάντηση της 5656

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Smile [:)] Λύθηκε !!!.
    Ύστερα από αρκετές ώρες "Σερλοκχολμικής" αναζήτησης η απάντηση πιστεύω ότι βρέθηκε...

    ΣΗΜΑΝΤΙΚΟΤΑΤΟ: Πριν από όλα μερικές διευκρινήσεις: Όλα τα πειράματα έγιναν σε νέα, τελείως καθαρή εγκατάσταση σε Virtual Machine, που είχε WinXP Eng SP2, VS2003*, SQL 2000 Dev, .NET Framework 1.1, που ανά περίπτωση είχε:

    Α. Τίποτε άλλο. (Τα reports κατασκευάστηκαν με το VS Embedded Crystal Report)
    B. Crystal Reports 9.0 Pro
    C. Crystal Reports 10.0 Dev
    D. Crystal Reports 11.0 Dev

    * Επίσης το μηχάνημα του development είχε εγκατεστημένο μόνο το CR του Visual Studio (v.9) και τα CR βρίσκονταν εγκατεστημένα σε διαφορετικά μηχανήματα χωρίς VS.

    Φυσικά όλες οι εγκαταστάσεις περιλάμβαναν όλα τα Service Packs, patches και λοιπά απαραίτητα εγκατεστημένα.

    Η όλη ιδέα ήταν να κατασκευαστούν reports που χρησιμοποιώντας την λογική του .ttx (Field Definition File) θα περιείχαν μόνο το layout του report. Κατά τη φάση του runtime της Χ. εφαρμογής μας, τα reports αυτά, αφού τροφοδοτούνταν με ένα οποιοδήποτε Dataset είχε το ίδιο 'σχήμα' με αυτό που περιγράφονταν στο .ttx αρχείο ...rptDoc.SetDataSource(dt); θα πρόβαλαν τα δεδομένα.

    Επειδή λοιπόν σε πραγματικές συνθήκες, τα reports θα φτιάχνονταν από κάποιον που θα δούλευε το κανονικό Crystal και όχι την VS embedded έκδοσή του π.χ. κάποιος παραμετροποιητής, θέλησα να προσομοιώσω την διαδικασία κατασκευής και εκτέλεσης ώστε να είμαι σίγουρος για το αποτέλεσμα. Κατασκευάστηκε ως εκ τούτου ένα rpt, σε άλλο μηχάνημα (εξομοιώνοντας με αυτό τον τρόπο την κατασκευή του report από τον x χρήστη μη προγραμματιστή), με CR9 Pro, τοποθετήθηκε σε κάποιο folder και στην εφαρμογή μας φορτώθηκε κατά το runtime με:

     

    rptDoc.Load("???.rpt");
    rptDoc.SetDataSource(dt
    );
    rReportViewer.ReportSource = rptDoc;

     

    Το αποτέλεσμα ήταν να μην βλέπουμε data, για την ακρίβεια όπως διαπιστώσαμε, βλέπαμε τα όποια data χρησιμοποιήθηκαν κατά την κατασκευή του rpt. Αυτό έγινε χρησιμοποιώντας την δυνατότητα του .ttx  να ορίζει εκτός του σχήματος και sample δεδομένα ώστε να είναι ορατά κάποια βοηθητικά data κατά τη φάση του design του report, π.χ.:

     

    ;Field definition file for SalesPayWay
    SalesManID        Short                   999
    SalesmanCode      string      10          TestValue


    Ουσιαστικά με αυτό τον τρόπο κατάλήξαμε ότι αυτό που δεν δουεύει σωστά είναι η
    SetDataSource.

    Μελετώντας το πρόβλημα προσεκτικότερα, ανακαλύπτουμε ότι το rpt συμπεριφέρεται τελικά με τον ίδιο τρόπο άσχετα με το αν κατασκευαστεί με CR9Pro, 10Dev (eval.version), ή 11Dev, αυτές διαθέταμε…, αρκεί να γίνουν τα ακόλουθα:

    1.       Το Rpt κατασκευάζεται σε μηχάνημα άλλο από το development.

    2.       Το Rpt αντιγράφεται και εκτελείται στο μηχάνημα runtime όπου βρίσκεται εγκατεστημένη η εφαρμογή μας, compiled και packed για Setup από το VS, που όπως θυμίζω έχει εγκατεστημένη μόνο την embedded έκδοση του VS (v.9.0). Κατά συνέπεια, πολύ μεταγενέστερη διαπίστωση, και τα .msm (Merge Modules) είναι αυτής της έκδοσης.

    Προβληματισμένοι από την παραπάνω συμπεριφορά, δοκιμάζουμε αφού είχαμε ήδη προσπαθήσει με αποτυχία τη μάλλον άκομψη απλή αντιγραφή των CR11 .dll's στο execution path του target μηχανήματος, να κατασκευάσουμε το Setup project, χρησιμοποιώντας τα .msm του CR11. Φυσικά στην όλη διαδικασία ζητείται και το Keycode των CR.

    Με αυτό τον τρόπο κατασκευάζουμε ένα Setup το οποίο registrάρει (γλωσσοπλάστη μου …) σωστά την εφαρμογή μας ώστε να φορτώνει rpts που κατασκευάστηκαν με άλλη έκδοση από αυτή της embedded έκδοσης του VS. Αυτό εξηγεί και το γιατί η εφαρμογή αρχικά δεν είχε πρόβλημα να παίξει με τα reports που φτιάχνονταν με την embedded έκδοση, καθώς το αρχικό packaging του setup είχε γίνει με τα msm που αντιστοιχούν σε αυτή την έκδοση.

    Θα ήθελα επίσης να πω και ένα ευχαριστώ στον συνάδελφο Πάνο, (axaros) που ουσιαστικά με οδήγησε σε κάποια από τα παραπάνω συμπεράσματα. Ακόμα δίνοντας μου την αρχική ιδέα για .xml τελικά τροποποίησα την λογική της τήρησης του άνευ data σχήματος από .ttx σε .xml πράγμα που αφενός διόλου δεν αλλάζει την λογική κατασκευής του RPT απλά χρησιμοποιώ New Connection -> DataBaseFiles -> .xml αντί New Connection -> Field Definition Files -> .ttx και επιπλέον παράγεται αυτόματα με:

     

    private void WriteSchemaWithXmlTextWriter(DataSet thisDataSet)

    {

    System.IO.FileStream myFileStream = new System.IO.FileStream(xmlfilename,System.IO.FileMode.Create);

    System.Xml.XmlTextWriter MyXmlTextWriter = new System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.Unicode);

    thisDataSet.WriteXmlSchema(MyXmlTextWriter );

    MyXmlTextWriter.Close();

    }

     

    Αυτά τα ολίγα (καλά μην βαράτε) μήπως και κανείς άλλος χάσει τον ύπνο του με το ίδιο ...

     

    Καλό κώδικα...


    Debug macht frei.
  •  25-10-2005, 20:18 6445 σε απάντηση της 6440

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Yes [Y]

    Η εικόνα που έχεις προσθέσει "keycode.jpg" δεν φαίνεται! Προσπάθησε να την αναβάσεις στις "Φωτογράφιες" στη βιβλιοθήκη "Συλλογή για Δημοσιεύσεις" και μετά να κάνεις Link από εκεί την φωτογραφία σου στο μήνυμα...

     

    George J.

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  26-10-2005, 13:35 6484 σε απάντηση της 6445

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Done!!!

    BTW, ποιός είναι o εντουράς ?


    Debug macht frei.
  •  26-10-2005, 13:40 6485 σε απάντηση της 6484

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

     tzarot wrote:

    Done!!!

    BTW, ποιός είναι o εντουράς ?

    Εμπρός καλέσατε ;
    Θέμη μη μου πεις ότι είσαι χωμάτινος τύπος;


    Πάνος Αβραμίδης
  •  26-10-2005, 14:33 6489 σε απάντηση της 6485

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Παλαιά σε DT, WR, KDX και λοιπές αγροτικές εργαλειομηχανές τώρα... ανελειπώς μεν Ποδηλατικώς δε!

    http://www.dotnetzone.gr/cs/photos/general/picture6490.aspx

     


    Debug macht frei.
  •  27-10-2005, 10:21 6500 σε απάντηση της 6489

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Για να οργανωθούμε για μία ποδηλατάδα .NetZone-ιστών !!! Τι λέτε;
    Γιατί για enduraδα το βλέπω δύσκολο ...


    Πάνος Αβραμίδης
  •  02-11-2005, 19:36 6639 σε απάντηση της 6500

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Μήπως πρέπει να ανοίξουμε forum για χώμα ?

    Τώρα χωρίς πλάκα, όποιος γουστάρει και έχει διάθεση για ποδήλατο το οργανώνουμε όποτε θέλετε. (π.χ.Βασιλικά ή Αη.Γιώργη Πάρνηθα)

    Εγγυημένη απόλαυση...


    Debug macht frei.
  •  03-11-2005, 13:10 6648 σε απάντηση της 6639

    Απ: Πρόβλημα χρήσης αρχείου rpt από εγαρρμογή (C# .NET) όταν αυτό έχει φτιαχτεί με CR9

    Θέμη εγώ είμαι μέσα !!!! Και για ποδηλατάδα και για extra forum ΧΩΜΑ !!!!!Big Smile [:D]


    Πάνος Αβραμίδης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems