none
Conversion de Interger RRS feed

  • Pregunta

  • Hola tengo un proyecto que necesito tener un seleccion multiple de datos en el data gridview pero al seleccionar me muestra este error

    La conversión de la cadena "1@2@" en el tipo 'Integer' no es válida.

    El codigo que estoy ocupando es el siguiente:

        Private Sub cmdGenerar_LinkClicked(sender As Object, e As DevExpress.XtraNavBar.NavBarLinkEventArgs) Handles cmdGenerar.LinkClicked
            Dim TotalRegistros As Integer = GridView1.DataRowCount - 1
            Dim dtValida As New DataTable
            Dim dtValidaR As New DataTable
            Items = String.Empty
            If gleBodegas.Text = String.Empty Then
                MsgBox("Seleccione la bodega.", MsgBoxStyle.Exclamation)
                Exit Sub
            End If
            'dtValida = ValidaInventarioGenerado(gleBodegas.EditValue, dtFechaFin.EditValue)
            'If dtValida.Rows(0)("Cant").ToString = 0 Then
            '    MsgBox("No existe inventario fisico generado a la fecha final.", MsgBoxStyle.Exclamation)
            '    Exit Sub
            'End If
            If dtFechaFin.EditValue < dtFechaInicial.EditValue Then
                MsgBox("Rango de fecha invalido.", MsgBoxStyle.Exclamation)
                Exit Sub
            End If
            dtValidaR = ValidaRequisicionesPendientes(gleBodegas.EditValue, dtFechaInicial.EditValue,
                                                      dtFechaFin.EditValue)
            'If dtValidaR.Rows(0)("Cantidad").ToString > 0 Then
            '    MsgBox("Existen requisiciones pendientes de transferir.", MsgBoxStyle.Exclamation)
            'End If
            Me.Cursor = Cursors.WaitCursor
            Try

                ''Verificar que existan solicitudes de Items seleccionadas
                If (From p In Reporte1.ItemsSeleccion Where p.Seleccion = True Select p).Count = 0 Then
                    MessageBox.Show("Debe seleccionar al menos un Item para generar el stock", "Stock de Inventario", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Exit Sub
                End If
                ''Obtener el Id de las solicitudes seleccionadas
                'Dim Items As String = "@"
                For Each aoRow As Reporte.ItemsSeleccionRow In (From p In Reporte1.ItemsSeleccion Where p.Seleccion = True Select p)
                    Items += String.Format("{0}@", aoRow.IdItem)
                Next


            Catch ex As Exception
                MessageBox.Show(ex.Message, "Error al generar el stock", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try

            Try
                Dim rpt As New rptKardex()
                Dim dt As New DataTable
                dt = Kardex(gleBodegas.EditValue, Items, dtFechaInicial.EditValue,
                            dtFechaFin.EditValue)
                rpt.DataSource = dt
                rpt.xlFechas.Text = "Desde " & dtFechaInicial.EditValue & " hasta " & dtFechaFin.EditValue
                Dim pt As New ReportPrintTool(rpt)

                pt.ShowPreviewDialog()
                Me.Cursor = Cursors.Default

                pt.ShowPreviewDialog()
                Me.Cursor = Cursors.Default
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try

    martes, 2 de enero de 2018 20:38

Respuestas

  • Bueno, el mensaje de error tiene toda la razón: no se puede convertir "1@2@" en el tipo 'Integer' (tiene caracteres que hacen que no se pueda interpretar como Integer).

    En el código que has puesto no se ve dónde se hace esa conversión; presumiblemente es en la función que has llamado "Kardex". Ahí tiene que existir algún error en la forma en la que implementas la conversión de la cadena "1@2@" ya que por alguna razón está intentando convertirla en un único Integer.

    martes, 2 de enero de 2018 20:55