Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218

    profili utente e database

    buongiorno a tutti!

    vorrei sapere come posso gestire i valori null nel caso di database con query i cui parametri sono caricati direttamente dai profili utente...

    ora mi spiego...

    di un utente io considero cognome, primo nome e secondo nome, e dopo il login raccolgo tutto mediante l'oggetto Profile... cioè ho Profile.cognome, Profile.primon e Profile.secondon

    ho poi una query parametrica i cui valori sono forniti appunto dai tre oggetti profile di cui ho parlato poco fa...

    quando mi connetto con un nominativo che ha cognome e due nomi, tutto ok...

    ma non tutti hanno un secondo nome... quando accedo con cognome ed un solo nome la query non funziona più a dovere perchè gli passo male il valore di Profile.secondon... questo l'ho dedotto modificando la query, eliminando nel where la condizione sul secondo nome

    io volevo chiedervi questo: in caso di mancanza di secondo nome, come posso gestire Profile.secondon? che valore assume quando un utente non ha secondo nome?
    che valore posso mandare alla query se un utente non ha secondo nome?

    ringrazio che mi aiuterà perchè proprio tanto!

  2. #2
    Ciao J,

    Puoi scrivere come crei la Query?

    utilizzi AddWithValue ?

    Quel che mi può venire in mente così di primo acchito è controllare che il valore esista
    ed aggiungere la condizione solo se c'è

  3. #3
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218
    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)

  4. #4
    Ciao, premetto che le Stored procedure non le ho mai usate.
    Ma da quel che ho capito il problema non è sulla query sul db
    ma nella visualizzazione sulla pagina dico bene?

  5. #5
    Utente di HTML.it L'avatar di _J_
    Registrato dal
    Apr 2007
    Messaggi
    218
    ciao!
    ho risolto, perchè ho scoperto che i parametri che passo alla sp sono sempre nulli, nel senso che li imposto nel page_load, e se immetto dei valori null (non tutti hanno due nomi...) la stored si lamenta di conseguenza...

    ma ho corretto, impostando una textbox che assume il valore del profile.secondo_nome, e poi passando la textbox come valore, mediante un if:

    if (textbox vuota)
    //codice...
    else
    //textbox come parametro...

    così ci sono riuscito...

    cmq volevo ringraziarti del tuo interessamento

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.