Click here to Skip to main content
15,895,709 members
Please Sign up or sign in to vote.
3.00/5 (2 votes)
See more:
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:
VB
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 :

VB
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.
Posted
Comments
Aarti Meswania 25-Jul-12 5:42am    
are you developing web application?
Sandeep Mewara 25-Jul-12 6:01am    
First thing, did you DEBUG and see if the execution if insert happens once and as expected?
serigraphie 25-Jul-12 6:31am    
Yes, I did debug but it was going through the code twice the number of records in my exce file. It is now fixed but thank you for the help!

1 solution

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!
:)
 
Share this answer
 
Comments
serigraphie 25-Jul-12 6:20am    
Oh my God!!!! That was it!!! OMG OMG OMG, thank you so much for your help! how ironic! I almost pasted all the codes in here and the problem was lying in the design code! Indeed, it was firing the event twice! thank you very much again aarti meswania for your amicable and correct response!
Aarti Meswania 25-Jul-12 6:23am    
most welcome :)
Glad to be helpful you!
Good day!
bluesathish 25-Jul-12 6:26am    
great! keep it up... sharing our experiences is a great thing, thanks to codeproject team
serigraphie 25-Jul-12 6:32am    
@bluesathish: True, I love codeproject!
Aarti Meswania 25-Jul-12 6:44am    
thanks for appreciation!
we all here to help each other.
thankful to codeproject site for establish 'Quick Answer Forum' :)

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