2017-10-14 21 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

它的工作...謝謝你 –