Click here to Skip to main content
15,895,462 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
Below is my code for updating items in a invoice .
i add some items , and update some items based on values but it is just inserting or updating the same values to all the rows . I think the paramerters are creating the problem , please guide me to rectify the fault .
C#
con.Open()
            tra = con.BeginTransaction
            sqlstr = "UPDATE transaction_Mas_Tab set billdate=@billdate,invoiceno=@invoiceno,TotalBillamt=@TotalBillamt,narration=@narration,orderdate=@orderdate,usercode=@usercode,lcode=@lcode,remarks=@remarks,grossamt=@grossamt where txid=@txid "
            cmd = New OleDbCommand(sqlstr, con, tra)
            cmd.Parameters.AddWithValue("@billdate", dtpbilldate.Text)
            cmd.Parameters.AddWithValue("@invoiceno", txtinvoiceno.Text)
            cmd.Parameters.AddWithValue("@TotalBillamt", Val(txtgt.Text))
            cmd.Parameters.AddWithValue("@narration", txtnote.Text)
            cmd.Parameters.AddWithValue("@orderdate", dtpbilldate.Text)
            cmd.Parameters.AddWithValue("@usercode", usercode)
            cmd.Parameters.AddWithValue("@lcode", cmbparty.SelectedValue)
            cmd.Parameters.AddWithValue("@remarks", txtrmrks.Text)
            cmd.Parameters.AddWithValue("@grossamt", Val(txttotalamt.Text))
            cmd.Parameters.AddWithValue("@txid", txid)
            cmd.ExecuteNonQuery()
 For c As Integer = 0 To dgvsitemlist.Rows.Count - 1
                If dgvsitemlist.Rows(c).Cells("onew").Value.ToString = "N" And dgvsitemlist.Rows(c).Cells("isdel").Value.ToString = "N" Then
                    sqlstr = "insert into transaction_details (txid,itemid,unit,irate,iqty,isdeleted)  values(@txid,@itemid,@unit,@irate,@iqty,@isdeleted)"
                    cmd = New OleDbCommand(sqlstr, con, tra)
                    cmd.Parameters.AddWithValue("@txid", txxid)
                    cmd.Parameters.AddWithValue("@itemid", dgvsitemlist.Rows(c).Cells("itemid").Value.ToString)
                    cmd.Parameters.AddWithValue("@unit", dgvsitemlist.Rows(c).Cells("unitid").Value.ToString)
                    cmd.Parameters.AddWithValue("@irate", Val(dgvsitemlist.Rows(c).Cells("prate").Value))
                    cmd.Parameters.AddWithValue("@iqty", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@isdeleted", "N")
                    cmd.ExecuteNonQuery()

                    sqlstr = "INSERT INTO IMasterDetails ( icode,batch,prate,srate,opstock,clstock,pscheme,sscheme,itemid) values (  @icode ,@batch , @prate , @srate,@opstock,@clstock,@pscheme,@sscheme,@itemid )"
                    cmd = New OleDbCommand(sqlstr, con, tra)
                    cmd.Parameters.AddWithValue("@icode", dgvsitemlist.Rows(c).Cells("icode").Value.ToString)
                    cmd.Parameters.AddWithValue("@batch", dgvsitemlist.Rows(c).Cells("batch").Value.ToString)
                    cmd.Parameters.AddWithValue("@prate", Val(dgvsitemlist.Rows(c).Cells("prate").Value))
                    cmd.Parameters.AddWithValue("@srate", Val(dgvsitemlist.Rows(c).Cells("srate").Value))
                    cmd.Parameters.AddWithValue("@opstock", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@clstock", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@pscheme", dgvsitemlist.Rows(c).Cells("pscheme").Value.ToString)
                    cmd.Parameters.AddWithValue("@sscheme", dgvsitemlist.Rows(c).Cells("sscheme").Value.ToString)
                    cmd.Parameters.AddWithValue("@itemid", dgvsitemlist.Rows(c).Cells("itemid").Value.ToString)

                ElseIf dgvsitemlist.Rows(c).Cells("onew").Value.ToString = "O" And dgvsitemlist.Rows(c).Cells("isdel").Value.ToString = "N" Then
                    sqlstr = "update transaction_details set itemid=@itemid,unit=@unit,irate=@irate,iqty=@iqty,isdeleted=@isdeleted where txid=@txid"
                    cmd = New OleDbCommand(sqlstr, con, tra)
                    cmd.Parameters.AddWithValue("@itemid", dgvsitemlist.Rows(c).Cells("itemid").Value.ToString)
                    cmd.Parameters.AddWithValue("@unit", dgvsitemlist.Rows(c).Cells("unitid").Value.ToString)
                    cmd.Parameters.AddWithValue("@irate", Val(dgvsitemlist.Rows(c).Cells("prate").Value))
                    cmd.Parameters.AddWithValue("@iqty", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@isdeleted", "N")
                    cmd.Parameters.AddWithValue("@txid", txxid)
                    cmd.ExecuteNonQuery()

                    sqlstr = "Update IMasterDetails set icode=@icode,batch=@batch,prate=@prate,srate=@srate,opstock=@opstock,clstock=@clstock,pscheme=@pscheme,sscheme=@sscheme where itemid=@itemid "
                    cmd = New OleDbCommand(sqlstr, con, tra)
                    cmd.Parameters.AddWithValue("@icode", dgvsitemlist.Rows(c).Cells("icode").Value.ToString)
                    cmd.Parameters.AddWithValue("@batch", dgvsitemlist.Rows(c).Cells("batch").Value.ToString)
                    cmd.Parameters.AddWithValue("@prate", Val(dgvsitemlist.Rows(c).Cells("prate").Value))
                    cmd.Parameters.AddWithValue("@srate", Val(dgvsitemlist.Rows(c).Cells("srate").Value))
                    cmd.Parameters.AddWithValue("@opstock", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@clstock", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@pscheme", dgvsitemlist.Rows(c).Cells("pscheme").Value.ToString)
                    cmd.Parameters.AddWithValue("@sscheme", dgvsitemlist.Rows(c).Cells("sscheme").Value.ToString)
                    cmd.Parameters.AddWithValue("@itemid", dgvsitemlist.Rows(c).Cells("itemid").Value.ToString)
                    cmd.ExecuteNonQuery()

                ElseIf dgvsitemlist.Rows(c).Cells("onew").Value.ToString = "O" And dgvsitemlist.Rows(c).Cells("isdel").Value.ToString = "Y" Then
                    sqlstr = "update transaction_details set itemid=@itemid,unit=@unit,irate=@irate,iqty=@iqty,isdeleted=@isdeleted where txid=@txid"
                    cmd = New OleDbCommand(sqlstr, con, tra)
                    cmd.Parameters.AddWithValue("@itemid", dgvsitemlist.Rows(c).Cells("itemid").Value.ToString)
                    cmd.Parameters.AddWithValue("@unit", dgvsitemlist.Rows(c).Cells("unitid").Value.ToString)
                    cmd.Parameters.AddWithValue("@irate", Val(dgvsitemlist.Rows(c).Cells("prate").Value))
                    cmd.Parameters.AddWithValue("@iqty", Val(dgvsitemlist.Rows(c).Cells("qty").Value))
                    cmd.Parameters.AddWithValue("@isdeleted", "Y")
                    cmd.Parameters.AddWithValue("@txid", txxid)
                    cmd.ExecuteNonQuery()
                End If

            Next

            tra.Commit()
            updatebilldata = txid
            clearall()
            clearsave()
        Catch ex As Exception
            MsgBox("Some thing Went Wrong")
            tra.Rollback()
            updatebilldata = Nothing
        End Try


    End Using
Posted
Updated 1-Sep-15 2:32am
v2
Comments
CHill60 1-Sep-15 9:05am    
Which of the possible insert/update statements is causing the problem - if you don't know then step through your code checking what's on the database after each ExecuteNonQuery.
Do you really mean to have two variables txxid and txid - are these columns all different on the database?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900