public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName, s.SPartCode, s.ModelID, s.SPartLocation, s.SPartActive, s.SPartSalePrice }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; } }
J’essaie de générer un rapport de cristal dans la table SQL. SPartSalePrice est nullable en raison de celui de c.SetDataSource (d); exception venir s’il vous plaît le résoudre
Utilisez les opérateurs de fusion ou conditionnels nuls de votre projection anonyme pour mapper le null
:
Coalescence:
var d = (from s in db.TblSpareParts select new { s.SPartName, ..., SPartSalePrice = s.SPartSalePrice ?? 0.0, ... }).ToArray();
Conditionnel (pas vraiment utile pour les valeurs nulles, mais utile pour projeter d’autres valeurs)
SPartSalePrice = s.SPartSalePrice == null ? 0.0 : s.SPartSalePrice,
Un nom doit être atsortingbué au champ (j’ai conservé l’original, SPartSalePrice
), et le type
de substitution ( 0.0
) doit correspondre au type du champ.
Peut-être qu’une de vos valeurs d’object est Null. essayez quelque chose comme ça
private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName?? DBNull.Value, s.SPartCode?? DBNull.Value, s.ModelID ?? DBNull.Value, s.SPartLocation ?? DBNull.Value, s.SPartActive ?? DBNull.Value, s.SPartSalePrice ?? DBNull.Value, }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; }
Essaye ça :
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { RST_DBDataContext db = new RST_DBDataContext(); var d = (from s in db.TblSpareParts select new { s.SPartName, s.SPartCode, s.ModelID, s.SPartLocation, s.SPartActive, newPartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice }).ToArray(); CrystalReport1 c = new CrystalReport1(); c.SetDataSource(d); crystalReportViewer1.ReportSource = c; } }
vous devriez vérifier null dans la sélection avec
s.SPartSalePrice == null ? 0 : s.SPartSalePrice
si elle est nulle ou non si elle est nulle, elle retournera 0 sinon elle retournera la valeur et l’affectera à la nouvelle variable
newPartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice
Le type de données iF est Ssortingng puis
SPartSalePrice =s.SPartSalePrice == null ? "" : s.SPartSalePrice;
qui affiche vide si les données sont nulles sinon montrent les données.
Si le type de données est int alors
PartSalePrice = s.SPartSalePrice == null ? 0 : s.SPartSalePrice
Vérifiez dans votre classe si vous n’avez qu’un seul atsortingbut nullable comme celui-ci: décimal? , mettez-le en décimal. Pour tous vos atsortingbuts qui ont le point d’interrogation dans leur déclaration, supprimez simplement le point d’interrogation et exécutez-le.