Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2012, 11:07
3ricks0ul
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Duda sobre conversion de datos

Saludos comunidad..vengo a consultarles algo:

Tengo un codigo que me lee registros de una bd y me los inserta en un .pdf con itexsharp

aqui el code:

Código:
'Column's name
            table.AddCell("Name")
            table.AddCell("Last Name")
            table.AddCell("Social #")
            table.AddCell("Phone")
            table.AddCell("Optional Phone")

            Dim cmd As New SqlCommand("doppingsort", cnn) 'Stored Procedure
            cmd.CommandType = CommandType.StoredProcedure

            cmd.Connection.Open()
            cmd.Parameters.AddWithValue("@L", 1)
            cmd.Parameters.AddWithValue("@U", 5)

            Using sdr As SqlDataReader = cmd.ExecuteReader()
                While sdr.Read()
                    table.AddCell(sdr(0).ToString())
                    table.AddCell(sdr(1).ToString())
                    table.AddCell(sdr(2).ToString())
                    table.AddCell(sdr(3).ToString())
                    table.AddCell(sdr(4).ToString())
                    Insertar() 'Function
                End While
                sdr.Close()
            End Using
            cmd.Connection.Close()
            doc.Add(table)
            doc.Close()
Bien, como podrán ver dentro del ciclo while de lectura (No va a leer solo un registro, el stored proc es para generar una lista de # aleatorios de registros)

Dentro de la función Insertar() tengo el siguiente código con otras 2 funciones dependientes(O no se como llamarles xD), aquí esta el code:

Código:
Public Function Insertar() As Integer
        Dim sql As String
        sql = "INSERT INTO sorting" & _
            "(id, sort_num,id_person, date, year,month) " & _
            "VALUES " & _
            "(@id, @SortNum,@Idperson, @DateSort, @YearSort,@MonthSort) " & _
            "SELECT @@Identity"

        Using cnn As New SqlConnection(cs)
            Dim cmd As New SqlCommand(sql, cnn)

            Dim NextID As Integer = MaxId() + 1 'Inserta un nuevo ID
            Dim NextSort As Integer = MaxSort() + 1 'Inserta un nuevo ID de Sorteo
            Dim A As Integer = A + 1 'Inserta un nuevo ID de persona

            cmd.Parameters.AddWithValue("@id", NextID)
            cmd.Parameters.AddWithValue("@SortNum", NextSort)
            cmd.Parameters.AddWithValue("@Idperson", A)
            cmd.Parameters.AddWithValue("@DateSort", Date.Now)
            cmd.Parameters.AddWithValue("@YearSort", Date.Now.Year)
            cmd.Parameters.AddWithValue("@MonthSort", Date.Now.Month)

            cnn.Open()
            Dim t As Integer = CInt(cmd.ExecuteScalar())
            cnn.Close()
            Return t

        End Using
    End Function


    Public Function MaxId() As Integer
        Dim sql As String = "SELECT MAX(Id)" & _
                            "FROM sorting"

        Using cnn As New SqlConnection(cs)

            Dim command As New SqlCommand(sql, cnn)
            cnn.Open()
            Dim ab As Integer = Convert.ToInt32(command.ExecuteScalar())
            Return ab

        End Using
    End Function


    Public Function MaxSort() As Integer
        Dim sql As String = "SELECT MAX(sort_num)" & _
                            "FROM sorting"

        Using cnn As New SqlConnection(cs)
            Dim command As New SqlCommand(sql, cnn)
            cnn.Open()
            Dim ac As Integer = Convert.ToInt32(command.ExecuteScalar())
            Return ac

        End Using
    End Function
Me marca un error en : Dim ab As Integer = Convert.ToInt32(command.ExecuteScalar()) con el siguiente mensaje:Object cannot be cast from DBNull to other types....no se por donde pueda ser el problema, solo se que es por conversiones de números pero mi cabeza ya no me da para mas jajajaja xD, la tabla en la bd esta vacia..con una primary key que es ID...cualquier dato que ocupen para ayudarme, me avisan..de antemano muchas gracias!