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.
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.
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.
- 1.rar(195,3 KB)
Valora esta pregunta


0