Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema al guardar en base de datos

Estas en el tema de Problema al guardar en base de datos en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/05/2014, 01:46
Avatar de lucianinski  
Fecha de Ingreso: noviembre-2009
Ubicación: México
Mensajes: 56
Antigüedad: 15 años
Puntos: 1
Problema al guardar en base de datos

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
__________________
¿Quieres hosting Económico? Visita aquí
¿Clasificados gratis? Visita aquí
  #2 (permalink)  
Antiguo 03/05/2014, 19:03
 
Fecha de Ingreso: mayo-2013
Ubicación: Chaco, Argentina
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 3
Sonrisa Respuesta: Problema al guardar en base de datos

Hola lucianinski, por lo que se puede apreciar, está correcto y debería funcionar ese procedimiento, salvo algunas incoherencias en el tratamiento de los tipos de datos:
Código vb:
Ver original
  1. D = D - t1    'D es de tipo Integer y t1 es Double, por lo tanto en esta operación se pierden los decimales, ejemplo: si D = 1000 y t1 = 23,75, D - t1 dará como resultado 976 y no 976,25
Por lo que concluyo que el error está en otro lado.

Saludos cordiales!

Etiquetas: combobox, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:12.