错误:没有给出一个或多个必需参数的值

Dur*_*rga 5 c# ms-access

我试图通过dataetimepicker's month and year value与存储在类型的数据库列中的日期进行比较来获取Id Date/Time,下面是我正在使用的查询,但它显示我在此行中出现以下错误while (rs.Read())

错误

No value given for one or more required parameters.
Run Code Online (Sandbox Code Playgroud)

public int GetDrID_MonthWise(string DrName,int month,int year, int refDrID)
{
    int data = 0;
    try
    {
        string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart(mm,p.[RegDate])=@month AND datepart(yyyy,p.[RegDate])=@year AND p.DoctorID=" + refDrID;
        cmd = new OleDbCommand(sql, acccon);
        cmd.Parameters.AddWithValue("@month", month);
        cmd.Parameters.AddWithValue("@year", year);
        rs = cmd.ExecuteReader();
        while (rs.Read())
        {
            data = Convert.ToInt32(rs[0]);
        }
    }
    catch (Exception err)
    {
        MessageBox.Show(err.Message.ToString());
    }
    return data;
}
Run Code Online (Sandbox Code Playgroud)

我正在传递像这样的月份和年份值,我在哪里做错了?

int month = dateTimePickerMonth.Value.Month;
int year = dateTimePickerMonth.Value.Year;
Run Code Online (Sandbox Code Playgroud)

Reg*_*gon 3

您的查询有误,请这样做,

 string sql = "Select d.DoctorID From Doctor_Master d,Patient_registration p where d.LastName + ' ' + d.FirstName = '" + DrName + "' AND datepart("m",p.[RegDate])=@month AND datepart("yyyy",p.[RegDate])=@year AND p.DoctorID=" + refDrID;
Run Code Online (Sandbox Code Playgroud)

注意:您必须在 ms 访问的 DatePart 函数中用“”括起日期间隔,并且只能使用单个 m 表示月份。如果您没有将 yyyy 和 m 用“”括起来,系统会认为 yyyy 和 m 是参数以及这些参数的预期值。

如果您在 Ms-Aceess sql 视图中执行查询,则会显示此消息“输入参数值”。

在此输入图像描述