保存时加倍数据 [英] Double data when saving
问题描述
大家好,
自最近三天以来,我一直在面对这个问题,但我似乎仍然不知道问题的根源.没有语法错误,但是我认为逻辑上有问题,因为每当我单击按钮后,都将保存在数据库中的数据加倍.例如:
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屋!