交易未更新余额

时间:2019-06-20 12:06:28

标签: sql-server vb.net-2010

以下是我为现金支付模块编写的代码。用户按保存后,datagridview中的所有条目都会受到具有借方和贷方的TYPE列的影响,并且所有条目都将相应地工作。下面是我的代码,用于保存数据但不更新帐户余额。

我需要的是用现金付款方式更新帐户明细(它可以正常工作),并在会计科目表中更新所有余额。

con = New SqlConnection(appx.myconnection)
    con.Open()
    Dim cb As String = "insert into cashpayment(cashpaymentid,date,coa_id2,paymentfrom,coa_id,paymentto,amountdr,remarks,totalamount) Values (@d12,@d13,@d14,@d15,@d16,@d17,@d18,@d21,@d22)"
    cmd = New SqlCommand(cb)
    cmd.Parameters.AddWithValue("@d12", CashPaymentidTextBox.Text)
    cmd.Parameters.AddWithValue("@d13", DateDateTimePicker.Value)
    cmd.Parameters.AddWithValue("@d14", Coa_id2TextBox.Text)
    cmd.Parameters.AddWithValue("@d15", PaymentfromTextBox.Text)
    cmd.Parameters.AddWithValue("@d16", Coa_idTextBox.Text)
    cmd.Parameters.AddWithValue("@d17", PaymenttoTextBox.Text)
    cmd.Parameters.AddWithValue("@d18", AmountdrTextBox.Text)
    cmd.Parameters.AddWithValue("@d21", RemarksTextBox.Text)
    cmd.Parameters.AddWithValue("@d22", TotalamountTextBox.Text)
    cmd.Connection = con
    cmd.ExecuteReader()
    con.Close()
    con = New SqlConnection(appx.myconnection)
    con.Open()
    Dim cb1 As String = "insert into [cashpayment_join](cpvidj,cashpaymentid,date,coafrom,paymentfrom,coato,paymentto,dr,type,description,userid) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11)"
    cmd = New SqlCommand(cb1)
    cmd.Connection = con
    ' Prepare command for repeated execution
    cmd.Prepare()
    ' Data to be inserted
    For Each row As DataGridViewRow In DataGridView1.Rows
        If Not row.IsNewRow Then
            cmd.Parameters.AddWithValue("@d1", row.Cells(0).Value) 'cashpaymentid
            cmd.Parameters.AddWithValue("@d2", row.Cells(1).Value) 'cashpaymentid
            cmd.Parameters.AddWithValue("@d3", row.Cells(2).Value)  'date
            cmd.Parameters.AddWithValue("@d4", row.Cells(3).Value)  'paymentto
            cmd.Parameters.AddWithValue("@d5", row.Cells(4).Value)  'paymentfrom
            cmd.Parameters.AddWithValue("@d6", row.Cells(5).Value)  'dr
            cmd.Parameters.AddWithValue("@d7", row.Cells(6).Value)  'cr
            cmd.Parameters.AddWithValue("@d8", row.Cells(7).Value)  'description
            cmd.Parameters.AddWithValue("@d9", row.Cells(8).Value)  'total
            cmd.Parameters.AddWithValue("@d10", row.Cells(9).Value)  'total
            cmd.Parameters.AddWithValue("@d11", row.Cells(10).Value)  'total
            '      cmd.Parameters.AddWithValue("@d10", row.Cells(9).Value) 'userid
            cmd.ExecuteNonQuery()
            cmd.Parameters.Clear()
        End If
    Next
    con.Close()


    For Each row As DataGridViewRow In DataGridView1.Rows
        '  Using cn As New SqlConnection(appx.myconnection)
        Using cn1 As New SqlConnection(appx.myconnection)
            cn1.Open()
            Using com As New SqlCommand("", cn1)
                For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
                    If Me.DataGridView1.Rows(i).Cells("Type").Value = "Credit" Then
                        com.CommandText = "Update COA set opening_balance = opening_balance - @dra where AccountID=@ida"
                        com.Parameters.AddWithValue("@ida", row.Cells(5).Value)
                        com.Parameters.AddWithValue("@dra", row.Cells(7).Value)
                        com.ExecuteNonQuery()

                    ElseIf Me.DataGridView1.Rows(i).Cells("Type").Value = "Debit" Then
                        com.CommandText = "Update COA set opening_balance = opening_balance + @dr where AccountID=@id"
                        com.Parameters.AddWithValue("@id", row.Cells(5).Value)
                        com.Parameters.AddWithValue("@dr", row.Cells(7).Value)
                        com.ExecuteNonQuery()
                    End If

                Next
            End Using
        End Using
    Next
    Dim result1 As Integer = MessageBox.Show("Posted Successfully. Do you want to print", "Entry Posted Successfully", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
    If result1 = DialogResult.No Then
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        Call AddNewToolStripMenuItem_Click(sender, e)
    ElseIf result1 = DialogResult.Yes Then
        cpvreport()
        DataGridView1.DataSource = Nothing
        DataGridView1.Rows.Clear()
        Call AddNewToolStripMenuItem_Click(sender, e)
    End If

datagrid image

0 个答案:

没有答案