Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
PROBLEMI SU PULSANTE PER CAMBIARE PAGINA
martedì 09 marzo 2010 - 23.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mauri1961
Profilo
| Senior Member
218
messaggi | Data Invio:
mar 9 mar 2010 - 23:21
Ho una pagina dove ho inserito un button per passare su un'altra pagina con l'aggiunta di un campo per poter leggere altri dati.
Ho inserito una sub con questo codice:
Sub accanto(ByVal sender As Object, ByVal e As EventArgs)
Dim conn As New SqlConnection("Data Source=PC-MAURIZIO; Initial Catalog=CASSAWEB;Integrated Security=SSPI")
Dim command As New SqlCommand("select * from web_sinda where sin_codice=' " & Request.QueryString("coditta").ToString() & "'", conn)
conn.Open()
Dim dr1 As SqlDataReader = command.ExecuteReader()
If dr1.Read Then
Session.Add("codope", dr1("sin_codice"))
Response.Redirect("vw-accasin.aspx")
End If
conn.Close()
End Sub
tuttavia lanciando il programma si schianta con questo messaggio:
Riferimento a un oggetto non impostato su un'istanza di oggetto
Sono abbastanza inesperto e non capisco come risolverlo.
Grazie, Maurizio
fguida
Profilo
| Expert
524
messaggi | Data Invio:
mer 10 mar 2010 - 12:21
dr1.Read ...non mancano le parentesi tonde?
Francesco
mauri1961
Profilo
| Senior Member
218
messaggi | Data Invio:
mer 10 mar 2010 - 14:34
Non funziona, mi dice che il riferimento ad un oggetto non è impostato ad una istanza di oggetto....
Ciao, Maurizio
sankyu
Profilo
| Senior Member
266
messaggi | Data Invio:
mer 10 mar 2010 - 23:27
potrebbe essere che quando chiami la pagina manca la QueryString("coditta"), poi ci sono un sacco di altri problemi:
1-"select * from web_sinda where sin_codice=' " & Request.QueryString("coditta").ToString() & " NON si fa pena attacco tramite sql injection e devastazione del database si corregge cosi
"select * from web_sinda where sin_codice=@codice"
command.parameters.addwithvalue("@codice",Request.QueryString("coditta").ToString())
2- la connessione va chiusa prima di fare response.redirect se no rimane aperta e dopo un po sql server si incazza!!
3-personalmente non mi piace la sintassi inline riscriverei il tutto così
dim cmd as new sqlcommand
cmd.connection=conn
cmd.commandtext="select * from web_sinda where sin_codice=@codice"
cmd.parameters.addwithvalue("@codice",Request.QueryString("coditta").ToString())
dim reader as sqldatareader
cmd.connection.open
reader=cmd.executereader
if reader.hasrow then
reader.read()
session("codope")=reader("sin_codice")
endif
cmd.connection.close
response.redirect("vw-accasin.aspx")
4-la query è inutile!! non ti serve fare un select * se poi utilizzi lo stesso valore del where meglio un select count(*) e vedi se il reader.hasrows =true per sapere se il dato esiste nel db (risparmi memoria)
5-Consiglio: quando ho iniziato pure io avevo i tuoi stessi problemi, fai tanto esercizio prima di andare in produzione se no poi sono zzi Amari
6- qualsiasi cosa posta sul forum appena ho tempo rispondo!
mauri1961
Profilo
| Senior Member
218
messaggi | Data Invio:
gio 11 mar 2010 - 09:33
Ti ringrazio per i preziosi consigli, effettivamente di mettere nella select @codice ci ero arrivato dopo che avevo postato la richiesta di aiuto, tuttavia pur editando il codice come mi hai segnalato continua a darmi lo stesso errore.
La request.querystring("coditta") la utilizzo nella sub page_load per poter leggere la tabella del database e mandarmi a video i campi desiderati che sono un ulteriore dettaglio di altri visualizzati in una pagina precedente (e tutto questo lo fa correttamente).
Il maligno button che sull' on click attiva la sub "accanto" nelle mie intenzioni doveva aprire una ulteriore pagina che andasse a leggere una tabella diversa ma con lo stesso campo di richiamo.
Mi chiedo se l'errore "RIFERIMENTO A UN OGGETTO NON IMPOSTATO SU UN'ISTANZA DI OGGETTO" non si debba al fatto che la request.querysting non contenga più il valore quando clicco sul pulsante.
Grazie ancora, Maurizio.
p.s. sto scrivendo queste pagine di codice in previsione di un utilizzo futuro per la ditta presso la quale lavoro, quindi mi servono proprio per fare esperienza. Hai perfettamente ragione quando mi consigli di immagazzinare codici su codici, ho vent'anni di esperienza con linguaggi cobol più o meno evoluti e so benissimo quanto sia importante essere padroni del mezzo... sicuramente questi forum sono un aiuto preziosissimo che nei miei primi anni di lavoro non esistevano.
sankyu
Profilo
| Senior Member
266
messaggi | Data Invio:
gio 11 mar 2010 - 09:47
Mi ha incuriosito questo errore puoi postare il codice di entrambe le pagine che vediamo di risolvere
mauri1961
Profilo
| Senior Member
218
messaggi | Data Invio:
gio 11 mar 2010 - 10:19
1297_codiceasp.zip
Ti ho allegato i codici di tre programmini.
Cerco di spiegarti: il primo (Vw-sinope) mostra una grid-view dalla quale si può selezionare una riga e accedere alla pagina successiva con i dati del record selezionato.
Nel codice VW-dettope si vede il dettaglio completo della tabella riassunta nella gridview della pagina precedente. il dettaglio lo legge grazie alla famosa Request.querystring con una query nella sub page_load
(funziona tutto correttamente).
Il problema sorge quando voglio accedere alla terza pagina (vw-accasin) che è ancora abbozzata e dovrebbe solo mostrare alcuni dati della medesima tabella (tanto per vedere se funziona il passaggio).
E' proprio al cliccare del bottone e del richiamo della sub "accanto" che il codice mi segnala l'errore.
Grazie, Maurizio
Torna su
Stanze Forum
Elenco Threads
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 !