più che una query,è una sp...

cmq ecco il codice:

ALTER PROCEDURE dbo.autocerif_vivenza_carico
(
@cognome varchar(50),
@primon varchar(50),
@secondon varchar(50)
)

AS

/*prima ricavo il codice della famiglia a cui ppartiene chi si connette*/
declare @nf as integer
set @nf=''
select @nf=
(
SELECT ruolo_in_nf_o_conviv.cod_nucleo_familiare
FROM
cittadino
INNER JOIN ruolo_in_nf_o_conviv ON cittadino.cod_persona = ruolo_in_nf_o_conviv.cod_persona

WHERE
(cittadino.cognome = @cognome AND (cittadino.primo_nome = @primon or cittadino.secondo_nome = @secondon))
)

/*in base al codice trovato sopra trovo il capofamiglia*/
SELECT
cittadino.cognome, cittadino.primo_nome, cittadino.secondo_nome,
cittadino.sesso, a.nome_comune_ita, a.provincia, tabella_decod_comuni_est.nome_comune_est,
tabella_decod_stati_esteri.nome_stato_estero, cittadino.data_ora_min_nascita,
tabella_decod_vie_cittadine.nome_via, domicilio.num_civico, domicilio.n_scala,
domicilio.n_piano, domicilio.n_interno, tabella_decod_parentele.nome_parentela
FROM
cittadino
INNER JOIN ruolo_in_nf_o_conviv ON ruolo_in_nf_o_conviv.cod_persona = cittadino.cod_persona
INNER JOIN tabella_decod_parentele ON ruolo_in_nf_o_conviv.cod_parentela_con_is_o_cc = tabella_decod_parentele.cod_parentela
LEFT OUTER JOIN abita_in ON cittadino.cod_persona = abita_in.cod_persona
LEFT OUTER JOIN domicilio ON abita_in.cod_via = domicilio.cod_via
LEFT OUTER JOIN tabella_decod_vie_cittadine ON domicilio.cod_via = tabella_decod_vie_cittadine.cod_via
LEFT OUTER JOIN tabella_decod_comuni_ita AS a ON cittadino.cod_istat_com_ita_nascita = a.cod_comune_ita
LEFT OUTER JOIN tabella_decod_comuni_ita AS b ON cittadino.cod_istat_com_ita_nascita = b.cod_comune_ita
LEFT OUTER JOIN tabella_decod_stati_esteri
LEFT OUTER JOIN tabella_decod_comuni_est ON tabella_decod_stati_esteri.cod_stato_estero = tabella_decod_comuni_est.cod_stato_est_appartenenz a ON cittadino.cod_com_est_nascita = tabella_decod_comuni_est.cod_comune_est
WHERE
(ruolo_in_nf_o_conviv.cod_nucleo_familiare = @nf and ruolo_in_nf_o_conviv.data_rimoz_da_nf_conv is null)
and
(tabella_decod_parentele.cod_parentela='IS' or tabella_decod_parentele.cod_parentela='CC')
RETURN


i parametri li passo lato c#:

private void capofamiglia(TextBox t1,TextBox t2)
{
string sp = "autocerif_vivenza_carico";

//creazione della connessione al configuration manager (web.config)
SqlConnection oConn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dati_generali"].ConnectionString);
SqlCommand oCommand = new SqlCommand(sp, oConn);
oCommand.CommandType = CommandType.StoredProcedure;
try
{
oConn.Open();
}
catch
{
oConn.Close();
oConn.Open();
}

oCommand.Parameters.Add(new SqlParameter("@cognome", SqlDbType.VarChar));
oCommand.Parameters["@cognome"].Value = Profile["cognome"];
oCommand.Parameters.Add(new SqlParameter("@primon", SqlDbType.VarChar));
oCommand.Parameters["@primon"].Value = Profile["primon"];
oCommand.Parameters.Add(new SqlParameter("@secondon", SqlDbType.VarChar));
if (!Profile.secondo_nome.Equals(""))
oCommand.Parameters["@secondon"].Value = Profile["secondon"];
else
oCommand.Parameters["@secondon"].Value = DBNull.Value;

SqlDataReader reader = oCommand.ExecuteReader(); //e creo un lettore di dati

DataTable tabella = new DataTable();
tabella.Load(reader); //carico la tabella con il contenuto del lettore (i record)
oCommand.Dispose(); //rilascia tutto
oCommand = null;
oConn.Close(); //chiudi connessione
t1.Text = tabella.Rows[0]["cognome"].ToString();
t2.Text = tabella.Rows[0]["primonToString();
}

i parametri del metodo t1 e t2 li uso per visualizzare il cognome e primo nome del capofamiglia, ma se aggiungo tra i parametri quello per leggere il secondo nome (ad esempio una textbox t3...) mi contesta il Profile.secondon vuoto (relativo al secondo nome)