首页 > 解决方案 > 使用 SQL 语句将多个参数传递给 tableadapter

问题描述

我试图将多个参数传递给 Visual Studio 中的填充 Tableadapter 方法,当我在程序中运行它时出现“方法或操作未实现”错误。我对 C# 有一个模糊的了解,但仍在学习。VS 在代码中没有发现任何错误,当我在 DataSet 设计器中测试它时,SQL 查询工作得很好。编码对我来说很有意义,我觉得它应该可以工作,但我显然遗漏了一些东西,我一生都无法弄清楚它是什么。

这是时间表程序的开始。应该发生的是当用户单击搜索按钮时,它会运行查询并显示结果。该查询采用从下拉框中选择的员工姓名,并显示该员工在从两个日期时间选择器中选择的日期范围内的所有条目。下面是 SQL 语句,如所述在测试时工作正常……然后是按钮单击的代码,这是我必须遗漏的地方。谁能弄清楚为什么我可能会收到该错误?

SELECT Customer, Department, Brand, Model, TotalTime, AMPM, InvoiceNumber, Date, Day, TechName, EntryID, Remarks
FROM Entries WHERE TechName = @TechName AND Date BETWEEN @Date1 AND @Date2


        private void searchButton_Click(object sender, EventArgs e)
        {

            if ((techNameComboBox.Text.Length > 0)
            && (dateDateTimePicker.Text.Length > 0)
            && (dateDateTimePicker1.Text.Length > 0))

            try
            {
                this.entriesTableAdapter.FillByDateRange(
                    this.timeSheetEntriesDataSet.Entries, (techNameComboBox.Text, dateDateTimePicker.Text, dateDateTimePicker1.Text));
            }

            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
          }

标签: c#sqltableadapter

解决方案


您现在可能已经解决了这个问题,但是如果您的查询是

SELECT Customer, Department, Brand, Model, TotalTime, AMPM, InvoiceNumber, Date, Day, TechName, EntryID, Remarks
FROM Entries 
WHERE TechName = @TechName AND Date BETWEEN @Date1 AND @Date2

在 tableadapter 中,方法签名将是

FillBy(table, tech name, date1, date2)

但是您似乎是通过尝试传递 valuetuple 来调用它

FillByDateRange(this.timeSheetEntriesDataSet.Entries, (techNameComboBox.Text, dateDateTimePicker.Text, dateDateTimePicker1.Text))

首先,删除参数周围的括号。其次,如果数据库中的日期列确实是日期,那么 date1 和 2 的参数将是 c# 日期时间类型,而不是字符串,因此您应该从 datetimepicker 传递值

FillByDateRange(timeSheetEntriesDataSet.Entries, techNameComboBox.Text, dateDateTimePicker.Value, dateDateTimePicker1.Value)

推荐阅读