【问题标题】:Query Builder for DATE typeDATE 类型的查询生成器
【发布时间】:2015-06-19 12:43:11
【问题描述】:

我的查询生成器有问题。我有一个要过滤的datagridview。我想允许按“姓名、姓氏、日期”进行搜索。这是我的 SQL 查询

SELECT exDate, exName, exSurname FROM examines
WHERE (exDate = @Param1) AND (exName = @Param2) AND (exSurname = @Param3)

这是我“调用”查询的 C# 代码

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        this.examinesTableAdapter.FillBy(this.dbSpinDataSet.examines, dateTimePicker1.Value, textBox2.Text, textBox3.Text);
    }
    catch (SystemException ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
    }
}

在 VS 中我得到 2 错误说:

"...Project1.dbSpinDataSetTableAdapters.examinesTableAdapter, string, string, string)' 有一些无效参数。" “...无法从 'System.Windows.Forms.DateTimePicker' 转换为 'string'。”

我知道错误在哪里,但我不知道如何解决它。我的查询是在项目数据集中的“查询生成器”中编写的。我去了 FILTER 列的 exDate、exName 和 exSurname 并写了 ?(问号)。查询生成器自动将其转换为上述形式 "= @Param1"、"= @Param2" 和 "= @Param3"。

我知道我不能将 DateTime 视为字符串,但不知道在查询生成器的 FILTER 列中写入什么内容才能使我的代码正常工作。

【问题讨论】:

  • 您的数据库中的exDate 列是什么列类型?
  • 确保 QueryBuilder 中的 exDate 定义也定义为 Date(或 DateTime)类型。然后应该将您的 TableAdapter 的 FillBy 更改为 (tableadapter, datetime, string, string)
  • 您无法在查询生成器中定义变量,因为表是使用向导导入的

标签: c# date query-builder


【解决方案1】:

你必须声明一个字符串变量,它会起作用!

private void button1_Click(object sender, EventArgs e)
   {
      string your_string = dateTimePicker1.Value.ToString();
      try
      {
          this.examinesTableAdapter.FillBy(this.dbSpinDataSet.examines, your_string, textBox2.Text, textBox3.Text);
      }
      catch (SystemException ex)
      {
        System.Windows.Forms.MessageBox.Show(ex.Message);
      }
    }

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2017-12-02
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2011-11-02
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多