首页 > 解决方案 > c# windows form(我只需要打印表单水晶报表1个用户)

问题描述

我正在尝试从水晶报告中打印,但出现错误。这是我想做的图片。文本框用于用户 ID。当我输入 id 然后按下按钮时,我只想打印该用户信息。这是我的代码

if (conect.State != ConnectionState.Open)
        {
            conect.Open();
        }

        string cs = "select * from Sign_Up where ID='"+textBox1.Text+"'";
        OleDbCommand command = new OleDbCommand(cs, conect);
        OleDbDataAdapter adap = new OleDbDataAdapter(command);
        DataSet ds = new DataSet();

        adap.Fill(ds, "Sign_Up");

        CrystalReport1 crs1 = new CrystalReport1();
        crs1.SetDataSource(ds.Tables["Sign_Up"]);
        crs1.SetDataSource(ds);
        crystalReportViewer1.ReportSource = crs1;
        conect.Close();
        crystalReportViewer1.Refresh();

这是我的错误

System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配。”

在这段代码adap.Fill(ds, "Sign_Up");

有人有什么建议吗?

标签: c#ms-access

解决方案


不要将撇号分隔符用于数字类型字段条件,它们用于文本字段。这导致“数据类型不匹配”错误。

string cs = "select * from Sign_Up where ID=" + textBox1.Text;

如果项目具有任何类型的公共可访问性(网络、远程用户),则使用参数将是至关重要的。这sal将是一个声明的参数变量,@表示在 SQL 语句中使用参数。


推荐阅读