Help Casting sql e c#

martedì 14 settembre 2004 - 09.19

ozziii Profilo | Newbie

E ormai 2 giorni che provo a correggere questo errore:
Invio una query dove ho come risultato un count(*) [as n_pose]
Logicamente count() restituisce un intero!
Quando vado a convertire il DataRow in in “(int)riga[“n_pose”]”
Mi da un errore! Specified cast is not valid
Non è valido il cast da ogetto e int
Se provo a fare lo stesso cast con un campo numerico tipo “id” contenuto nella tabella non ho nessuna eccezione!!

//---------------------ecco il codice--------------------------
string str= ConfigurationSettings.AppSettings["sconn"];
// richiama la variabile stringa di connessione nel web.config

OleDbConnection cn = new OleDbConnection(str);
cn.Open();


string sql= "SELECT *,user.nick as nicka FROM [user] LEFT JOIN [SELECT nick , int(count(*)) as n_pose FROM risposte GROUP BY nick ]. AS ris ON ris.nick=user.nick";




OleDbCommand cmd = new OleDbCommand(sql, cn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds,"user");

DataColumn dc = new DataColumn();

dc = new DataColumn("grado", Type.GetType("System.String"));
dc.ColumnMapping = MappingType.Attribute;
ds.Tables["user"].Columns.Add(dc);

dc = new DataColumn("qualifica", Type.GetType("System.String"));
dc.ColumnMapping = MappingType.Attribute;
ds.Tables["user"].Columns.Add(dc);


//---------------Modifica data grid-----------------
foreach(DataRow riga in ds.Tables[0].Rows)
{


if ((int)riga["n_pose"] > 500 ) riga["grado"]="rank5.png";//riga errata


//-------ecc...


ho pensato a due soluzioni 1 faccio il cast da sql (che ignoro come si faccia)
oppure casto in maniera diversa da asp.net

ho provato di tutto tipo:
prima conversione in stringa e poi in int;
assegno il valore riga[“n_pose”] a un’altra colonna di tipo int creata da me nel DataSet
non so + come fare HELP me!!!!!!!!

GvnnRules Profilo | Senior Member

E' un caso molto strano, potrei dirti di provare a controllare se il campo [n_pose] non è nullo, magari stai facendo un cast in int di un valore nullo e ti da errore.

ciaoz

Gvnn

ozziii Profilo | Newbie

si infatti.
Mi sa che sql restituisce null se il count è 0 ma come faccio a trasformarlo in int lo stesso?

ozziii Profilo | Newbie

l'if è inutile perche non è un errore di run-timer ma un errore di compilazione comunque ho risolto con una query ad'oc grazie per l'aiuto lo stesso :-))
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