C sharp - PROCEDIMIENTO O FUNCION ESPERA PARAMETRO EL CUAL NO FUE SUMINISTRADO

 
Vista:
Imágen de perfil de Mario
Val: 12
Ha aumentado su posición en 4 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

PROCEDIMIENTO O FUNCION ESPERA PARAMETRO EL CUAL NO FUE SUMINISTRADO

Publicado por Mario (4 intervenciones) el 09/09/2019 00:02:54
Buenas tardes a todos, he estado realizando un pequeño sistema de prestamos el cual ya tengo mucho tiempo trabajando en el, casi 4 meses ya que solo tengo tiempo los fines de semana por mi trabajo, es el primer sistema que estoy haciendo en C#.

Les redacto brevemente lo que estoy haciendo.

//Mis tablas en Sql server 2017

Use BD
Create table Clientes_Semanales(
Id_Prestamo int identity (1,1) primary key not null,
Nombre varchar (50),
Direccion varchar (50),
Telefono varchar (15),
Correo varchar (50),
Capital decimal (18,0),
Tasa_Mensual nchar(2),
Plazo date,
Inicio date,
Pago nchar (2))

Create table Prestamos_Semanales(
Id_Prestamo int not null,
Num_Cuota INT not null,
Semana date,
Capital_Interes decimal (18,0),
Fecha date,
Pago_Semanal decimal (18,0),
Saldo decimal (18,0),
primary key (ID_Prestamo, Num_Cuota),
constraint fk_Prestamos foreign key (Id_Prestamo) references Clientes_Semanales (Id_Prestamo)
on update cascade
on delete cascade
)

//Mi procedimiento almacenado.

1
2
3
4
5
6
7
8
9
10
11
12
ALTER Procedure [dbo].[Amortizacion](
@Num_Cuota int,
@Capital_Interes decimal(18,0),
@Fecha date,
@Pago_Semanal decimal(18,0),
@Saldo decimal(18,0),
@Inicio_a_pagar date)
As
Begin
Insert into dbo.Prestamos_Semanales(Num_Cuota,Capital_Interes,Fecha,Pago_Semanal,Saldo,Inicio_a_pagar)
Values(@Num_Cuota, Capital_Interes,@Fecha,@Pago_Semanal,@Saldo,@Inicio_a_pagar) Select SCOPE_IDENTITY()
End

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//Coodigo del boton con el cual genero una amortizacion de prestamo en el formulario en C#
 
private void Btn3_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(TxtMonto.Text) || string.IsNullOrEmpty(TxtPlazo.Text) ||
       string.IsNullOrEmpty(TxtTasa.Text))
    {
        MessageBox.Show("Capture capital, tasa y plazo.");
        return;
    }
    Semanal();
}
private void Semanal()
{
    DataTable dt = new DataTable();
 
    dt.Columns.Add("Num_Cuota", typeof(int));
    dt.Columns.Add("Capital+Interes", typeof(double));
    dt.Columns.Add("Fecha", typeof(string));
    dt.Columns.Add("PagoSemanal", typeof(double));
    dt.Columns.Add("Saldo", typeof(double));
    DateTime Fecha = DateTimePicker1.Value;
 
    double StrMonto = Convert.ToDouble(this.TxtMonto.Text);
    double Plazo = Convert.ToDouble(this.TxtPlazo.Text);
    double Interes = Convert.ToDouble(this.TxtTasa.Text);
 
    double PagoSemanal = Math.Round(StrMonto * Interes / 100 / 4 + StrMonto/Plazo);
    double Interes1 = Interes;
    double Saldo0 = StrMonto;
    double Saldo = Math.Round(Saldo0 * Interes1 / 100 * Plazo/4 + Saldo0);
    double Capital = Math.Round(Saldo0 * Interes1 / 100 * Plazo/4 + Saldo0);
 
    for (int i = 1; i <= Plazo; i++)
    {
        Saldo = Saldo - PagoSemanal;
        dt.Rows.Add(i, Capital, Fecha.ToString("dd/MM/yyyy"), PagoSemanal, Saldo);
 
        Fecha = Fecha.AddDays(7);
    }
    DataGridView1.DataSource = dt;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//Codigo de otro boton en el  mismo fomulario con el cual intento enviar a guardar la informacion generada de la amortizacion en el boton anterior a una de mis tablas en sql.
 
private void Btn4_Click(object sender, EventArgs e)
{
    using (SqlConnection connection = new SqlConnection("Cadena de conexion"))
    {
        if (string.IsNullOrEmpty(TxtMonto.Text) ||
            string.IsNullOrEmpty(TxtTasa.Text) ||
            string.IsNullOrEmpty(TxtPlazo.Text))
        {
            MessageBox.Show("Favor de capturar la informacion completa para generar prestamo.");
            return;
        }
        connection.Open();
        SqlCommand comando = new SqlCommand("Amortizacion", connection)
        {
            CommandType = CommandType.StoredProcedure
        };
        double StrMonto = Convert.ToDouble(this.TxtMonto.Text);
        double Plazo = Convert.ToDouble(this.TxtPlazo.Text);
        double Interes = Convert.ToDouble(this.TxtTasa.Text);
 
        double PagoSemanal = Math.Round(StrMonto * Interes / 100 / 4 + StrMonto / Plazo);
        double Interes1 = Interes;
        double Saldo0 = StrMonto;
        double Saldo = Math.Round(Saldo0 * Interes1 / 100 * Plazo / 4 + Saldo0);
        double Capital = Math.Round(Saldo0 * Interes1 / 100 * Plazo / 4 + Saldo0);
 
        comando.Parameters.AddWithValue("@Capital+Interes",Capital );
        comando.Parameters.AddWithValue("@Fecha", Fecha);
        comando.Parameters.AddWithValue("@PagoSemanal",PagoSemanal);
        comando.Parameters.AddWithValue("@Saldo", Saldo);
        comando.Parameters.AddWithValue("@Inicio_a_pagar", DateTimePicker1.Value);
        comando.ExecuteNonQuery();
    }

Al presionar el boton "REGISTRAR CLIENTE "Me da este error: System.Data.SqlClient.SqlException: 'Procedure or function 'Amortizacion' expects parameter '@Capital_Interes', which was not supplied.'

Pero segun yo, ese parametros lo estoy suministrando a travez de las variables double, a que se debe este problema?

Anexo imagen en el archivo adjunto, ya que desde la opcion de subir imagen no se observa completa la misma.

De antemano mil gracias por la ayuda, anexo imagen como referencia para dar una idea de que es lo que intento hacer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel Gonzalo
Val: 32
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

PROCEDIMIENTO O FUNCION ESPERA PARAMETRO EL CUAL NO FUE SUMINISTRADO

Publicado por Daniel Gonzalo (12 intervenciones) el 09/09/2019 22:27:57
Esta esperando el valor de este parámetro que veo que lo tenes con un signo '+' y en el store segun reza el error esta esperando @Capital_Interes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Mario
Val: 12
Ha aumentado su posición en 4 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

PROCEDIMIENTO O FUNCION ESPERA PARAMETRO EL CUAL NO FUE SUMINISTRADO

Publicado por Mario (4 intervenciones) el 26/09/2019 23:36:17
Gracias por tomarte el tiempo en responder mi pregunta, Daniel. Lo voy a intentar y veo que pasa.

Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 96
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

PROCEDIMIENTO O FUNCION ESPERA PARAMETRO EL CUAL NO FUE SUMINISTRADO

Publicado por Javier (40 intervenciones) el 27/09/2019 22:40:17
Como bien ya te comentaron el detalle esta cuando agregas los parametros para llamar a tu proceso.

1
2
3
4
5
6
7
8
9
10
11
12
ALTER Procedure [dbo].[Amortizacion](
@Num_Cuota int,
@Capital_Interes decimal(18,0), // Aqui pones el parametro con guion bajo
@Fecha date,
@Pago_Semanal decimal(18,0),
@Saldo decimal(18,0),
@Inicio_a_pagar date)
As
Begin
Insert into dbo.Prestamos_Semanales(Num_Cuota,Capital_Interes,Fecha,Pago_Semanal,Saldo,Inicio_a_pagar)
Values(@Num_Cuota, Capital_Interes,@Fecha,@Pago_Semanal,@Saldo,@Inicio_a_pagar) Select SCOPE_IDENTITY()
End

1
comando.Parameters.AddWithValue("@Capital+Interes",Capital ); // Aqui pasas el parametro con signo +
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar