0Tommy
0Tommy

Reputation: 29

Having issues when 2 users are working with the same program

Public Class DataAccess
    Dim dataAcc As New DataAccess
    Public Shared dtx As New DataTable
    Private Shared ConStr As String = "Server = 10.18.206.30;database=PeajeFacturacion;User ID=FacturacionUsr;Password = ukShLq?U6&hNxDxN+67!XaYq"
    Public Shared Function AddOneRecord(PK As String) As DataTable
        Using cn As New SqlConnection(ConStr),
                    cmd As New SqlCommand("Select c.idCruce, c.FechaCruce, c.HoraCruce, c.claseVehiculo, c.Importe,

 c.codigoCobro, n.nomCaseta 
from dbo.Cruce AS c
JOIN dbo.nombre_caseta AS n 
ON n.numCaseta=c.ClavePlaza 
where c.CodigoCobro = @PK;", cn)
                cmd.Parameters.Add("@PK", SqlDbType.VarChar).Value = PK
                cn.Open()
                dtx.Load(cmd.ExecuteReader)
            End Using
            Return dtx
        End Function
    End Class

I use that part to create the connection just like the example @Mary posted. Then:

Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles btnAgregar.ServerClick
    Dim numTicket As String = txtNoTicket.Text

    Dim dtx As New DataTable
    Dim pk As String
    pk = txtNoTicket.Text

    Dim con2 As New SqlConnection
    Dim cmd2 As New SqlCommand
    Dim dr As SqlDataReader

    Dim dtx2 As DataTable
    Dim status As Boolean = False

    'If Not Integer.TryParse(ticket.Text, pk) Then
    If String.IsNullOrEmpty(pk) Then
        'ScriptManager.RegisterStartupScript(Me, Page.GetType, "Script", "showDisplay();", True)
        cFunciones.mostrarDivAlertaAA("Type a number", "dangerNormal", Me.Page, "")
    Else


        dtx = DataAccess.AddOneRecord(pk)

So when adding tickets the issue is the ticket 1 user adds, gets added to the other user even though they use different sessions and different computers. The program is in test fase right now.

Upvotes: 1

Views: 25

Answers (1)

Mary
Mary

Reputation: 15091

You can get rid of Shared in the DatAccess class. Then each instance of the class will have its own data. Now you must declare an instance of the class and call the method on that instance.

Public Class DataAccess
    Dim dataAcc As New DataAccess
    Public dtx As New DataTable
    Private ConStr As String = "Server = 10.18.206.30;database=PeajeFacturacion;User ID=FacturacionUsr;Password = ukShLq?U6&hNxDxN+67!XaYq"
    Public Function AddOneRecord(PK As String) As DataTable
        Using cn As New SqlConnection(ConStr),
                cmd As New SqlCommand("Select c.idCruce, c.FechaCruce, c.HoraCruce, c.claseVehiculo, c.Importe,
                                        c.codigoCobro, n.nomCaseta 
                                        from dbo.Cruce AS c
                                        JOIN dbo.nombre_caseta AS n 
                                        ON n.numCaseta=c.ClavePlaza 
                                        where c.CodigoCobro = @PK;", cn)
            cmd.Parameters.Add("@PK", SqlDbType.VarChar).Value = PK
            cn.Open()
            dtx.Load(cmd.ExecuteReader)
        End Using
        Return dtx
    End Function
End Class

Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles btnAgregar.ServerClick
    Dim dtx As New DataTable
    Dim pk = txtNoTicket.Text
    If String.IsNullOrEmpty(pk) Then
        cFunciones.mostrarDivAlertaAA("Type a number", "dangerNormal", Me.Page, "")
    Else
        Dim datAcc As New DataAccess
        dtx = datAcc.AddOneRecord(pk)
    End If
End Sub

Upvotes: 1

Related Questions