C#winforms:Microsoft报表查看器

C#winforms:Microsoft报表查看器,c#,.net,winforms,dataset,reportviewer,C#,.net,Winforms,Dataset,Reportviewer,我想通过自动递增ID(文本框和一个按钮)搜索人物。我使用了数据集,并且 Fill,Getdata-->配置 SQL语句: SELECT ID, FirstName, LastName, ContactNo, Address, Date, NameOfJob, OtherJob, Impression, BackPage, NameOfPage, PaperSize, PrintingSize, DesignRupees, JobRupees, Matter, BlackPlate, BlackP

我想通过自动递增ID
(文本框和一个按钮)
搜索人物。我使用了
数据集
,并且

Fill,Getdata-->配置

SQL语句:

SELECT ID, FirstName, LastName, ContactNo, Address, Date, NameOfJob, OtherJob,
Impression, BackPage, NameOfPage, PaperSize, PrintingSize,
DesignRupees, JobRupees, Matter, BlackPlate, BlackPlateRupees, SinglePlate, 
SinglePlateRupees, MultiPlate, MultiPlateRupees, Platename, 
Lamination, Creasing, Binding, Other, Total, Receive, Due, LastRemaining
FROM bill WHERE  ID=@ID
之后,我运行程序,然后出现两个错误:

  • 无法从字符串转换为十进制
  • WindowsFormsApplication9.DataSet1TableAdapters.billTableAdapter.Fill(WindowsFormsApplication9.DataSet1.billDataTable,decimal)匹配的最佳重载方法在此行中有一些无效参数
    错误

    this.billTableAdapter.Fill(this.DataSet1.bill,txt\u search.Text)

  • 因此,您的错误是:

    无法从字符串转换为十进制

    WindowsFormsApplication9.DataSet1TableAdapters.billTableAdapter.Fill(WindowsFormsApplication9.DataSet1.billDataTable,十进制)

    如果查看您试图在
    Fill()
    方法中输入的内容:

    this.billTableAdapter.Fill(this.DataSet1.bill,txt\u search.Text)

    您的错误告诉您的是,它无法将字符串转换为十进制。fill方法要求使用十进制作为第二个参数,但您提供的是字符串(
    txt\u search.Text

    您需要首先将字符串转换/解析为十进制,然后使用此值调用
    .Fill()
    方法


    查看和。

    第二个参数应该是
    decimal
    ,但您正在传递
    string
    值,即
    txt\u search.Text

    因此,您可以将其转换为十进制:

    this.billTableAdapter.Fill(this.DataSet1.bill, (decimal)txt_search.Text);
    


    错误消息“无法从字符串转换为十进制”非常清楚。您正在发送一个字符串,但它需要一个十进制数。现在我已经完成了之后的所有操作,生成了一个新问题…现在未显示错误,但当我按ID搜索时,生成了约束异常:无法启用约束一个或多个行包含违反非空、唯一的值,或外键约束。现在未显示错误,但当我按ID搜索时,生成约束异常:无法启用约束一行或多行包含违反非空、唯一、,或外键约束。可能存在外键冲突。请尝试调试代码并检查
    Dataset1
    @its中的值。问题是什么?以及您为什么接受该答案@ITSnow错误未显示,但当我按ID搜索时,生成约束异常:无法启用约束一行或多行包含违反非null、唯一或外键约束的值。ITS:这是一个SQL错误。您应该查看表、外键和其他约束,以尝试确定问题。如果你运气不好,那就发一个新问题。
    this.billTableAdapter.Fill(this.DataSet1.bill, decimal.Parse(txt_search.Text));