Hola que tal, hace mucho que no venía por aquí. Tengo el siguiente problema a ver si alguien me puede ayudar. En el codigo siguiente uso un DataGrid enlazado con dataSource a una base de datos. Este cálculo lo hago al seleccionar un elemento en un combobox y despues se le da guardar. Tengo la base de datos con todos los campos en string y en el código trato de que los resultados sean igual string. Pero al ejecutar el calculo en los campos da bien pero al darle guardar me da error, dice que no se puede convertir un elemento de string a integer o a double en otros casos, o sino que el "índice 0 no tiene un valor" en System.Windows.Forms.CurrencyManager.get_Item(Int3 2 Index).
Al borrar los textbox que arrojan el calculo desaparece el problema, así que este debe estar en el cálculo. No soy muy ducho así que pido ayuda a ver si alguien detecta algo.
Código:
Private Sub FormulaComboBox_SelectedIndexChanged_3(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FormulaComboBox.SelectedIndexChanged
Dim iporcent As Double
Dim D As Integer = Val(MontoTextBox1.Text) 'Prestamo
Dim m As Integer = Val(CantCuotasTextBox.Text) 'Cantidad de cuotas
Dim Ct As Integer = Val(CostoTramTextBox.Text) ' Costo del trámite
'Dim R1 As Double 'Fórmula de amortización final R1 = t1 + I1
Dim I1 As Double 'Fórmula para amortización del interés en cada periodo
Dim t1 As Double 'Fórmula para amortización de capital t = D/m
Dim total As Double
Dim periodo As String
'Cálculo de porcentaje de interes segun el periodo
periodo = PeriodoPagoComboBox.Text
If periodo = "Semanal" Then
iporcent = (Val(InteresMesTextBox.Text) / 100) / 30
iporcent = iporcent * 7
MeseTextBox.Text = CStr(m / 4)
ElseIf periodo = "Quincenal" Then
iporcent = (Val(InteresMesTextBox.Text) / 100) / 30
iporcent = iporcent * 15
MeseTextBox.Text = CStr(m / 2)
ElseIf periodo = "Mensual" Then
iporcent = (Val(InteresMesTextBox.Text) / 100)
MeseTextBox.Text = CStr(m / 1)
ElseIf periodo = "Bimestral" Then
iporcent = (Val(InteresMesTextBox.Text) / 100)
iporcent = iporcent * 2
MeseTextBox.Text = CStr((m / 1) * 2)
End If
If FormulaComboBox.Text = "Amortización Constante" Then
'===== Método aleman: amortización real CONSTANTE o lineal =====
'I1 = D * iporcent
t1 = D / m
'R1 = t1 + I1 + Ct
'Llenado de cajas
MontoPrestamoTextBox.Text = "Variable"
For i = 1 To m
I1 = D * iporcent
total = total + I1
D = D - t1
Next i
TotalPagarTextBox.Text = "$ " & CStr((CInt(total + Val(MontoTextBox1.Text) + Ct)))
'===== Fin del metodo Alemán ======
'===== Inicio Método Francés o de Amortización Progresiva =====
ElseIf FormulaComboBox.Text = "Amortización Progresiva" Then
total = D / (((1 + iporcent) ^ m - 1) / (iporcent * (1 + iporcent) ^ m))
MontoPrestamoTextBox.Text = "$ " & CStr(CInt(total))
TotalPagarTextBox.Text = "$ " & CStr(CInt((total * m) + Ct))
'===== Fin del metodo Francés ======
'===== Inicio Método Interés compuesto =====
ElseIf FormulaComboBox.Text = "Amortización Compuesta" Then
total = D * (1 + iporcent) ^ m
MontoPrestamoTextBox.Text = "$ " & CStr(CInt(total / m))
TotalPagarTextBox.Text = "$ " & CStr(CInt(total + Ct))
'===== Fin de Método Interés compuesto =====
End If
Me.Refresh()
End Sub