Saltar al contenido

No se puede convertir implícitamente el tipo ‘int?’ a ‘int’.

Luego de consultar expertos en este tema, programadores de deferentes ramas y maestros hemos dado con la respuesta al problema y la plasmamos en esta publicación.

Solución:

Bueno, estás lanzando OrdersPerHour a una int?

OrdersPerHour = (int?)dbcommand.ExecuteScalar();

Sin embargo, la firma de su método es int:

static int OrdersPerHour(string User)

Los dos tienen que coincidir.


También una sugerencia rápida -> Usa parámetros en tu consultaalgo como:

string query = "SELECT COUNT(ControlNumber) FROM Log WHERE DateChanged > ? AND User = ? AND Log.EndStatus in ('Needs Review', 'Check Search', 'Vision Delivery', 'CA Review', '1TSI To Be Delivered')";
OleDbCommand dbcommand = new OleDbCommand(query, conn);
dbcommand.Parameters.Add(curTime.AddHours(-1));
dbcommand.Parameters.Add(User);

esto se debe a que el tipo de devolución de su método es int y OrdersPerHour es int? (anulable), puede resolver esto devolviendo su valor como se muestra a continuación:

return OrdersPerHour.Value

tambien verifica si no es asi null para evitar una excepción como la siguiente:

if(OrdersPerHour != null)


    return OrdersPerHour.Value;


else


  return 0; // depends on your choice


pero en este caso tendrá que devolver algún otro valor en la parte else o después de la parte if; de lo contrario, el compilador marcará un error que indica que no todas las rutas del código devuelven valor.

Int32 OrdersPerHour = 0;
OrdersPerHour = Convert.ToInt32(dbcommand.ExecuteScalar());

valoraciones y reseñas

Si te gusta este mundo, puedes dejar una noticia acerca de qué le añadirías a esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *