"未能启用约束,一行或多行中包含违反非空,唯一或者外键约束的值 "报表中查询视图时出错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字段相等选出来的
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字段相等选出来的
//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;
{
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’