2014-02-27 33 views
0

在我的應用程序中,我有3個report.rdlc文件,記錄沒有不同 我在帶有選項按鈕,複選框和組合框的表單中創建查詢值如何在c#中的本地報表(.rdlc)中創建動態查詢

string qry = ""; 
SqlCeConnection cnn = new 

SqlCeConnection(Properties.Settings.Default.ConnectionString.ToString()); 
    SqlCeCommand cmd = new SqlCeCommand(); 

    if (radioButton1.Checked == true) 
    { 
     qry = @"Select Did,Cid,Source,Destination,Sid,cost,sdate,Driver.fname+' '+Driver.lname as driver,payed from Service,Driver where Service.Did=Driver.id"; 
    } 
    else if (radioButton2.Checked == true) 
    { 
     button3.Enabled = true; 
     qry = @"Select Did,Cid,Source,Destination,Sid,cost,sdate,Driver.fname+' '+Driver.lname as driver,payed from Service,Driver where Service.Did=Driver.id and [email protected] "; 

     cmd.Parameters.Add("@param", CmbDriver.SelectedValue); 
    } 

    if (payedRB.Checked == true) 
    { 
     qry += @" and Service.payed=1"; 
    } 
    else if (notpayedRB.Checked == true) 
    { 
     qry += @" and Service.payed=0"; 
    } 

    if (txtDate1.Text != "" && txtDate2.Text != "") 
    { 
     qry += @" and Service.sdate between @pdate1 AND @pdate2"; 
     cmd.Parameters.Add("@pdate1", SqlDbType.NVarChar, 20).Value = txtDate1.Text.Trim(); 
     cmd.Parameters.Add("@pdate2", SqlDbType.NVarChar, 20).Value = txtDate2.Text.Trim(); 
     state = 3; 
    } 
    else if (txtDate1.Text != "") 
    { 
     qry += @" and Service.sdate >= @pdate1"; 
     cmd.Parameters.Add("@pdate1", SqlDbType.NVarChar, 20).Value = txtDate1.Text.Trim(); 
     state = 1; 
    } 
    else if (txtDate2.Text != "") 
    { 
     qry += @" and Service.sdate <= @pdate2"; 
     cmd.Parameters.Add("@pdate2", SqlDbType.NVarChar, 20).Value = txtDate2.Text.Trim(); 
     state = 2; 
    } 

    if (activdr.Checked == true) 
    { 
     qry += @" and Driver.isActive=1"; 
    } 
    else 
    { 
     qry += @" and Driver.isActive=0"; 
    } 

    qry += @" ORDER BY Service.sdate desc,Service.Sid desc"; 

    cmd.Connection = cnn; 
    cmd.CommandText = qry; 
    SqlCeDataAdapter adapter = new SqlCeDataAdapter(cmd); 


       cnn.Open(); 

       adapter.Fill(dt);...... 

我用REPORTTYPE變量在選項按鈕事件知道哪些 報告將在報告查看器中顯示。並將選定的記錄設置爲 數據網格查看器

我的報告從與記錄的 字段兼容的臨時表中獲取數據。在此之前,我將所有記錄(將打印在報告 查看器中)插入臨時表中;

如何將記錄轉換爲沒有臨時表的報告;

回答

0

在本地報告中是不可能有報告本身查詢數據庫。您的應用程序需要查詢數據庫並將結果作爲數據源傳遞給報告。

您需要立即填寫數據集並將此作爲DataSource傳遞給報告。該報告需要定義各自的數據源以提供這些字段的值。

+0

我有dt datatable在我的code.now我怎樣才能通過這個數據表本地報告,如數據庫中的任何表通過數據源和dataset或其他方式?請告訴我參考或代碼..非常感謝 –

+0

你google?搜索詞「c#rdlc dataset」在StackOverflow中顯示至少4個結果。 –