2017-10-14 20 views
0

我想检查重复的记录,其中它的领域之一是日期重复的年份值... TxtNum是文本框和DtDate是的DateTimePicker并呼吁CHECK_DUPLICATE检查从的DateTimePicker

在我的情况我不存储过程吨要检查的确切日期..但年仅..例如..记录被复制如果两个条目是txtNum = 1000和这两个领域的年值是2017

public DataTable CHECK_DUPLICATE(string txtNum, string dtDateYear) 
{ 
    DataTable dt = new DataTable(); 
    SqlParameter[] param = new SqlParameter[2]; 

    param[0] = new SqlParameter("@txtNum", SqlDbType.NVarChar, 50); 
    param[0].Value = txtNum; 

    param[1] = new SqlParameter("@dtDateYear ", SqlDbType.NVarChar, 5); 
    param[1].Value = dtDateYear; 

    dt = DAL.SelectData("CHECK_PROCURATION_DUPLICATE", param); 
    DAL.close(); 
    return dt; 
} 

private void btnAddProcuration_Click(object sender, EventArgs e) 
{ 
    string year = DtDate.Value.ToString("yyyy"); 

    DataTable dt = new DataTable(); 
    dt = CHECK_DUPLICATE (txtNum.Text, year); 
    if (dt.Rows.Count > 1) 
     MessageBox.Show("Duplicated records", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     return; 
    } 
} 

SQL:

CREATE PROCEDURE [dbo].[CHECK_DUPLICATE] 

    @Num nvarchar (50), 
    @Year nvarchar (5), 

AS 
    BEGIN 
     SELECT Num, DATEPART(YEAR, MyDate) AS 'Year' 
     FROM tblMyList 
     WHERE  Num = @Num AND MyDate = @Year 
    END 

但它没有奏效......它保存记录,即使它是重复的。

+0

在其中一句是什么 “的myNum”? –

+0

对不起..它的'Num'不是'MyNum' ..我编辑问题 –

回答

1

应该MyDate = @YearDATEPART(YEAR, MyDate) = @Year,如:

CREATE PROCEDURE [dbo].[CHECK_DUPLICATE] 

@Num nvarchar (50), 
@Year nvarchar (5), 

AS 
BEGIN 
    SELECT Num, DATEPART(YEAR, MyDate) AS 'Year' 
    FROM tblMyList 
    WHERE Num = @Num AND DATEPART(YEAR, MyDate) = @Year 
END 
+0

它的工作...谢谢你 –