保存时加倍数据 [英] Double data when saving

查看:60
本文介绍了保存时加倍数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,
自最近三天以来,我一直在面对这个问题,但我似乎仍然不知道问题的根源.没有语法错误,但是我认为逻辑上有问题,因为每当我单击按钮后,都将保存在数据库中的数据加倍.例如:

Excel文件中有2条记录:

1.测试
2. Test1

在数据库中:
1.测试
2.测试
3.Test1
4.Test1

这是保存"按钮代码:

Hi Everyone,
I''ve been facing this issue since the last three days and I still can''t seem to know where the issue is coming from. There are no syntax errors but i think there is something wrong with the logic because whenever I click the buton save, it doubles the data bein saved in the database. For example:

Excel file has 2 records in it:

1. Test
2. Test1

In database :
1.Test
2.Test
3.Test1
4.Test1

Here is the Save button code:

Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim saveRemarks As String = String.Empty
        Dim ctr As Integer = 0
        Dim row As Integer = 0
        Try
            For i As Integer = 0 To gvExcel.Rows.Count - 1


                Dim tblMainID As Integer = Integer.Parse(gvExcel.Rows(i).Cells(0).Text.ToString().ToUpper.Trim())
                Dim MainCompanyName As String = gvExcel.Rows(i).Cells(1).Text.ToString().ToUpper.Trim()
                Dim tblMainSource As String = gvExcel.Rows(i).Cells(2).Text.ToString.ToUpper.Trim()
                Dim tblMainBusinessUnit As String = gvExcel.Rows(i).Cells(3).Text.ToString.ToUpper.Trim()
                Dim tblMainContact As String = gvExcel.Rows(i).Cells(4).Text.ToString.ToUpper.Trim()
                Dim tblMainPhoneNumber As String = gvExcel.Rows(i).Cells(5).Text.ToString.ToUpper.Trim()
                Dim tblMainEmail As String = gvExcel.Rows(i).Cells(6).Text.ToString.ToUpper.Trim()
                Dim tblMainUserID As String = gvExcel.Rows(i).Cells(7).Text.ToString.ToUpper.Trim()
                Dim tblMainWesite As String = gvExcel.Rows(i).Cells(8).Text.ToString.ToUpper.Trim()
                Dim tblMainAddress As String = gvExcel.Rows(i).Cells(9).Text.ToString.ToUpper.Trim()
                Dim tblMainZipCode As String = gvExcel.Rows(i).Cells(10).Text.ToString.ToUpper.Trim()
                Dim tblMainCountry As String = gvExcel.Rows(i).Cells(11).Text.ToString.ToUpper.Trim()
                Dim tblMainRegion As String = gvExcel.Rows(i).Cells(12).Text.ToString.ToUpper.Trim()
                Dim tblMainProjID As String = gvExcel.Rows(i).Cells(13).Text.ToString.ToUpper.Trim()
                Dim tblMainProjLeader As String = gvExcel.Rows(i).Cells(14).Text.ToString.ToUpper.Trim()
                Dim tblMainPrimarySOS As String = gvExcel.Rows(i).Cells(15).Text.ToString.ToUpper.Trim()
                Dim tblMainCommodityName As String = gvExcel.Rows(i).Cells(16).Text.ToString.ToUpper.Trim()
                Dim tblMainFY As String = gvExcel.Rows(i).Cells(17).Text.ToString.ToUpper.Trim()
                Dim tblMainQtr As String = gvExcel.Rows(i).Cells(18).Text.ToString.ToUpper.Trim()
                Dim tblMainESLiveTraining As String = gvExcel.Rows(i).Cells(19).Text.ToString.ToUpper.Trim()
                Dim tblMainCompliance As String = gvExcel.Rows(i).Cells(20).Text.ToString.ToUpper.Trim()
                Dim tblMainAnsweredDDSC As String = gvExcel.Rows(i).Cells(21).Text.ToString.ToUpper.Trim()
                
and so on...


                If updateTblMain(tblMainID, MainCompanyName, tblMainSource, tblMainBusinessUnit, tblMainContact, tblMainPhoneNumber, _
                                 tblMainEmail, tblMainUserID, _
                                  tblMainWesite, tblMainAddress, tblMainZipCode, tblMainCountry, tblMainRegion, _
                                     tblMainProjID, tblMainProjLeader, tblMainPrimarySOS, tblMainCommodityName, _
                     tblMainFY, tblMainQtr, tblMainESLiveTraining, tblMainCompliance, tblMainAnsweredDDSC, _
                         tblMainFreightTerm, tblMainPaymentTerm, tblMainParticipatedOnBidding, tblMainManufacturer, _
                          tblMainReason, tblMainNumLotsAwarded, tblMainCapabilityProcess, tblMainComments, "update", tblMainUsernameUpload, tblMainDateTimeUploaded) <> 0 Then
                    ctr += 1
                End If
                
            Next


        Catch ex As Exception
            lblWarning.Text += "Error encountered in row # " & row & ". Succeeding data not saved. Pls check data source"
        End Try

    End Sub
    Private Function updateTblMain(ByVal tblMainID As Integer, ByVal MainCompanyName As String, ByVal tblMainSource As String, _
ByVal tblMainBusinessUnit As String, ByVal tblMainContact As String, ByVal tblMainPhoneNumber As String, ByVal tblMainEmail As String, _
ByVal tblMainUserID As String, ByVal tblMainWesite As String, ByVal tblMainAddress As String, ByVal tblMainZipCode As String, _
ByVal tblMainCountry As String, ByVal tblMainRegion As String, ByVal tblMainProjID As String, ByVal tblMainProjLeader As String, _
ByVal tblMainPrimarySOS As String, ByVal tblMainCommodityName As String, ByVal tblMainFY As String, ByVal tblMainQtr As String, _
ByVal tblMainESLiveTraining As String, ByVal tblMainCompliance As String, ByVal tblMainAnsweredDDSC As String, ByVal tblMainFreightTerm As String, _
ByVal tblMainPaymentTerm As String, ByVal tblMainParticipatedOnBidding As String, ByVal tblMainManufacturer As String, _
ByVal tblMainReason As String, ByVal tblMainNumLotsAwarded As String, ByVal tblMainCapabilityProcess As String, ByVal tblMainComments As String, ByVal operation As String, _
ByVal tblMainUsernameUpload As String, ByVal tblMainDateTimeUploaded As Date) As Integer
        Dim dalc2 As New DALC
        Dim rec As Integer = dalc2.updateTblMain(tblMainID, MainCompanyName, tblMainSource, tblMainBusinessUnit, tblMainContact, tblMainPhoneNumber, _
        tblMainEmail, tblMainUserID, tblMainWesite, tblMainAddress, tblMainZipCode, tblMainCountry, tblMainRegion, tblMainProjID, _
        tblMainProjLeader, tblMainPrimarySOS, tblMainCommodityName, tblMainFY, tblMainQtr, tblMainESLiveTraining, tblMainCompliance, _
        tblMainAnsweredDDSC, tblMainFreightTerm, tblMainPaymentTerm, tblMainParticipatedOnBidding, tblMainManufacturer, _
        tblMainReason, tblMainNumLotsAwarded, tblMainCapabilityProcess, tblMainComments, operation, tblMainUsernameUpload, tblMainDateTimeUploaded)
        Return rec
    End Function

#Region "updateTblMain() : Updates Main Table"
    ''' <summary>
    ''' Updates Training Actual Table
    ''' </summary>
    Public Function updateTblMain(ByVal tblMainID As Integer, ByVal MainCompanyName As String, ByVal tblMainSource As String, _
ByVal tblMainBusinessUnit As String, ByVal tblMainContact As String, ByVal tblMainPhoneNumber As String, ByVal tblMainEmail As String, _
ByVal tblMainUserID As String, ByVal tblMainWesite As String, ByVal tblMainAddress As String, ByVal tblMainZipCode As String, _
ByVal tblMainCountry As String, ByVal tblMainRegion As String, ByVal tblMainProjID As String, ByVal tblMainProjLeader As String, _
ByVal tblMainPrimarySOS As String, ByVal tblMainCommodityName As String, ByVal tblMainFY As String, ByVal tblMainQtr As String, _
ByVal tblMainESLiveTraining As String, ByVal tblMainCompliance As String, ByVal tblMainAnsweredDDSC As String, ByVal tblMainFreightTerm As String, _
ByVal tblMainPaymentTerm As String, ByVal tblMainParticipatedOnBidding As String, ByVal tblMainManufacturer As String, _
ByVal tblMainReason As String, ByVal tblMainNumLotsAwarded As String, ByVal tblMainCapabilityProcess As String, ByVal tblMainComments As String, ByVal operation As String, ByVal tblMainUsernameUpload As String, _
ByVal tblMainDateTimeUploaded As Date) As Integer

        Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("dbStrConnect").ConnectionString)
        conn.Open()
        Try
            Dim cmd As New SqlCommand("updateTblMain", conn)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@tblMainID", tblMainID)
            cmd.Parameters.AddWithValue("@MainCompanyName", MainCompanyName)

            cmd.Parameters.AddWithValue("@tblMainSource", tblMainSource)
            cmd.Parameters.AddWithValue("@tblMainBusinessUnit", tblMainBusinessUnit)
            cmd.Parameters.AddWithValue("@tblMainContact", tblMainContact)
            cmd.Parameters.AddWithValue("@tblMainPhoneNumber", tblMainPhoneNumber)
            cmd.Parameters.AddWithValue("@tblMainEmail", tblMainEmail)
            cmd.Parameters.AddWithValue("@tblMainUserID", tblMainUserID)
            cmd.Parameters.AddWithValue("@tblMainWesite", tblMainWesite)
            cmd.Parameters.AddWithValue("@tblMainAddress", tblMainAddress)
            cmd.Parameters.AddWithValue("@tblMainZipCode", tblMainZipCode)
            cmd.Parameters.AddWithValue("@tblMainCountry", tblMainCountry)
            cmd.Parameters.AddWithValue("@tblMainRegion", tblMainRegion)
            cmd.Parameters.AddWithValue("@tblMainProjID", tblMainProjID)
            cmd.Parameters.AddWithValue("@tblMainProjLeader", tblMainProjLeader)
            cmd.Parameters.AddWithValue("@tblMainPrimarySOS", tblMainPrimarySOS)
            cmd.Parameters.AddWithValue("@tblMainCommodityName", tblMainCommodityName)
            cmd.Parameters.AddWithValue("@tblMainFY", tblMainFY)
            cmd.Parameters.AddWithValue("@tblMainQtr", tblMainQtr)
            cmd.Parameters.AddWithValue("@tblMainESLiveTraining", tblMainESLiveTraining)
            cmd.Parameters.AddWithValue("@tblMainCompliance", tblMainCompliance)
            cmd.Parameters.AddWithValue("@tblMainAnsweredDDSC", tblMainAnsweredDDSC)
            cmd.Parameters.AddWithValue("@tblMainFreightTerm", tblMainFreightTerm)
            cmd.Parameters.AddWithValue("@tblMainPaymentTerm", tblMainPaymentTerm)
            cmd.Parameters.AddWithValue("@tblMainParticipatedOnBidding", tblMainParticipatedOnBidding)
            cmd.Parameters.AddWithValue("@tblMainManufacturer", tblMainManufacturer)
            cmd.Parameters.AddWithValue("@tblMainReason", tblMainReason)
            cmd.Parameters.AddWithValue("@tblMainNumLotsAwarded", tblMainNumLotsAwarded)
            cmd.Parameters.AddWithValue("@tblMainCapabilityProcess", tblMainCapabilityProcess)
            cmd.Parameters.AddWithValue("@tblMainComments", tblMainComments)
            cmd.Parameters.AddWithValue("@operation", operation)
            cmd.Parameters.AddWithValue("@tblMainUsernameUpload", tblMainUsernameUpload)
            cmd.Parameters.AddWithValue("@tblMainDateTimeUploaded", tblMainDateTimeUploaded)

            Dim rec As Integer = cmd.ExecuteNonQuery()
            Return rec
        Catch ex As Exception
            Return 0
        Finally
            conn.Close()
        End Try
    End Function
#End Region


这是存储过程:


Here is the stored procedure :

USE [SupplierDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[updateTblMain]
	-- Add the parameters for the stored procedure here
	@tblMainID int, 
	@MainCompanyName nvarchar(50), 
	@tblMainSource nvarchar(20), 
	
	@tblMainBusinessUnit nvarchar(50),
	@tblMainContact nvarchar(50), 
	@tblMainPhoneNumber nvarchar(50),
	
	@tblMainEmail nvarchar(50), 
	@tblMainUserID nvarchar(50),
	@tblMainWesite nvarchar(50),
	
	@tblMainAddress varchar(4),
	@tblMainZipCode numeric(18, 0),
	@tblMainCountry nvarchar(50),
	
	
	@tblMainRegion nvarchar(50), 
	@tblMainProjID nvarchar(50),
	@tblMainProjLeader nvarchar(50),
	@tblMainPrimarySOS nvarchar(50),
	
	
	@tblMainCommodityName nvarchar(50),
	@tblMainFY numeric(18, 0), 
	@tblMainQtr nvarchar(5),
	
	@tblMainESLiveTraining datetime,
	@tblMainCompliance varchar(100), 
	@tblMainAnsweredDDSC nvarchar(50),
	
              and so on...
	
AS
BEGIN
DECLARE @exists bit
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

SET @exists = (SELECT 1 from tblMainForm where tblMainID = @tblMainID)
PRINT @exists


if (@operation = 'update')
	BEGIN
	if (@exists = 1 ) --perform EDIT/UPDATE
		begin
			UPDATE tblMainForm
			SET tblMainCompanyName = @MainCompanyName, 
			tblMainSource = @tblMainSource, 
			
			tblMainBusinessUnit= @tblMainBusinessUnit, 
			tblMainContact = @tblMainContact,
			tblMainPhoneNumber = @tblMainPhoneNumber, 
			tblMainEmail = @tblMainEmail, 
			tblMainUserID = @tblMainUserID, 
			tblMainWesite = @tblMainWesite, 
			tblMainAddress = @tblMainAddress,
			tblMainZipCode = @tblMainZipCode, 
			tblMainCountry = @tblMainCountry, 
			tblMainRegion = @tblMainRegion,
			tblMainProjID = @tblMainProjID, 
			tblMainProjLeader = @tblMainProjLeader, 
			tblMainPrimarySOS = @tblMainPrimarySOS,
			tblMainCommodityName = @tblMainCommodityName, 
			tblMainFY = @tblMainFY,
			
			tblMainQtr = @tblMainQtr, 
			tblMainESLiveTraining = @tblMainESLiveTraining, 
			tblMainCompliance = @tblMainCompliance,
			tblMainAnsweredDDSC = @tblMainAnsweredDDSC, 
			and so on..
			
		where tblMainID = @tblMainID;	
		end
	else --perform INSERT
		begin
			INSERT INTO tblMainForm
			(tblMainCompanyName,
			 tblMainSource, 
			 tblMainBusinessUnit, 
			 tblMainContact, 
			 tblMainPhoneNumber, 
			 tblMainEmail,
			 tblMainUserID, 
			 tblMainWesite,
			 tblMainAddress,
			 tblMainZipCode, 
			 tblMainCountry,
			 tblMainRegion, 
			 tblMainProjID,
			 tblMainProjLeader,
			 tblMainPrimarySOS, 
			 tblMainCommodityName,
			 tblMainFY,
			 tblMainQtr,
			 tblMainESLiveTraining,
		     tblMainCompliance,
			 tblMainAnsweredDDSC,
			 ... and so on) 
			 
			VALUES(
			@MainCompanyName,
			@tblMainSource, 
			@tblMainBusinessUnit, 
			@tblMainContact, 
			@tblMainPhoneNumber, 
			@tblMainEmail,
			@tblMainUserID, 
			@tblMainWesite,
			@tblMainAddress,
			@tblMainZipCode, 
			@tblMainCountry,
			@tblMainRegion, 
			@tblMainProjID,
			@tblMainProjLeader,
			@tblMainPrimarySOS, 
			@tblMainCommodityName,
			@tblMainFY,
			@tblMainQtr,
			@tblMainESLiveTraining,
		    	@tblMainCompliance,
			@tblMainAnsweredDDSC,
                                        ..... and so on) ;
		end			
	END
	
else if (@operation = 'delete')
	BEGIN
		DELETE FROM tblMainForm WHERE tblMainID = @tblMainID;
	END
END


我将不胜感激任何帮助.

非常感谢.


I will greatly appreciate any help.

Thank you so much.

推荐答案

如果您正在从事Web项目,

在.aspx源(设计源)中检查按钮声明.
如果您有runat = server和onclick = button1_click,请

并且您的代码后台(即.aspx.vb)中有一个事件处理程序,它将导致该事件被触发两次.

这是xxx.aspx中的示例:

if you are working on web project,

Check your button declaration in your .aspx source(design source).
If you have a runat=server and onclick=button1_click,

and you have an event handler in your code-behind (ie. .aspx.vb), it will cause the event to be fired twice.

Here is an example in xxx.aspx:

<asp:Button id="button1" onclick="button1_Click" runat="server" Text="Click Me!"></asp:Button>



该声明应如下所示:



This declaration should be like below:

<asp:Button id="button1" runat="server" Text="Click Me!"></asp:Button>



祝您编码愉快!
:)



Happy Coding!
:)


这篇关于保存时加倍数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆