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

 

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

Subreport Parameters, Crystal Reports 11

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

    Subreport Parameters, Crystal Reports 11

    Οκ, ας ελπίσουμε να είναι η τελευταία φορά που κάνω post σήμερα όσον αφορά τα Crystal Reports ...

    Εφ'όσον έχω ένα master report του οποίου τις παραμέτρους τις δίνω στον CrystalReportsViewer που το ανοίγει, κάπως έτσι ...

    CrystalReportViewer1.ParameterFieldInfo=setValueFields(currentReport);

    Όπου το setValueFields έχει το εξής footprint:

    private ParameterFields setValueFields (XmlNode currentReport) { ... }

    Άν τα subreports έχουν κι αυτά ορισμένες παραμέτρους, πως περνάω values σε αυτά; Αν στο ParameterFieldInfo object που δίνω στο viewer γράψω και τις παραμέτρους των subreports, θα παίξει; ( Ρωτάω γιατί θα πρέπει ν'αλλάξω πολύ κώδικα για να δοκιμάσω, χάνοντας πολύ χρόνο, αλλιώς θα δοκίμαζα χωρίς δισταγμό, πιστέψτε με ... :( )

    Ευχαριστώ ρε παιδιά .. τι πίκρα είναι αυτή με τα Crystal σήμερα ...


    Angel
    O:]
  •  16-08-2005, 12:39 4276 σε απάντηση της 3885

    Απ:Subreport Parameters, Crystal Reports 11

    Άγγελε γιατί δεν κάνεις πριν το filtering των data που σε ενδιαφέρουν και μετά να τα κάνεις bound στο report και στα subreports αντί να περνάς παράμετρους στον Viewer;

    With MyReport
       .Load(Me.ReportsPath & MyReportName)
       .SetDataSource(MyData)
       MySubRep = .OpenSubreport("BlablaSubreport.rpt")
       MySubRep.SetDataSource(MyData)
    End with

     


    Πάνος Αβραμίδης
  •  25-08-2005, 12:27 4637 σε απάντηση της 3885

    Μπορέιτε να μου πείτε πως συνδέοντας ένα Crystal Report με μια ACCESS θα βλέπω τα δεδομένα με βάση κριτηρίων

    Καλημέρα σας ,

    έχω το εξής πρόβλημα ,

    Θέλω να αντλήσω δεδομένα από περισσότερους από δύο πίνακες , για την αλήθεια είναι 10, και να τα εμφανίσω σε ένα CR. Χρησιμοποιώντας join σε query και μετά κάνωντας το xml πήρχε το εξής πρόβλημα , ότι δημιουργούσε όλους τους συνδυασμούς αυτών και τα στοιχεία στο CR επαναλαμβάνονταν πολλές φορές. Σκέφτηκα ότι μπορώ αντι να λαμβάνω δεδομένα από xml να συνδέσω κατευθείαν την βάση και τους συγκεκριμένους πίνακες. Όλοι αυτοί συνδέονται μεταξύ τους με ένα πεδίο AM. Αυτό που θέλω είναι πως θα του δίνω από την φόρμα τιμή , για παράδειγμα 1 ή 2 και να μου εμφανίζει τα σωστά δεδομένα.

    Εάν μπορείτε πείτε μου γιατί έχω ήδη χάσει πολύ χρόνο ψάχνοντας.

    Φιλικά ,

    Αλέξανδρος Μαργαρίτης

  •  25-08-2005, 13:10 4639 σε απάντηση της 4276

    Απ: Απ:Subreport Parameters, Crystal Reports 11

    Γεια σου Αλέξανδρε,
    η δική μου μεθοδολογία είναι η εξής :

    Φτιάχνω ένα XML Schema και δημιουργώ ένα νέο Report με ADO.NET (XML) connection ...
    "Σουλουπώνω" το report οπτικά και στο runtime του στέλνω τα data (SetDatasource method)

     axaros wrote:

    With MyReport
       .Load(Me.ReportsPath & MyReportName)
       .SetDataSource(MyData)
       MySubRep = .OpenSubreport("BlablaSubreport.rpt")
       MySubRep.SetDataSource(MyData)
    End with

    Αποφεύγω να "δένω" κάποιο report σε κάποιο source όταν το δημιουργώ ...
    Ελπίζω να σε βοήθησα ...


    Πάνος Αβραμίδης
  •  25-08-2005, 18:16 4647 σε απάντηση της 3885

    Απ: Subreport Parameters, Crystal Reports 11

    Αν κατάλαβα καλά το πρόβλημά σου είναι να περάσεις παραμέτρους στα subreports....

    Χωρίς να μπορώ να αφιερώσω δυστυχώς πολύ χρόνο τώρα για εξηγήσεις, σου κάνω copy/paste 2-3 methods που μπορεί να σε βοηθήσουν.

    Αυτά είναι από μια class που είχα  φτιάξει παλιότερα και χρησιμοποιώ για τις εκτυπώσεις μέσα από μια web εφαρμογή (βασίζεται σε PDF). Anyway ReportProvider λέγεται και έχει ένα sub-class που λέγεται PDFReportProvider και διάφορα άλλα καλούδια...

    Δεν σου γράφω λεπτομέρειες γιατί δεν προλαβαίνω αλλά και γιατί νομίζω ότι διαβάζοντας τον κώδικα θα καταλάβεις...

    Δές το:

    		protected ReportDocument GetSubReport(string subReportName)
    		{
    			SubreportObject subreportObject = (SubreportObject) ReportDoc.ReportDefinition.ReportObjects[subReportName];
    			return subreportObject.OpenSubreport(subreportObject.SubreportName);
    		}
    
    		protected void SetSubReportDataSource(string subReportName, object dataSource)
    		{
    			SetSubReportDataSource(subReportName, dataSource, false);
    		}
    
    		protected void SetSubReportDataSource(string subReportName, object dataSource, bool Suppress)
    		{
    			SubreportObject subreportObject = (SubreportObject) ReportDoc.ReportDefinition.ReportObjects[subReportName];
    			ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
    			subReportDocument.SetDataSource(dataSource);
    			subreportObject.ObjectFormat.EnableSuppress = Suppress;
    		}
    
    		protected void PassSubReportParameter(string subReportId, string paramName, object paramValue)
    		{
    			// put the value in a param object
    			ParameterDiscreteValue paramDiscrete = new ParameterDiscreteValue();
    			paramDiscrete.Value = paramValue;
    
    			// get the field definition
    			ParameterFieldDefinition paramFieldDef = reportDoc.DataDefinition.ParameterFields[paramName, subReportId];
    
    			// get the field values and add the param object ot them
    			ParameterValues paramValues = paramFieldDef.CurrentValues;
    			paramValues.Add(paramDiscrete);
    
    			// apply the changes to the field to pass the parameter
    			paramFieldDef.ApplyCurrentValues(paramValues);
    		}
    
    		protected void PassReportParameter(string paramName, object paramValue)
    		{
    			// put the value in a param object
    			ParameterDiscreteValue paramDiscrete = new ParameterDiscreteValue();
    			paramDiscrete.Value = paramValue;
    
    			// get the field definition
    			ParameterFieldDefinition paramFieldDef = ReportDoc.DataDefinition.ParameterFields[paramName];
    
    			// get the field values and add the param object to them
    			ParameterValues paramValues = paramFieldDef.CurrentValues;
    			paramValues.Add(paramDiscrete);
    
    			// apply the changes to the field to pass the parameter
    			paramFieldDef.ApplyCurrentValues(paramValues);
    		}

    Αν σε βοηθάει, έχει καλώς...
    Αν έχεις απορίες, ρώτα...
    Αν πάλι σου λέω πράγματα που ξέρεις ή δεν βοηθάνε... sorry for wasting your time...

    φιλικά
    rousso


    rousso
  •  01-09-2005, 14:22 4935 σε απάντηση της 4647

    Απ: Subreport Parameters, Crystal Reports 11

    Ευχαριστώ Γιάννη για τη βοήθεια, μόλις κατάφερα να ασχοληθώ με το θέμα αυτό (εμ, γυρίσαμε απο διακοπές κιόλας .. μην το κάψουμε με τη μία .. :) ... ), αλλά ...

    "Cannot find parameter field @SYSUSER in subreport sub_ResAllocations.rpt" ... ενώ η δεδομένη παράμετρος φαίνεται ξεκάθαρα στα parameter fields του subreport.

    Ιδού και ο μαγικός μου κώδικας που ασχολείται με το να θέτει τις παραμέτρους ...

                protected void SetParameter(XmlNode paramDef, string strReportName){                           

                                 XmlAttribute nameAttr = paramDef.Attributes["name"];

                                 // Make sure I have a name

                                 if(nameAttr==null) return;

                                 // Get the name

                                 string strParamName = nameAttr.Value;

                                 object paramValue = GetParamValue(paramDef);

                                 // put the value in a param object

                                 ParameterDiscreteValue paramDiscrete = new ParameterDiscreteValue();

                                 paramDiscrete.Value = paramValue;

     

                                 // Get the field definition - if I was given a null report name, it is a master report parameter so handle accordingly

                                 ParameterFieldDefinition paramFieldDef = (strReportName!=null)?m_Report.DataDefinition.ParameterFields[strParamName, strReportName] : m_Report.DataDefinition.ParameterFields[strParamName];

     

                                 // get the field values and add the param object ot them

                                 ParameterValues paramValues = paramFieldDef.CurrentValues;

                                 paramValues.Add(paramDiscrete);


                                 // apply the changes to the field to pass the parameter

                                 paramFieldDef.ApplyCurrentValues(paramValues);

                       }

    Το exception πετάγεται απ'τη γραμμή paramFieldDef.ApplyCurrentValues(paramValues);
    Το οποίο όμως δεν είναι τρελλό, εφ'όσον λίγες γραμμές πιο πάνω παίρνω το paramFieldDef απο το DataDefinition.ParameterFields, που σημαίνει οτι .. υπάρχει ?!?!?!

    Θα μας τρελλάνουν τα Crystal και σήμερα φαίνεται :P




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