Seguint amb la sèrie de la clsDades aquesta és la funció que s'encarrega d'esborrar un registre a la BBDD. Fa servir la SP DEL per fer-ho. Així que ha de fer servir la variable ParamsDEL per informar-ne els paràmetres. Normalment aquests paràmetres són la primary key (PK), de tal manera que només s'esborra un registre. Existeix en 2 sabors diferents, un que rep un DataRow i un altra que rep un objecte Dictionary (on les Keys són els noms dels camps i els Values el valor). Igual que la funció INS, aquesta també invalida la cache. Com sempre el codi, primer el que rep el Dictionary:
public void DEL(Dictionary<string, string> Params)
{
SqlCommand SqlComm = new SqlCommand();
SqlParameter SqlParam;
bool LocalConn;
SqlConnection Conn = null;
if (SQLConn == null)
{
LocalConn = true;
Conn = new SqlConnection(CadConnBBDD);
Conn.Open();
}
else
{
LocalConn = false;
Conn = SQLConn;
}
SqlComm.Connection = Conn;
if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
SqlComm.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spDEL;
foreach (clsCamp Camp in ParamsDEL)
{
SqlParam = CreaParametre(Camp, false);
if (Params.Keys.Contains<string>(Camp.NomCamp))
{
if (string.IsNullOrEmpty(Params[Camp.NomCamp])) SqlParam.Value = DBNull.Value;
else SqlParam.Value = Params[Camp.NomCamp];
}
else SqlParam.Value = DBNull.Value;
SqlComm.Parameters.Add(SqlParam);
}
SqlComm.ExecuteNonQuery();
if (TeCache && AutoNetejaCache)
{
ClearCache();
}
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
}
I després la versió DataRow:
public void DEL(DataRow DR)
{
SqlCommand SqlComm = new SqlCommand();
SqlParameter SqlParam;
bool LocalConn;
SqlConnection Conn = null;
if (SQLConn == null)
{
LocalConn = true;
Conn = new SqlConnection(CadConnBBDD);
Conn.Open();
}
else
{
LocalConn = false;
Conn = SQLConn;
}
SqlComm.Connection = Conn;
if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
SqlComm.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spDEL;
foreach (clsCamp Camp in ParamsDEL)
{
SqlParam = CreaParametre(Camp, false);
if (DR.Table.Columns.Contains(Camp.NomCamp))
{
if (DR.IsNull(Camp.NomCamp)) SqlParam.Value = DBNull.Value;
else SqlParam.Value = DR[Camp.NomCamp];
}
else SqlParam.Value = DBNull.Value;
SqlComm.Parameters.Add(SqlParam);
}
SqlComm.ExecuteNonQuery();
if (TeCache && AutoNetejaCache)
{
ClearCache();
}
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
}
|