buenas tardes estoy desarrollando una aplicacion en vb.net y me da un error al intendar adicionar un registro en una tabla en memoria ("La matriz de entrada es más larga que el número de columnas en esta tabla")
la tabla fue creada en una formulario de la siguiente manera :
Public Property dt_Debitos As New DataTable With {.TableName = "Debitos"}
Public Property ds_Debitos As New DataSet
Private Sub Crear_dt_Debitos()
Try
dt_Debitos = New DataTable
Dim clave(1) As DataColumn
With dt_Debitos.Columns
' .Add(New DataColumn With {.ColumnName = "Id", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = True})
Dim column As DataColumn
column = New DataColumn()
column.DataType = System.Type.GetType("System.Int32")
column.ColumnName = "Id"
column.AllowDBNull = False
column.Unique = True
.Add(column)
clave(0) = column
.Add(New DataColumn With {.ColumnName = "Debito_Id", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Fecha_Vencimiento", .DataType = Type.GetType("System.DateTime"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Descripcion", .DataType = Type.GetType("System.String"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Genera_Mora", .DataType = Type.GetType("System.Boolean"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Articulo_Id", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Cantidad", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "MontoNominal", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "MontoMora", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Pagar", .DataType = Type.GetType("System.Boolean"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "MontoaPagar", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Concepto_Id", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "Debito_Origen_Id", .DataType = Type.GetType("System.Int32"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "PorcIVA", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "MontoIVA", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
.Add(New DataColumn With {.ColumnName = "MontoPago", .DataType = Type.GetType("System.Double"), .AllowDBNull = True, .Unique = False})
End With
ds_Debitos.Tables.Clear()
ds_Debitos.Tables.Add(dt_Debitos)
With ds_Debitos
dt_Debitos.PrimaryKey = clave
End With
gc_Debitos.DataSource = dt_Debitos
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Sub
y estoy agregandole registros en 2 procedimientos diferentes...
Private Sub Buscar_Debitos()
If nSuscripcion_Id > 0 Then
Using ds = Suscripciones.Debitos_a_Pagar(nSuscripcion_Id)
With ds.Tables("Debitos")
If .Rows.Count > 0 Then
Dim vItems(0 To 15)
Dim Cuenta As Integer = 0
Dim MtoMora As Double = 0
For i = 0 To .Rows.Count - 1
Cuenta = Cuenta + 1
vItems(0) = Cuenta 'Id
vItems(1) = .Rows(i)("Debito_Id") 'Debito_Id
vItems(2) = .Rows(i)("Fecha_Vencimiento") 'Fecha_Vencimiento
vItems(3) = .Rows(i)("Descripcion") 'Descripcion
vItems(4) = .Rows(i)("Genera_Mora") 'Genera_Mora
vItems(5) = -1 ' Artículo_Id
vItems(6) = 1 'Cantidad
vItems(7) = .Rows(i)("SaldoPendiente") 'MontoNominal
MtoMora = MontoMora(.Rows(i)("SaldoPendiente"), .Rows(i)("Genera_Mora"), .Rows(i)("Fecha_Vencimiento"))
vItems(8) = MtoMora 'MontoMora
vItems(9) = True 'Pagar
vItems(10) = CDbl(.Rows(i)("SaldoPendiente")) + MtoMora 'MontoaPagar
vItems(11) = .Rows(i)("Concepto_Id") 'Concepto_Id
vItems(12) = -1 'Debito_Origen_Id
vItems(13) = 0 'PorcIVA
vItems(14) = 0 'MontoIVA
vItems(15) = CDbl(.Rows(i)("SaldoPendiente")) + MtoMora 'MontoPago
dt_Debitos.Rows.Add(vItems)
Next
End If
End With
End Using
End If
Totalizar()
End Sub
ahora bien desde otro formulario intento adicionarle registros y me da el error
Private Sub Guardar()
Try
If Validar() = True Then
With frmPago.dt_Debitos
If t_Item.EditValue > 0 Then
Dim vItems(0 To 15)
' creacion del concepto Principal
vItems(0) = t_Item.EditValue 'Id
vItems(1) = -1 'Debito_Id
vItems(2) = FechaPago 'Fecha_Vencimiento
vItems(3) = CArticulo.Nombre 'Descripcion
vItems(4) = False 'Genera_Mora
vItems(5) = CArticulo.Articulo_Id ' Artículo_Id
vItems(6) = t_Cantidad.EditValue 'Cantidad
vItems(7) = MontoNominal 'MontoNominal
vItems(8) = 0 'MontoMora
vItems(9) = True 'Pagar
vItems(10) = MontoNominal 'MontoaPagar
vItems(11) = sl_Concepto.EditValue 'Concepto_Id
vItems(12) = -1 'Debito_Origen_Id
vItems(13) = t_PorcIVA.EditValue 'PorcIVA
vItems(14) = t_MtoIVA.EditValue 'MontoIVA
vItems(15) = MontoNominal 'MontoPago
.Rows.Add(vItems)
.AcceptChanges()
End If
End With
End If
MsgBox("Artículo anexado con éxito", MsgBoxStyle.Information, "Atención")
Me.Close()
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Try
End Sub
alli si me da error aunque el array que utilizo tiene exactamente la misma longitud del primero..