Problema con codigo,:(

13/09/2004 - 15:12 por Jose Luis Paz | Informe spam
Hola, mi problema es el siguiente:
Tengo el siguiente codigo para acceder a una bdAccess :

private float GetMedia(string login)
{
float media;
string SqlConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;" +@"Data source=
C:\PFC\dbTests.mdb";
string SqlString ="SELECT AVG
(NUMFALLOS)FROM tests_realizados WHERE
(LOGIN='"+login+"')";


OleDbConnection conn= new
OleDbConnection(SqlConnectionString);
OleDbCommand cmd = new
OleDbCommand(SqlString,conn);
try
{
conn.Open();

OleDbDataReader dbReader=cmd.ExecuteReader();
if (dbReader.Read())
{
media= (float)dbReader.GetFloat(0);
}
else media=0;
}

dbReader.Close();
conn.Close();
return media;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return 0;
}
}


Al ejecutar el método me da el siguiente error :

No se puede convertir el valor de los datos por otras
razones que no sean la falta de correspondencia de signo
ni el desbordamiento de los datos. Por ejemplo, los datos
están dañados en el almacén de datos aunque la fila se
puede recuperar.


¿Qué es lo que tengo mal?
 

Leer las respuestas

#1 Jorge Serrano [MVP VB]
19/09/2004 - 12:25 | Informe spam
Hola Jose Luis,

utiliza tu sentencia SQL como:

"SELECT AVG(NUMFALLOS) AS RES FROM tests_realizados WHERE
(LOGIN='"+login+"')"

Además, deberías utilizar también:

media = Convert.ToSingle(dbReader["RES"]);



No olvides tampoco utilizar la claúsula finally en tu código para poner ahí
las partes correspondientes de cerrar los controles y objetos y si puedes,
declara dbReader antes para tener la posibilidad de cerrarlo en la claúsula
finally.

Un saludo,


Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/
No te olvides de:
http://www.microsoft.com/spanish/ms...des/vbnet/

Frase: "Si le das pescado a un hombre hambriento, le nutres durante una
jornada. Si le enseñas a pescar, le nutrirás toda su vida." Lao-Tsé - 600 AC
[aprox]





"Jose Luis Paz" escribió en el mensaje
news:affd01c49993$541bb240$
Hola, mi problema es el siguiente:
Tengo el siguiente codigo para acceder a una bdAccess :

private float GetMedia(string login)
{
float media;
string SqlConnectionString @"Provider=Microsoft.Jet.OLEDB.4.0;" +@"Data sourceC:\PFC\dbTests.mdb";
string SqlString ="SELECT AVG
(NUMFALLOS)FROM tests_realizados WHERE
(LOGIN='"+login+"')";


OleDbConnection conn= new
OleDbConnection(SqlConnectionString);
OleDbCommand cmd = new
OleDbCommand(SqlString,conn);
try
{
conn.Open();

OleDbDataReader dbReader=cmd.ExecuteReader();
if (dbReader.Read())
{
media= (float)dbReader.GetFloat(0);
}
else media=0;
}

dbReader.Close();
conn.Close();
return media;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return 0;
}
}


Al ejecutar el método me da el siguiente error :

No se puede convertir el valor de los datos por otras
razones que no sean la falta de correspondencia de signo
ni el desbordamiento de los datos. Por ejemplo, los datos
están dañados en el almacén de datos aunque la fila se
puede recuperar.


¿Qué es lo que tengo mal?

Preguntas similares