2009-09-28 4 views
3

J'ai un XtraReport non lié qui a un contrôle de sous-rapport qui contient un autre rapport. J'appelle "unbound" à un rapport qui a la définition des champs à l'aide d'un schéma mais pas lié à un DataSet, je crée un DataTable en utilisant un Data Access Layer et puis passe cet objet à la propriété DataSource du rapport.Comment créer un sous-rapport non lié dans un autre rapport non lié

Alors, je le code suivant:

 // (...) Get the data from the db and fill a DataTable 

     if (table.Rows.Count > 0) 
     { 
      report.DataSource = table; 

      // (...) Get the data from the db and fill a DataTable for the subreport 
      report.SubPurchaseOrder.Report.DataSource = tableSubReport; 

      report.ShowPreviewDialog(); 
     } 
     else 
     { 
      MessageBox.Show("No data to show."); 
     } 

Mais ce que je reçois en utilisant cette approche est le sous-état imprimé très curieusement (un coup d'oeil à la attached pdf, désolé il est en espagnol, mais je pense que vous avez idée). J'ai lu la documentation de DevExpress et peut-être que je ne comprends pas bien l'approche, alors ma question est de savoir comment créer un rapport avec un ou plusieurs sous-rapports mais je dois fournir les données pour les remplir en utilisant un processus externe aux rapports, tel qu'un Data Access Layer?

S'il vous plaît laissez-moi savoir si la question n'est pas indiquée correctement ou manque de plus d'informations.

EDIT:

Je téléchargé un exemple de projet avec le rapport avec le problème here.

J'ai essayé d'utiliser des paramètres quelconques. En cas BeforePrint du contrôle de sous-état, j'ai essayé:

((XRSubreport)sender).ReportSource.FilterString = "[IdPO_RO] = " + _idPurchaseOrder; 

et

((XRSubreport)sender).ReportSource.Parameters["Id"].Value = _idPurchaseOrder; 

Bien sûr, pour le second, j'ai ajouté un paramètre et la chaîne de filtre identique au premier mais en utilisant le paramètre.

+0

Le problème est-il que le sous-rapport se répète 16 fois ou que les données ne sont pas liées aux étiquettes? – Jacob

+0

Oui, les données n'apparaissent pas dans les étiquettes. Mais comme vous pouvez le voir avec les étiquettes qui n'ont pas de source de données, le sous-rapport est lié. – Sebastian

+0

Autre chose: lorsque j'appelle le sous-rapport sans avoir à l'intérieur du rapport principal, il affiche toutes les données des étiquettes. – Sebastian

Répondre

3

Je pourrais résoudre le problème.

La cause de ceci était que j'assignais au mauvais objet. Cette ligne:

report.SubPurchaseOrder.Report.DataSource = tableSubReport; 

devrait être:

report.SubPurchaseOrder.ReportSource.DataSource = tableSubReport; 

Ainsi, la brève explication est que j'utilisais une autre propriété de se référer au rapport figurant dans le contrôle de sous-état (XRSubreport).

Questions connexes