SqlDataSource

lunedì 09 marzo 2009 - 13.18

gae58 Profilo | Senior Member

salve,

ho un SqlDataSource (SqlDSTab), che dopo il login trasformo in dataReader per poter prendere il contnuto di alcuni campi. Uso questo codice:
SqlDSTab.DataSourceMode = SqlDataSourceMode.DataReader;
SqlDataReader dr = (SqlDataReader)SqlDSTab.Select(DataSourceSelectArguments.Empty);
dr.Read())
TextBox txb1 = (TextBox)FormView1.FindControl("txbDGT");
txb1.Text = drAna["DGT"].ToString();
dr.Close();
SqlDSTab.DataSourceMode = SqlDataSourceMode.DataSet;

Quando mando in esecuzione la pagina, mi ritorna questo errore:
Riferimento a un oggetto non impostato su un'istanza di oggetto.

Non capisco dove sbaglio. Qualche suggerimento?

grazie


Gaetano

alx_81 Profilo | Guru

>salve,
Ciao!

>Non capisco dove sbaglio. Qualche suggerimento?
hai fatto debug? Dove ottieni l'errore? su che riga? forse sul textbox?

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

scusa per la disattenzione. L'eerrore lo da' sulla riga:
dr.Read()


Gaetano

alx_81 Profilo | Guru

>scusa per la disattenzione. L'eerrore lo da' sulla riga:
>dr.Read()
allora il dr non è valorizzato, è null. Prova fare debug e capire come mai il datareader non viene istanziato.
fermati sulla riga precedente e controlla con un quick watch cosa torna la .Select.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

si, usando il debug ho notatao che il dr è vuoto.

Ci ho smanettato un po' ed ho notato che l'errore era dovuto alla mancata valorizzazione di un parametro.
grazie per il consiglio.

Non so se si possa fare, il dr mi serve per leggere il valore di un campo e questo valore lo uso nell'itemCreated di una formView. Per evitare di aprire e chiudere la tabella, pensavo di aprirla nel pageLoad, memorizzare il dato in una var ed utilizzarlo ad ogni inserimento.

Non sono molto esperto di variabili e per quel che ho letto, si possono usare var pubbliche e di sessione, ma non so, in questo caso, quale convenga usare

qualche consiglio?

grazie


Gaetano

alx_81 Profilo | Guru

>Non so se si possa fare, il dr mi serve per leggere il valore
>di un campo e questo valore lo uso nell'itemCreated di una formView.
>Per evitare di aprire e chiudere la tabella, pensavo di aprirla
>nel pageLoad, memorizzare il dato in una var ed utilizzarlo ad
>ogni inserimento.
>Non sono molto esperto di variabili e per quel che ho letto,
>si possono usare var pubbliche e di sessione, ma non so, in questo
>caso, quale convenga usare
>qualche consiglio?
Ma non hai già messo il valore in una textbox?
Fammi capire bene cosa devi fare..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

ho una formView e ad ogni inserimento valorizzo un campo textBox con il dato di un campo che leggo attraverso il dataReader.

Siccome è sempre lo stesso dato da inserire nel textBox, vorrei leggere il dataReader nel PageLoad, inserirlo in una Variabile ed utilizzarlo all'Interno dell'ItemCreated del formView per Valorizzare il TextBox.

Cosa ne pensi?


Gaetano

alx_81 Profilo | Guru

>ho una formView e ad ogni inserimento valorizzo un campo textBox
>con il dato di un campo che leggo attraverso il dataReader.
>Siccome è sempre lo stesso dato da inserire nel textBox, vorrei
>leggere il dataReader nel PageLoad, inserirlo in una Variabile
>ed utilizzarlo all'Interno dell'ItemCreated del formView per
>Valorizzare il TextBox.
>Cosa ne pensi?
Diciamo che potresti fare nella load una chiamata col metodo ExecuteScalar():

SQLCommand.ExecuteScalar Method
http://msdn.microsoft.com/en-us/library/9kcbe65k.aspx

OLEDBCommand.ExecuteScalar Method
http://msdn.microsoft.com/en-us/library/979byfca.aspx


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

si, ma la mia incertezza è sull'uso delle variabili. Non so quale tipo usare e quando vadano chiuse.


Gaetano

alx_81 Profilo | Guru

>si, ma la mia incertezza è sull'uso delle variabili. Non so quale tipo usare e quando vadano chiuse.
Potresti mettere il valore nel Viewstate, oppure in session, scegli tu.

Session[key] = valore;
Viewstate[Key] = valore;

così persisti il valore letto dall'execute scalar e poi lo leggi con

Session[key];
Viewstate[Key];


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

ti ringrazio,

mi sa che però quando esco dalla webForm devo annullare o azzerare la variabile, giusto?


Gaetano

alx_81 Profilo | Guru

>ti ringrazio,
>
>mi sa che però quando esco dalla webForm devo annullare o azzerare
>la variabile, giusto?
Il viewstate è a livello di pagina, la session a livello di sessione, quindi, nel secondo caso, se non ti serve più al di fuori di quella pagina in cui valorizzi la sessione, puoi pure rimuoverla.


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5