Seguint amb la sèrie de la clsDades aquesta és la funció que s'encarrega de contar quants registres hi ha a la BBDD que compleixin un cert criteri. Fa servir la SP COUNT per fer-ho. Fa servir els mateixos paràmetres que el GET (que són els mateixos que el QUERY), es a dir es poden aplicar els mateixos criteris de cerca que quan es fa un GET però enlloc d'obtenir registres retorna només el número de registres. Això és útil quan hi ha una barra de progres i es vol saber el número total de registres, o quan s'ha de calcular el número de pàgines... Fa servir ParamsQUERY per informar els seus paràmetres. La funció només admet un Dictionary per informar els seus paràmetres, no cal que siguin tots, només el que volem filtrar. Com sempre el codi:
public int COUNT(Dictionary<string, string> Params)
{
SqlCommand SqlComm = new SqlCommand();
SqlParameter SqlParam;
bool LocalConn;
SqlConnection Conn = null;
int Result = 0;
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;
foreach (clsCamp Camp in ParamsQUERY)
{
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.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spCOUNT;
Result = int.Parse(SqlComm.ExecuteScalar().ToString());
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
return Result;
}
|