2012-03-29 5 views
0

Ich verwende SAP CR für VS 2010 in Cis. Ich habe fünf Tabellen und ich verbinde sie mit der folgenden Abfrage:SAP Crystal Reports für VS 2010. Ändern Sie die Abfrage zur Laufzeit

query = "SELECT Items.AccessionNo, Items.Name, Items.LocalName, Items.Usage, Items.Province, Items.District, Items.VillTown, Items.EthnicCommunity, Arts.Name, Items.PurchasedDonated, Items.PurchasedFrom, Items.YearOfCollection, Items.Material, Items.Height, Items.Width, Items.Length, Items.Circumference, Items.Diameter, Items.Color, Items. Alter, Items.Weight, Items.PurchasedValue, Items.Rare, Items.LivingDyingTrad, Items.ManufacturingProcess, Items.PlaceOfManufacturing, Items.ConditionReport, Items.Recommandations, Items.DateOfAddition, Items.Placement, Donators.Name, Collectors.Name, Placement.Name FROM Elemente INNER JOIN Kunst ON Items.ArtId = Arts.ArtId INNER JOIN Donatoren ON Items.DonatorId = Donators.id INNER JOIN Collectors ON Items.CollectorId = Collectors.id INNER JOIN Platzierung ON Items.PlacementId = Pla zement.id WHERE Artikel.id = "+ Artikel-ID;

Das Problem besteht darin, dass der Bericht noch mehrere Ergebnisse mit der bereits eingebetteten Abfrage zum Zeitpunkt des Entwurfs zeigt.

ich den folgenden Code bin mit der obigen Abfrage

  SqlCommand cmd = new SqlCommand(query, dbconn.conn); 
      if (dbconn.conn.State == ConnectionState.Closed) 
      { 
       dbconn.conn.Open(); 
      } 

      SqlDataAdapter Datadpt = new SqlDataAdapter(cmd); 

      DataSet dtset = new DataSet("items"); 
      Datadpt.Fill(dtset); 
      //rep is the Report document object already defined 
      rep.Load(@"..\..\Reports\CRItem.rpt"); 
      rep.SetDataSource(dtset); 
      CRViewer.ReportSource = rep; 
      if (dbconn.conn.State == ConnectionState.Open) 
      { 
       dbconn.conn.Close(); 
      } 
      this.CRViewer.RefreshReport(); 

Irgendwelche Vorschläge zu übergeben?

+0

Haben die Ergebnisse alle den gleichen 'Items.id' Wert? –

+0

Nein Bericht zeigt alle Zeilen in der Datenbank an. Es filtert die Daten nicht nach einer Abfrage. – user1300054

+0

macht 'this.CRViewer.Refresh(); 'etwas anderes als' this.CRViewer.RefreshReport(); '? –

Antwort

0

whoooosss ..... ich habe es. Die CrystalReportViewer-Auswahlformel ist von der Berichtsdokument-Datensatzauswahlformel getrennt. Datensatzauswahl Formel, die Sie im Crystal Report erstellt haben, wird in der Eigenschaft ReportDoc.RecordSelectionFormula gespeichert. Wenn Sie Ihr ReportDoc in ReportViewer laden, übernimmt es nicht den Wert .RecordSelectionFormula für seine Eigenschaft ReportViewer.SelectionFormula. Also, was ich habe ist ....

Meine Objekte sind:

ReportDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument 
ReportViewer As CrystalDecisions.Windows.Forms.CrystalReportViewer 
FlexReportDoc.SetParameterValue("Reference", gsReference) 

Nach notwendigen Parameter übergeben, wenn Sie welche haben ...

ReportViewer.ReportSource = FlexReportDoc 
ReportViewer.SelectionFormula = FlexReportDoc.RecordSelectionFormula 

Sie den Wert FlexReportDoc.RecordSelectionFormula zuweisen müssen Eigenschaft zu ReportViewer.SelectionFormula.