I am working with a small POS application, but I ma having a problem during the insertion of data from win form to SQL database . To be more clearly I get this kind of error "Additional information: Procedure or function insertimi has too many arguments specified."
What should I change in my C# code to fix the error? Maybe the loop code how I get the data from datagridview. If someone could help me, about this problem.
Thanks you everyone
What I have tried:
conn.Open();
SqlCommand cmd = new SqlCommand("insertimi", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("@shenime", txtshenime.Text));
cmd.Parameters.Add(new SqlParameter("@data", DateTime.Now));
cmd.Parameters.Add(new SqlParameter("@kasieri", lbluser.Text));
cmd.Parameters.Add(new SqlParameter("@emri_sh", lblshitesiemri.Text));
cmd.Parameters.Add(new SqlParameter("@niptsh", int.Parse(lblshitesinipt.Text)));
cmd.Parameters.Add(new SqlParameter("@adresash", lbladresashitesi.Text));
cmd.Parameters.Add(new SqlParameter("@telefonish", lblshitesitelefon.Text));
cmd.Parameters.Add(new SqlParameter("@emri_b", cmbbleresi.Text));
cmd.Parameters.Add(new SqlParameter("@niptb", lblbleresinipt.Text));
cmd.Parameters.Add(new SqlParameter("@adresab", lblbleresiadresa.Text));
cmd.Parameters.Add(new SqlParameter("@telefonib", lblbleresitelefoni.Text));
cmd.Parameters.Add(new SqlParameter("@nentotali", lblnentotali.Text));
cmd.Parameters.Add(new SqlParameter("@vleratvsh", lblvleratvsh.Text));
cmd.Parameters.Add(new SqlParameter("@zbritja", txtzbritja.Text));
cmd.Parameters.Add(new SqlParameter("@totali", lbltotali.Text));
foreach (DataGridViewRow row in dtgprofatura.Rows)
{
if (!row.IsNewRow)
{
cmd.Parameters.Add(new SqlParameter("@barkodi", row.Cells[0].Value));
cmd.Parameters.Add(new SqlParameter("@emertimi", row.Cells[1].Value));
cmd.Parameters.Add(new SqlParameter("@sasia", row.Cells[3].Value));
cmd.Parameters.Add(new SqlParameter("@cmimi", row.Cells[2].Value));
cmd.Parameters.Add(new SqlParameter("@totaliPCS", row.Cells[5].Value));
cmd.Parameters.Add(new SqlParameter("@tvsh", row.Cells[4].Value));
cmd.Parameters.Add(new SqlParameter("@vleratvshpcs", row.Cells[7].Value));
cmd.Parameters.Add(new SqlParameter("@patvshpcs", row.Cells[6].Value));
}
}
cmd.ExecuteNonQuery();
conn.Close();
clear();
kRIJOToolStripMenuItem.PerformClick();
}
And the SP code:
ALTER procedure [dbo].[insertimi]
@shenime varchar(max),
@data datetime,
@kasieri varchar(50),
@emri_sh varchar(50),
@niptsh varchar(50),
@adresash varchar(100),
@telefonish varchar(50),
@emri_b varchar(50),
@niptb varchar(50),
@adresab varchar(100),
@telefonib varchar(50),
@nentotali float,
@zbritja float,
@vleratvsh float,
@totali float,
@barkodi int,
@emertimi varchar(200),
@sasia int,
@cmimi float,
@totaliPCS float,
@tvsh float,
@vleratvshpcs float,
@patvshpcs float
as
declare @lastId int;
insert into tblprofatura (Shenime,Data,Kasieri,Emri_sh,NIPT_sh,Adresa_sh,Telefoni_sh,Emri_b,NIPT_b,Adresa_b,Telefoni_b,Nentotali,Zbritja,VleraTVSH,Totali)
values(@shenime,@data,@kasieri,@emri_sh,@niptsh,@adresash,@telefonish,@emri_b,@niptb,@adresab,@telefonib,@nentotali,@zbritja,@vleratvsh,@totali)
set @lastId = SCOPE_IDENTITY();
insert into tblproofatura_details(NR_F,Barkodi,Emertimi,Cmimi,Sasia,TVSH,Totali,PaTVSHpcs,VleraTVSHpcs)
values (@lastId,@barkodi,@emertimi,@cmimi,@sasia,@tvsh,@totaliPCS,@patvshpcs,@vleratvsh)