【问题标题】:Duplicate Insertion in DB数据库中的重复插入
【发布时间】:2015-04-23 23:59:23
【问题描述】:

我有一个GridView,其中的行包含.net checkboxcontrol。用户将检查行并在单击按钮时将insertchecked 表中的行GeneratedInvoiceBatches

VB 代码:

Protected Sub btnGenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerate.Click
            Dim grItem As DataGridItem
            Dim i As Integer = 0


            For Each grItem In grdTransactions.Items

                If grItem.ItemType = ListItemType.AlternatingItem Or grItem.ItemType = ListItemType.Item Then

                    If CType(grItem.Cells(0).FindControl("chkSelect"), CheckBox).Checked = True Then

                        Utilities.InsertUnsettledBatchesForInvoice(grItem.Cells(5).Text.Trim, grItem.Cells(7).Text.Trim, grItem.Cells(11).Text.Trim)

                        i = i + 1

                    End If

                End If

            Next

            If i = 0 Then
                Response.Write("<script> alert('No selected record(s) to process!');</script>")
            Else

                Response.Write("<script> alert('Operation Successful!');</script>")
                BindDataGrid()
            End If

        End Sub

存储过程:

Create proc [dbo].[spInsertUnsettledBatchesForInvoice]

@TerminalID varchar(8),
@BatchNumber int,
@SettledAmount money

as


insert into GeneratedInvoiceBatches (GenerationDate,TerminalID,BatchNumber,SettledAmount,isPayment,isHSBCFile,paymentdate)
values
(GetDate(),@TerminalID,@BatchNumber,@SettledAmount,1,1,getdate())

问题是有时它会插入重复的行,比如三个月一次。有人可以确定问题吗?它与复选框控件有关吗?如何避免这种重复?

【问题讨论】:

  • 哪个值确定记录是重复的?
  • 如果不是在任何点击时重复的内容..而不是通过意外点击两次.. dgv 中的同一行,您可以检查 db 中是否存在警告..
  • 是的,好像我必须使用 NOT EXISTS 和子查询来检查是否有重复

标签: sql-server vb.net checkbox duplicate-data


【解决方案1】:

我的猜测是按钮被快速连续点击两次。您可以在调用数据库插入后立即取消选中 If-Then 中的框吗?这样,第二次点击将找不到任何复选框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多