Aiuto per capire errore codice

giovedì 04 giugno 2009 - 09.59

danvagna Profilo | Junior Member

ciao a tutti...ho scritto del codice e non capisco perchè non funzioni...a livello logico dovrebbe andare e invece...nulla...nel codice che posterò metterò un commento nel punto in cui mi da l errore

protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); String connectionString = "dati per la connessione al db;"; SqlConnection cn = new SqlConnection(connectionString); SqlDataReader myReader = null; XmlDocument doc = new XmlDocument(); String testoquery = ""; XmlNodeList nodi; doc.Load("C:/.../queries.xml"); nodi = doc.GetElementsByTagName("query"); foreach (XmlNode nodo in nodi) { if (nodo.FirstChild.InnerText == "default") testoquery = nodo.FirstChild.NextSibling.InnerText; } SqlCommand cmd = new SqlCommand(testoquery, cn); try { cn.Open(); myReader = cmd.ExecuteReader(); dt.Load(myReader); gvdati.DataSource = elaboraquery(dt,cn,myReader); gvdati.DataBind(); myReader.Close(); } catch (SqlException) { } finally { cn.Close(); } } public DataTable elaboraquery(DataTable dt,SqlConnection cn, SqlDataReader myReader) { XmlDocument doc = new XmlDocument(); String testoquery = ""; XmlNodeList nodi; doc.Load("C:/.../queries.xml"); nodi = doc.GetElementsByTagName("query"); DataTable app = new DataTable(); foreach (DataRow row in dt.Rows) { foreach (XmlNode nodo in nodi) { if (nodo.FirstChild.InnerText == "deannocorrente") { myReader = null; testoquery = nodo.FirstChild.NextSibling.InnerText; SqlCommand cmd = new SqlCommand(testoquery, cn); myReader = cmd.ExecuteReader(); app.Load(myReader);//IN QUESTO PUNTO MI TORNA AL CATCH DEL METODO Page_Load if (app.Columns["libro_orestato"] != null) { dt.Columns.Add(app.Columns["libro_prestato"]); } else dt.Columns.Add(""); } } } return dt; }


secondo voi perchè mi da l errore che ho messo nel commento?

paoval72 Profilo | Senior Member

Ciao. Il messaggio di erroer cosa ti dice?
PV

danvagna Profilo | Junior Member

ho messo un breakpoint nella riga myReader = cmd.ExecuteReader(); quella immediatamente sopra alla riga commentata con l errore e quando premo F11 alla riga successiva( app.Load(myReader); ) vengo rimandato al catch contenuto in Page_Load




[modifica]
sono riuscito a farmi dare questo errore "The data types nvarchar and text are incompatible in the equal to operator"...siccome faccio una query parametrica potrebbe essere che l errore sussiste perchè SqlDbType.Text non è la cosa migliore per passare come parametro una stringa?.[/modifica]

ok ho risolto...il problema era che per passare come parametro una stringa ad una query paramentrica invece diusare SqlDbType.Text bastava usare SqlDbType.Text.ToString()

paoval72 Profilo | Senior Member

Bene!
Buon lavoro!

danvagna Profilo | Junior Member

grazie :)

una curiostà...ho un datatable a1 e un datatable a2 e vorrei avere a1 con tutte le sue colonne e in più alcune colonne di a2...esiste un modo o devo scrivermi un metodo che fa questa cosa?

paoval72 Profilo | Senior Member

ma sono due datatable con colonne diverse o le colonne che vuoi aggiungere sono dello stesso tipo del dt1?

PV

danvagna Profilo | Junior Member

mmm vediamo..nel datatable a1 ho 2 colone...in una salvo il nome degli eventi e in un altra salvo il numero di partecipanti(la query mi restituiva il numero di eventi con più partecipanti). nel datatable a2 salvo le info di una query parametrica la quale mi da per l anno 200X il numero di partecipanti a tutti gli eventi presenti nella colona eventi di a1..in pratica i parametri della query sono le date e il nome dell evno che prendo da a1...quindi alla fine avere una tabella così strutturata....una colonna con il nome evento,una col numero di partecipanti(in totale) e n colonne col numero di partecipanti a quell evento nell anno 200X

paoval72 Profilo | Senior Member

Ciao, scusa se sono sparito, ma ogni tanto lavoro!
Mi hai scritto di due query: puoi postarle?

PV

danvagna Profilo | Junior Member

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

in parte ho riadattato il codice che ho trovato in un post vecchio qui su dot net hell...ho visto che da solo un problema(che poi era quello che mi capitò un po' di tempo fa) in patica se si hanno n colonne con x record la nuova colonna sarà scritta dal record x+1... questo proverò a correggerlo nel pomeriggio
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