2016-07-14 12 views
0

Ich versuche, meine innere Join-Abfrage in Crystal Report Viewer auszuführen. Die Abfrage funktioniert, wenn sie im Abschnitt "Neue Abfrage" in SQL Server ausgeführt wird.C# WinForm - Crystal Report zeigt nicht das richtige Ergebnis von Inner Join Abfrage

SELECT TABLE1.column1,TABLE2.column1 
FROM TABLE2 INNER JOIN TABLE1 ON TABLE2.Identifier=TABLE1.Identifier 
WHERE DateFrom='1/1/2016' AND DateTo='1/1/2017' 

Aber wenn ich meinen Code in den Bericht einfüge, sind die Ergebnisse im Vergleich falsch. Warum unterscheiden sich die Ergebnisse, wenn diese SQL aus dem Bericht ausgeführt wird?

DBConnection dbcon = new DBConnection(); 

cystalreportName crn = new cystalreportName(); 
private void Form1_Load(object sender, EventArgs e) 
{ 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = dbcon.getcon(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "..."; // the inner join query the I used. 

    SqlDataAdapter da = new SqlDataAdapter(); 
    da.SelectCommand = cmd; 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "TABLE2"); 
    crn.SetDataSource(ds.Tables["TABLE2"]); 

    crystalreportviewer.ReportSource = crn; 
    crystalreportviewer.Refresh(); 
} 
+0

Haben Sie den Inhalt von ds.Tables aussehen [ "TABLE2"]? – Kinetic

+0

Ich habe diese Tabelle in meine Crystal Report-Datenquelle aufgenommen. Aber ich frage mich, warum in meinem Crystal Report Viewer alle Daten darin ausgeführt werden. Die Ausführung wäre etwas wie in meiner inneren Abfragedefinition. –

+0

Haben Sie sich den Inhalt von ds.Tables ["TABLE2"] angesehen, bevor Sie ihn Ihrem Crystal Report zuweisen? – Kinetic

Antwort

0

Ich schlage vor, Ihre Abfrage zuerst an Ihrer Arbeits Datenbank dann in Ihr Projekt einfügen oder in in-Befehl (Crystal Report Wizard) ausführen. Es wird dein Problem lösen.

Wie dieses Beispiel Abfrage:

 
    select a.user_id,a.user_name,b.desctiption from 
    (select user_id,user_name from user) as a 
    left join 
    (select user_id,description from item) as b 
    on a.user_id = b.user_id 



    or you can make it stored procedure: 
    create procedure proc_sample() 
    begin 
     select a.user_id,a.user_name,b.description from 
     (select user_id,user_name from user) as a 
     left join 
     (select user_id,description from item) as b 
     on a.user_id = b.user_id; 
    end 


    Calling procedure: 

    call proc_sample() at your project or in crystal report command 
+0

Wie kann ich proc_sample() in meinem Crystal Report aufrufen? –

+0

verwenden Sie odbc-Verbindung für Ihren Crystal-Bericht? –