这两天一直在做水晶报表,由于自己用的是强类型DATASET指定数据源,所以就把查询出来的语句填充到DATASET的表中,在DTP.FILL(填充)的时候就会报错不知道是什么原因,异常提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值 ,但是仔细检查代码在查询分析器也可以执行通过.下面是我的代码麻烦看看
string sql="";
CrystalReport.crvWLTrafficCargoLater crv = new CrystalReport.crvWLTrafficCargoLater();
Datasets.crvWLTrafficCargoLater ds = new Datasets.crvWLTrafficCargoLater();
DA.DATA d = new DA.DATA();
cmd.Connection =d.GetConnection(BLL.BLL_public_bianliang.Server,BLL.BLL_public_bianliang.Name,BLL.BLL_public_bianliang.Password);
cmd.CommandType = CommandType.Text;
dtp.SelectCommand =cmd; sql = "select * from T_Company_Enrol where CompanyName = '" + BLL.BLL_public_bianliang.CompanyName + "'";
cmd.CommandText = sql;
dtp.Fill(ds,"T_Company_Enrol"); sql = "select '"+fristTime+"' first,'"+lastTime+"' last,(DATEDIFF(day,planDate,planTime)-1) day,consignee_add,consignment_add,goods_amount,goods_weight,goods_vol,planDate,planTime from  V_WLTrafficCargoLater where planDate between '"+fristTime+"' and '"+lastTime+"' "+
" and  DATEDIFF(day,planDate,planTime)>1 and trafficCompany ='"+trafficCompany+"' "+
"select count(distinct(trafficId)) sump,(select count(distinct(trafficId)) from T_Traffic_Company_AttemperPlan where  planTime between '"+fristTime+"' and "+
"'"+lastTime+"' and trafficCompany ='"+trafficCompany+"'  and DATEDIFF(day,planDate,planTime)>1) sumT from T_Traffic_Company_AttemperPlan where planTime between '"+fristTime+"' and '"+lastTime+"' and trafficCompany ='"+trafficCompany+"' ";
cmd.CommandText = sql;
dtp.TableMappings.Add("Table","V_WLTrafficCargoLater");
dtp.TableMappings.Add("Table1","T_Traffic_Company_AttemperPlan");
dtp.Fill(ds);
ReportDocument rp = new ReportDocument(); rp=crv.OpenSubreport("softwareCompany_headReport.rpt");
rp.SetDataSource(ds);
crv.SetDataSource(ds);
CRVReport.ReportSource=crv;

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8" ?>
    <xs:schema id="crvWLTrafficCargoLater" targetNamespace="http://tempuri.org/crvWLTrafficCargoLater.xsd"
    elementFormDefault="qualified" attributeFormDefault="qualified" xmlns="http://tempuri.org/crvWLTrafficCargoLater.xsd"
    xmlns:mstns="http://tempuri.org/crvWLTrafficCargoLater.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="crvWLTrafficCargoLater" msdata:IsDataSet="true">
    <xs:complexType>
    <xs:choice maxOccurs="unbounded">
    <xs:element name="V_WLTrafficCargoLater">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="first" type="xs:string" minOccurs="0" />
    <xs:element name="last" type="xs:string" minOccurs="0" />
    <xs:element name="day" type="xs:string" minOccurs="0" />
    <xs:element name="goods_amount" type="xs:string" minOccurs="0" />
    <xs:element name="goods_vol" type="xs:string" minOccurs="0" />
    <xs:element name="goods_weight" type="xs:string" minOccurs="0" />
    <xs:element name="consignee_add" type="xs:string" minOccurs="0" />
    <xs:element name="trafficCompany" type="xs:string" minOccurs="0" />
    <xs:element name="planDate" type="xs:string" minOccurs="0" />
    <xs:element name="planTime" type="xs:string" minOccurs="0" />
    <xs:element name="inwareDate" type="xs:string" minOccurs="0" />
    <xs:element name="consignment_add" type="xs:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="T_Traffic_Company_AttemperPlan">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="sump" type="xs:string" minOccurs="0" />
    <xs:element name="sumT" type="xs:string" minOccurs="0" />
    <xs:element name="ord_Id" type="xs:string" />
    <xs:element name="workcode" type="xs:string" />
    <xs:element name="trafficId" type="xs:string" />
    <xs:element name="storageOrderId" type="xs:string" minOccurs="0" />
    <xs:element name="workDate" type="xs:string" minOccurs="0" />
    <xs:element name="trafficCompany" type="xs:string" minOccurs="0" />
    <xs:element name="trafficType" type="xs:string" minOccurs="0" />
    <xs:element name="trafficCarType" type="xs:string" minOccurs="0" />
    <xs:element name="factCarType" type="xs:string" minOccurs="0" />
    <xs:element name="trafficbrand" type="xs:string" minOccurs="0" />
    <xs:element name="trafficDriver" type="xs:string" minOccurs="0" />
    <xs:element name="trafficDistrict" type="xs:string" minOccurs="0" />
    <xs:element name="fancyExtcent" type="xs:string" minOccurs="0" />
    <xs:element name="flow" type="xs:string" minOccurs="0" />
    <xs:element name="workState" type="xs:string" minOccurs="0" />
    <xs:element name="planDate" type="xs:string" minOccurs="0" />
    <xs:element name="planTime" type="xs:string" minOccurs="0" />
    <xs:element name="inwareDate" type="xs:string" minOccurs="0" />
    <xs:element name="client" type="xs:string" minOccurs="0" />
    <xs:element name="arrivePlance" type="xs:string" minOccurs="0" />
    <xs:element name="phone" type="xs:string" minOccurs="0" />
    <xs:element name="planDay" type="xs:decimal" minOccurs="0" />
    <xs:element name="trafficMoney" type="xs:decimal" minOccurs="0" />
    <xs:element name="mUnit" type="xs:string" minOccurs="0" />
    <xs:element name="_finance_Year" type="xs:int" minOccurs="0" />
    <xs:element name="_finance_Month" type="xs:int" minOccurs="0" />
    <xs:element name="_recorder" type="xs:string" minOccurs="0" />
    <xs:element name="_department" type="xs:string" minOccurs="0" />
    <xs:element name="_frist_time" type="xs:string" minOccurs="0" />
    <xs:element name="_last_time" type="xs:string" minOccurs="0" />
    <xs:element name="_software_company" type="xs:string" minOccurs="0" />
    <xs:element name="stateS" type="xs:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="T_Company_Enrol">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="CompanyName" type="xs:string" />
    <xs:element name="CompanyEnglishName" type="xs:string" minOccurs="0" />
    <xs:element name="CompanyForShort" type="xs:string" />
    <xs:element name="Phone" type="xs:string" minOccurs="0" />
    <xs:element name="PostNumber" type="xs:string" minOccurs="0" />
    <xs:element name="Fax" type="xs:string" minOccurs="0" />
    <xs:element name="Email" type="xs:string" minOccurs="0" />
    <xs:element name="CompanyAddress" type="xs:string" minOccurs="0" />
    <xs:element name="CompanyEnglishAddress" type="xs:string" minOccurs="0" />
    <xs:element name="CompanyWeb" type="xs:string" minOccurs="0" />
    <xs:element name="accreditPassword" type="xs:string" minOccurs="0" />
    <xs:element name="Re" type="xs:string" minOccurs="0" />
    <xs:element name="Id" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    <xs:unique name="crvWLTrafficCargoLaterKey1" msdata:PrimaryKey="true">
    <xs:selector xpath=".//mstns:T_Traffic_Company_AttemperPlan" />
    <xs:field xpath="mstns:workcode" />
    </xs:unique>
    <xs:unique name="crvWLTrafficCargoLaterKey2" msdata:PrimaryKey="true">
    <xs:selector xpath=".//mstns:T_Company_Enrol" />
    <xs:field xpath="mstns:CompanyName" />
    </xs:unique>
    </xs:element>
    </xs:schema>
      

  2.   

    上面是我的强类型DATASET中的代码其中 <xs:element name="first" type="xs:string" minOccurs="0" />
    <xs:element name="last" type="xs:string" minOccurs="0" />
    <xs:element name="day" type="xs:string" minOccurs="0" />
    <xs:element name="sump" type="xs:string" minOccurs="0" />
    <xs:element name="sumT" type="xs:string" minOccurs="0" />
    是我定义的临时字段
      

  3.   

    设置
    DataSet.EnforceConstraints = false;