2017-10-14 27 views
0

Je suis en train de vérifier les dossiers en double, où l'un de ses champs est la date ... TxtNum est TextBox et DtDate est DateTimePicker et une procédure stockée appelée CHECK_DUPLICATEVérifier la valeur de l'année en double de DateTimePicker

Dans ma situation, je n » t veulent vérifier la date exacte .. mais l'année seulement .. par exemple .. l'enregistrement est dupliqués si deux est entrée txtNum = 1000 et la valeur de l'année des deux champs est 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 

Mais cela n'a pas fonctionné ... il enregistre les enregistrements même s'il s'agit d'un doublon.

+0

Qu'est-ce que "MyNum" dans votre phrase où? –

+0

Désolé ... son 'Num' pas' MyNum' .. je modifie la question –

Répondre

1

devrait être MyDate = @YearDATEPART(YEAR, MyDate) = @Year comme:

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

Cela a fonctionné ... merci –