none
Error de conversión de datos al leer un datagridview

    Pregunta

  • Hola a todos:

    Tengo el error de "La conversión especificada no es válida".

    Eso me está pasando al leer los datos de un datagridview y usando sqlcompact.

    He probado con varios tipo de conversión y nada. No se que tengo mal o que tengo que añadir, para que me lea los valores.

    Os pongo el código:

    Public Shared Sub MostrarTotalesResultadosExplotInformes() Try ' Creamos el acceso a datos mediante el nombre de la cadena de conexión existente en el archivo de configuración de la aplicación. Dim da As DataAccessInvariant = DataAccessInvariant.GetDataAccessInvariant(Configuracion.CadenaConexion) Dim valor As Integer = AccesoLogica.ObtenerPeriodos() Dim i As Integer ' Declaramos una variable Connection Using cnn As DbConnection = da.CreateConnection() ' Creamos el Commando Dim cmd As DbCommand = cnn.CreateCommand() cnn.Open() cmd.CommandText = "SELECT Orden, (Ejer_01 / @divisor) as Ejer_01, (Ejer_02 / @divisor) as Ejer_02, (Ejer_03 / @divisor) as Ejer_03, (Ejer_04 / @divisor) as Ejer_04, (Ejer_05 / @divisor) as Ejer_05, (Ejer_06 / @divisor) as Ejer_06, (Ejer_07 / @divisor) as Ejer_07, (Ejer_08 / @divisor) as Ejer_08, (Ejer_09 / @divisor) as Ejer_09, (Ejer_10 / @divisor) as Ejer_10, (Ejer_11 / @divisor) as Ejer_11, (Ejer_12 / @divisor) as Ejer_12, PorcTot1, PorcDesv1, PorcTot2 " & "FROM Varios WHERE Cod_Empresa = @empresa AND Orden IN ('016','028')" cmd.Parameters.Add(Configuracion.CreateParameter(cmd, "@divisor", VarGlobal.ValorDivisor)) cmd.Parameters.Add(Configuracion.CreateParameter(cmd, "@empresa", VarGlobal.StrCodEmpresa)) Using dr As DbDataReader = cmd.ExecuteReader() While dr.Read For i = 0 To 11 If dr.GetString(0) = "016" Then IngresosTotalesGraf(i) = dr.GetDecimal(i + 1)

    If dr.GetString(0) = "028" Then Resultados(i) = dr.GetDecimal(i + 1) End While End using End using Catch ex As Exception MessageBox.Show("Bloqueo en carga de Fórmula: '1957'" & vbCrLf & ex.Message & vbCrLf & "Acepte para continuar.", "FINANCIAL SYSTEM", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

    Es cuando lee (en negrita) ese bloque cuando salta la excepción.

    De cualquier forma  añado que para mi el problema está en la cláusula de la select "(Ejer_01 / @divisor) as Ejer_01" que no funciona correctamente, ya que las pruebas hechas en sql server y access funciona correctamente.

    Aclaro, que el campo es decimal(18,5) y la propiedad IngresosTotalesGraf(i) también es decimal. así como la propiedad VarGlobal.ValorDivisor.

    Bueno, gracias a todos y un saludo.

    Gemma


    viernes, 21 de octubre de 2016 11:30

Respuestas

  • Hola:

    Lo he solucionado aplicando el "valordivisor" directamente al resultado que leo. El problema está en la cláusula AS. Doy por cerrada la respuesta a falta de que alguien me indique la solución de la cláusula AS en este caso para SQL Compact.

    Gracias a todos.

    Un saludo.

    Gemma

    • Marcado como respuesta gemma_campillo viernes, 21 de octubre de 2016 16:23
    viernes, 21 de octubre de 2016 16:23