日期:2014-05-18 浏览次数:21197 次
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace MZYSZ { public partial class FormSrytalreport : Form { public FormSrytalreport() { InitializeComponent(); } private void FormSrytalreport_Load(object sender, EventArgs e) { try { //string st = SQL.getCon(); SqlConnection con = new SqlConnection(SQL.getCon()); //string sql = "select * from patient_information"; string sql = "select * from patient_cf"; con.Open(); SqlDataAdapter sda = new SqlDataAdapter(sql, con); //DataSet ds = new DataSet(); //CfDataSet cds = new CfDataSet(); //PatientDataSet1 cds = new PatientDataSet1(); CfpatientDataSet1 cds = new CfpatientDataSet1(); sda.Fill(cds, "patient_cf"); //sda.Fill(cds, "patient_information"); CrystalReport1 crr = new CrystalReport1(); //crr.SetDataSource(cds.Tables["patient_information"]); crr.SetDataSource(cds.Tables["patient_cf"]); this.crystalReportViewer1.ReportSource = crr; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } } 我查询表patient_information的时候可以查出数据,但是查视图时patient_cf提示出错。视图patient_cf是表patient_information和表patient 通过p_id字段相等选出来的
SqlConnection con = new SqlConnection(SQL.getCon()); //string sql = "select * from patient_information"; string sql = "select * from patient_cf"; con.Open(); SqlCommand cmd = new SqlCommand(sql, con); SqlDataReader reader = cmd.ExecuteReader(); DataTable dtbl = new DataTable(); // 这个位置添加 DataTable 列,和数据库视图中列名和列数量一致 // dtbl.Columns.Add(...); // dtbl.Columns.Add(...); // ...... int count = reader.FieldCount; while (reader.Read()) { DataRow drw = dtbl.NewRow(); for (int i = 0; i < count; i++) { drw[i] = reader[i]; } } reader.Dispose(); cmd.Dispose(); con.Dispose(); CrystalReport1 crr = new CrystalReport1(); crr.SetDataSource(dtbl); this.crystalReportViewer1.ReportSource = crr;
------解决方案--------------------
while (reader.Read())
{
DataRow drw = dtbl.NewRow();
for (int i = 0; i < count; i++)
{
drw[i] = reader[i];
}
dtbl.Rows.Add(drw);
}
疏忽了,忘了这句,补上就好
------解决方案--------------------
你就把视图当表一样使用就可以了
select * from vw where a=@a and b=@b
或者
select * from vw where a=‘111’ and b=‘222’