Estoy llenando un DataSet a partir de un DataReader. Este es mi código:
Código:
Dim myRow As Data.DataRow
Dim myColumn As Data.DataColumn
myCommand.CommandText = strSQL
'--Agregando la nueva tabla al DataSet--
dsDataSet.Tables.Add()
'---------------------------------------
'--Llenando el DataReader--
Dim dr As Data.SqlClient.SqlDataReader = myCommand.ExecuteReader()
'--------------------------
Dim byteContador As Byte = 0
While dr.Read
If byteContador = 0 Then
'--Creando las columnas en el DataTable--
For i As Integer = 0 To dr.FieldCount - 1
myColumn = New Data.DataColumn
myColumn.AllowDBNull = True
myColumn.DataType = dr.Item(i).GetType
myColumn.ColumnName = dr.GetName(i)
myColumn.Caption = dr.GetName(i)
dsDataSet.Tables(0).Columns.Add(myColumn)
Next
'----------------------------------------
byteContador = 1
End If
myRow = dsDataSet.Tables(0).NewRow()
For i As Integer = 0 To dr.FieldCount - 1
myRow.Item(dr.GetName(i)) = dr.Item(i)
Next
dsDataSet.Tables(0).Rows.Add(myRow)
End While
dr.Close()
Pero cuando va a ejecutar la línea que puse en rojo "
myRow = dsDataSet.Tables(0).NewRow()" me da el siguiente error: "Invalid storage type: DBNull."
No se por qué da esto error si le estoy diciendo a todas mis columnas: "myColumn.AllowDBNull = True". ¿Qué estoy haciendo mal?