Asp.net 可疑代码运行两次或根本不运行有时,间歇性问题

Asp.net 可疑代码运行两次或根本不运行有时,间歇性问题,asp.net,vb.net,Asp.net,Vb.net,下面的代码让我很头疼。它可能是两年前编写的,从那以后一直在快速运行,但我们注意到有时insert查询会运行两次,有时根本不会运行。代码基本上从网页(aspx)标签中获取整数值和十进制数值,并将它们插入主表中 最近的问题似乎受到系统用户数量的影响。当只有一个人使用它时,似乎没有问题,但是有多个用户时,问题开始出现。我使用的是会话变量而不是标签,但作为消除过程,我停止使用这些变量 如果有人能帮助我或给我一些建议,那将是伟大的,非常感谢 Protected Sub btnSubmit_Click(By

下面的代码让我很头疼。它可能是两年前编写的,从那以后一直在快速运行,但我们注意到有时insert查询会运行两次,有时根本不会运行。代码基本上从网页(aspx)标签中获取整数值和十进制数值,并将它们插入主表中

最近的问题似乎受到系统用户数量的影响。当只有一个人使用它时,似乎没有问题,但是有多个用户时,问题开始出现。我使用的是会话变量而不是标签,但作为消除过程,我停止使用这些变量

如果有人能帮助我或给我一些建议,那将是伟大的,非常感谢

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

    'local
    Dim subidString As String = "SELECT [Submission_ID], [Week Ending] FROM tbl_Weekly_Expenses WHERE [Submission_ID] = @SubID AND [Week Ending] = @WeekEnding AND [SentToPayroll] IS NULL"

    'local
    Dim mtdString As String = "SELECT SUM([Mileage Covered]) AS SumOfMileageCovered FROM tbl_Weekly_Expenses WHERE [Gabem Employee Reference] = @NovaRef"

    'remote
    Dim vehicleString As String = "SELECT [Vehicle] FROM tblExpensesMileage WHERE [SubID] = @SubID"

    'local
    Dim insertString As String = "INSERT INTO tbl_Weekly_Expenses ([Week Ending], [Date Expenses Processed], [Expenses_From], [Expenses_To], [Date Expenses received], [Gabem Employee Reference], [Identifying Number], [Submission_ID], [Car], [Motorcycle], [Pushbike], [Mileage Covered], [Mileage Amount Claimed], [Accommodation], [Meal Allowance], [Daily Allowance], [Tools/Clothing], [Details_Of_Tools], [Travel Amount], [Telephone], [Professional Fees], FuelVAT, MAVAT, TAVAT, AVAT, DAVAT, TCVAT, TelVAT, PfVAT, processedby) " & _
                                 "VALUES (@WeekEnding, @DateProcessed, @ExpensesFrom, @ExpensesTo, @DateReceived, @NovaRef, @IdentifyingNumber, @SubID, @Car, @Motorcycle, @Pushbike, @MileageCovered, @MileageAmountClaimed, @Accommodation, @Meals, @DailyAllowance, @ToolsClothing, @ToolsDetails, @Travel, @TelephoneCalls, @ProfessionalFees, @FuelVAT, @MAVAT, @TAVAT, @AVAT, @DAVAT, @TCVAT, @TelVAT, @PfVAT, @processedby)"

    'remote
    Dim updateMileage As String = "UPDATE tblExpensesMileage SET [Status] = 'Processed' WHERE [MileageID] = @id"
    Dim updateAccommodation As String = "UPDATE tblExpensesAccommodation SET [Status] = 'Processed' WHERE [AccommodationID] = @id"
    Dim updateMeals As String = "UPDATE tblExpensesMeals SET [Status] = 'Processed' WHERE [MealsID] = @id"
    Dim updateLaundry As String = "UPDATE tblExpensesLaundry SET [Status] = 'Processed' WHERE [LaundryID] = @id"
    Dim updateDailyAllowance As String = "UPDATE tblExpensesDailyAllowance SET [Status] = 'Processed' WHERE [DailyAllowanceID] = @id"
    Dim updateTravel As String = "UPDATE tblExpensesTravel SET [Status] = 'Processed' WHERE [TravelID] = @id"
    Dim updateTools As String = "UPDATE tblExpensesTools SET [Status] = 'Processed' WHERE [ToolsID] = @id"
    Dim updateTelephoneCalls As String = "UPDATE tblExpensesTelephoneCalls SET [Status] = 'Processed' WHERE [TelephoneCallsID] = @id"
    Dim updateProfessionalFees As String = "UPDATE tblExpensesProfessionalFees SET [Status] = 'Processed' WHERE [ProfessionalFeesID] = @id"

    Dim dbconnLocal As String = ConfigurationManager.ConnectionStrings("connection_nbsas2").ConnectionString
    Dim dbconnRemote As String = ConfigurationManager.ConnectionStrings("connection_nbsa_web").ConnectionString

    If txtWEDate.Text = String.Empty Then
        Exit Sub
    End If

    Using myConnectionLocal As New SqlConnection(dbconnLocal)
        myConnectionLocal.Open()

        'VEHICLE TYPE AND PPM STARTS
        Dim Car As Integer = 0
        Dim Motorcycle As Integer = 0
        Dim Pushbike As Integer = 0
        Dim ppm As Decimal
        Using myConnectionRemote As New SqlConnection(dbconnRemote)
            myConnectionRemote.Open()

            'Vehicle type
            Dim cmdSelectVehicle As New SqlCommand(vehicleString, myConnectionRemote)
            cmdSelectVehicle.Parameters.AddWithValue("@SubID", Session("subid"))
            Dim readerVehicle As SqlDataReader = cmdSelectVehicle.ExecuteReader()
            readerVehicle.Read()
            If readerVehicle.HasRows = True Then
                'MTD value for pence per mile (ppm)
                Dim cmdSelectMTD As New SqlCommand(mtdString, myConnectionLocal)
                cmdSelectMTD.Parameters.AddWithValue("@NovaRef", Session("novaref"))
                Dim readerMTD As SqlDataReader = cmdSelectMTD.ExecuteReader()
                readerMTD.Read()
                If IsDBNull(readerMTD.Item(0)) = True Then
                    If readerVehicle.Item(0) = "Car" Then
                        ppm = 0.45
                        Car = "1"
                    ElseIf readerVehicle.Item(0) = "Motorcycle" Then
                        ppm = 0.24
                        Motorcycle = "1"
                    Else
                        ppm = 0.2
                        Pushbike = "1"
                    End If
                Else
                    If readerVehicle.Item(0) = "Motorcycle" Then
                        ppm = 0.24
                        Motorcycle = "1"
                    ElseIf readerVehicle.Item(0) = "Car" And readerMTD.Item(0) < 10000 Then
                        ppm = 0.45
                        Car = "1"
                    ElseIf readerVehicle.Item(0) = "Car" And readerMTD.Item(0) > 10000 Then
                        ppm = 0.25
                        Car = "1"
                    Else
                        ppm = 0.2
                        Pushbike = "1"
                    End If
                End If
                readerMTD.Close()
            End If
            readerVehicle.Close()
            myConnectionRemote.Close()
        End Using
        'VEHICLE TYPE AND PPM ENDS

        'insert parameters etc
        Dim cmdInsertWE As New SqlCommand(insertString, myConnectionLocal)
        cmdInsertWE.Parameters.AddWithValue("@WeekEnding", CType(txtWEDate.Text, DateTime))
        cmdInsertWE.Parameters.AddWithValue("@DateProcessed", Now())
        cmdInsertWE.Parameters.AddWithValue("@ExpensesFrom", CType(lblMinDate.Text, DateTime))
        cmdInsertWE.Parameters.AddWithValue("@ExpensesTo", CType(lblMaxDate.Text, DateTime))
        cmdInsertWE.Parameters.AddWithValue("@DateReceived", CType(Session("daterec"), DateTime))
        cmdInsertWE.Parameters.AddWithValue("@NovaRef", Session("novaref"))
        cmdInsertWE.Parameters.AddWithValue("@IdentifyingNumber", "1")
        cmdInsertWE.Parameters.AddWithValue("@SubID", Session("subid"))
        cmdInsertWE.Parameters.AddWithValue("@Car", Car)
        cmdInsertWE.Parameters.AddWithValue("@Motorcycle", Motorcycle)
        cmdInsertWE.Parameters.AddWithValue("@Pushbike", Pushbike)
        cmdInsertWE.Parameters.AddWithValue("@MileageCovered", CType(lblMileageNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@MileageAmountClaimed", CType(lblMileageNumber.Text, Decimal) * ppm)
        cmdInsertWE.Parameters.AddWithValue("@Accommodation", CType(lblAccommodationNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@Meals", CType(lblMealsNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@DailyAllowance", CType(lblDailyAllowanceNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@ToolsClothing", CType(lblToolsNumber.Text, Decimal) + CType(lblLaundryNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@ToolsDetails", txtToolsDetails.Text)
        cmdInsertWE.Parameters.AddWithValue("@Travel", CType(lblTravelNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@TelephoneCalls", CType(lblTelephoneCallsNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@ProfessionalFees", CType(lblProfessionalFeesNumber.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@FuelVAT", CType(txtRec_Mileage.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@MAVAT", CType(txtRec_Meals.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@TAVAT", CType(txtRec_Travel.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@AVAT", CType(txtRec_Accommodation.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@DAVAT", CType(txtRec_Daily.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@TCVAT", CType(txtRec_ToolsLaundry.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@TelVAT", CType(txtRec_Telephone.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@PfVAT", CType(txtRec_ProFees.Text, Decimal))
        cmdInsertWE.Parameters.AddWithValue("@processedby", Page.User.Identity.Name)

        cmdInsertWE.ExecuteNonQuery()
        cmdInsertWE.Dispose()

        myConnectionLocal.Close()

        'also clear totals labels
        lblMileageNumber.Text = 0
        lblAccommodationNumber.Text = 0
        lblMealsNumber.Text = 0
        lblLaundryNumber.Text = 0
        lblDailyAllowanceNumber.Text = 0
        lblTravelNumber.Text = 0
        lblToolsNumber.Text = 0
        txtToolsDetails.Text = String.Empty
        lblTelephoneCallsNumber.Text = 0
        lblProfessionalFeesNumber.Text = 0

    End Using 'myConnectionLocal ENDS

    'OPEN REMOTE CONNECTION AND UPDATE STATUS OF LIVE TABLES
    Using myConnectionRemote As New SqlConnection(dbconnRemote)
        myConnectionRemote.Open()

        'Mileage()
        updateCheckBoxes(MileageGridView, "MileageHeaderCheckBox", "MileageCheckBox", updateMileage, myConnectionRemote, lblMileageNumber)
        'Accommodation()
        updateCheckBoxes(AccommodationGridView, "AccommodationHeaderCheckBox", "AccommodationCheckBox", updateAccommodation, myConnectionRemote, lblAccommodationNumber)
        'Meals()
        updateCheckBoxes(MealsGridView, "MealsHeaderCheckBox", "MealsCheckBox", updateMeals, myConnectionRemote, lblMealsNumber)
        'Laundry()
        updateCheckBoxes(LaundryGridView, "LaundryHeaderCheckBox", "LaundryCheckBox", updateLaundry, myConnectionRemote, lblLaundryNumber)
        'Daily(Allowance)
        updateCheckBoxes(DailyAllowanceGridView, "DailyAllowanceHeaderCheckBox", "DailyAllowanceCheckBox", updateDailyAllowance, myConnectionRemote, lblDailyAllowanceNumber)
        'Travel()
        updateCheckBoxes(TravelGridView, "TravelHeaderCheckBox", "TravelCheckBox", updateTravel, myConnectionRemote, lblTravelNumber)
        'Tools()
        updateCheckBoxes(ToolsGridView, "ToolsHeaderCheckBox", "ToolsCheckBox", updateTools, myConnectionRemote, lblToolsNumber)
        'Telephone(Calls)
        updateCheckBoxes(TelephoneCallsGridView, "TelephoneCallsHeaderCheckBox", "TelephoneCallsCheckBox", updateTelephoneCalls, myConnectionRemote, lblTelephoneCallsNumber)
        'Professional(Fees)
        updateCheckBoxes(ProfessionalFeesGridView, "ProfessionalFeesHeaderCheckBox", "ProfessionalFeesCheckBox", updateProfessionalFees, myConnectionRemote, lblProfessionalFeesNumber)

        myConnectionRemote.Close()
    End Using 'myConnectionRemote ENDS

    txtWEDate.Text = String.Empty

End Sub
Protected Sub btnSubmit\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnSubmit。Click
“本地的
Dim subidString As String=“从tbl_Weekly_Expenses中选择[Submission_ID]=@SubID和[Week Ending]=@WeekEnding和[SentToPayroll]为空的[Submission_ID],[Week Ending]”
“本地的
Dim mtdString As String=“选择总和([里程覆盖])作为tbl_每周费用覆盖的里程之和,其中[Gabem员工参考]=@NovaRef”
“遥远的
Dim Vehicle String As String=“从TBlexPensesMiledge中选择[Vehicle],其中[SubID]=@SubID”
“本地的
Dim insertString As String=“插入tbl_每周费用([周末],[处理日期费用],[费用来源],[费用目的地],[收到日期费用],[Gabem员工参考],[识别号],[提交ID],[汽车],[摩托车],[手推车],[行驶里程],[报销里程数],[住宿],[膳食津贴],[每日津贴],[工具/衣物],[工具详情],[差旅金额],[电话],[专业费用],[燃油税,MAVAT,TAVAT,AVAT,DAVAT,TCVAT,TelVAT,PfVAT,processedby“&”_
“价值观(@WeekEnding、@DateProcessed、@ExpensesFrom、@ExpensesTo、@DateReceived、@NovaRef、@identificationnumber、@SubID、@Car、@motory、@Pushbike、@MileageCovered、@mileageamount、@mileageamountclaids、@DailyAllowance、@toolscoothing、@ToolsDetails、@Travel、@电话费、@FuelVAT、@MAVAT、@TAVAT、@AVAT、@TCVAT、@T埃尔瓦特,@PfVAT,@processedby)”
“遥远的
Dim updateMileage As String=“更新TBlexPenseMilege集[Status]=“已处理”,其中[MileageID]=“id”
Dim UPDATEACCOMADION As String=“更新TblexPensesAccountation SET[Status]=“已处理”,其中[AccountationId]=@id”
Dim updateMeals As String=“更新TBLEXPENSESMENDES集合[状态]=“已处理”,其中[MealsID]=“id”
Dim updateLaundry As String=“更新TBlexPenses洗衣房设置[状态]=“已处理”,其中[洗衣房id]=@id”
Dim updateDailyAllowance As String=“更新tblExpensesDailyAllowance集[Status]=“已处理”,其中[DailyAllowanceID]=@id”
Dim updateTravel As String=“更新tblExpensesTravel集[状态]=“已处理”,其中[TravelID]=@id”
Dim updateTools As String=“更新tblExpensesTools集[状态]=“已处理”,其中[ToolsID]=“id”
Dim updateTelephoneCalls As String=“UPDATE-tblExpensesTelephoneCalls集[Status]=“已处理”,其中[TelephoneCallsID]=“id”
Dim updateProfessionalFees As String=“更新tblExpensesProfessionalFees集[Status]=“已处理”,其中[ProfessionalFeesID]=@id”
Dim dbconnLocal As String=ConfigurationManager.ConnectionString(“connection_nbsas2”).ConnectionString
Dim DBCONNMEROTE As String=ConfigurationManager.ConnectionString(“连接\u nbsa\u web”).ConnectionString
如果txtWEDate.Text=String.Empty,则
出口接头
如果结束
将myConnectionLocal用作新的SqlConnection(dbconnLocal)
myConnectionLocal.Open()
'车辆类型和PPM启动
将车辆尺寸调整为整数=0
作为整数的尺寸=0
尺寸为整数=0
将ppm设置为十进制
将myConnectionRemote用作新的SqlConnection(dbconnRemote)
myConnectionRemote.Open()
“车型
Dim CMD选择车辆作为新的SqlCommand(车辆字符串,myConnectionRemote)
cmdSelectVehicle.Parameters.AddWithValue(“@SubID”,会话(“SubID”))
Dim readerVehicle作为SqlDataReader=cmdSelectVehicle.ExecuteReader()的名称
readerVehicle.Read()
如果readerVehicle.HasRows=True,则
'每英里便士的MTD值(ppm)
Dim cmdSelectMTD作为新的SqlCommand(mtdString,myConnectionLocal)
cmdSelectMTD.Parameters.AddWithValue(@NovaRef),会话(“NovaRef”))
Dim readerMTD As SqlDataReader=cmdSelectMTD.ExecuteReader()
readerMTD.Read()
如果IsDBNull(readerMTD.Item(0))=True,则
如果readerVehicle.项目(0)=“汽车”,则
ppm=0.45
Car=“1”
其他readerVehicle.项目(0)=“摩托车”,然后
ppm=0.24
摩托车=“1”
其他的
ppm=0.2
Pushbike=“1”
如果结束
其他的
如果readerVehicle.项目(0)=“摩托车”,则
ppm=0.24
摩托车=“1”
如果readerVehicle.Item(0)=“Car”和readerMTD.Item(0)<10000,则
ppm=0.45
Car=“1”
如果readerVehicle.Item(0)=“Car”和readerMTD.Item(0)>10000,则
ppm=0.25
Car=“1”
其他的
ppm=0.2
Pushbike=“1”
如果结束
如果结束
readerMTD.Close()
如果结束
readerVehicle.Close()