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!