| Aquesta funció de la clsDades s'encarrega de transformar els paràmetres informats a paràmetres SqlServer i invocar a la stored procedure GET, obtenint els resultats en un taula (objecte DataTable). Per fer-ho fa servir la funció de creació de paràmetres amb la informació de la variable ParamsGET que és tipus clsCamp (es pot veure un exemple aquí.). Si no està informat l'objecte connexió a BBDD en crea una nova fent servir l'string CadConn, i la tanca posteriorment (es a dir, per un accés puntual es pot fer servir directament). Si, al contrari, ja hi ha un objecte connexió creat el fa servir sense modificar-ne l'estat. Això és important ja que si es fan servir múltiples objectes de la clsDades i es vol que tots facin servir la mateixa connexió, sense anar obrint i tancant, caldrà informar-los la connexió (i de forma anàloga la transacció) abans de fer servir l'objecte. Com sempre poso el codi per veure que fa. 
public DataTable GET(Dictionary<string, string> Params)
{
    SqlDataReader Reader = null;
    DataTable Result = new DataTable();
    bool LocalConn;
    SqlConnection Conn = null;
    
    if (SQLConn == null)
    {
	LocalConn = true;
	Conn = new SqlConnection(CadConnBBDD);
	Conn.Open();
    }
    else
    {
	LocalConn = false;
	Conn = SQLConn;
    }
    SqlCommand SqlComm = new SqlCommand();
    SqlParameter SqlParam;
    SqlComm.Connection = Conn;
    if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
    SqlComm.CommandType = CommandType.StoredProcedure;
    SqlComm.CommandText = spGET;
    
    foreach (clsCamp Camp in ParamsGET)
    {
	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);
    }
    
    Reader = SqlComm.ExecuteReader();
    Result.Load(Reader);
    Reader.Close();
    if (LocalConn)
    {
	Conn.Close();
	Conn.Dispose();
	Conn = null;
    }
    return Result;
}
 |