none
Concurrencia de datos RRS feed

  • Pregunta

  • Hola a todos,

    tengo el siguiente problema, he desarrollado un sistema en vb2008 y sql server 2005 estaba funcionando bien pero me ha sucedido que al agregar sucursales que acceden a al base de datos en forma remota, y grabar una factura el registro es pisado por el de otra terminal, estoy usando transacciones pongo un pedazo del codigo

    Using con As New SqlConnection(Conexion)

                con.Open()

                Dim tran As SqlTransaction = con.BeginTransaction(IsolationLevel.Serializable)

                Dim cmd_actual As SqlCommand = New SqlCommand("Select IDENT_CURRENT(@TablaNombre)")

                cmd_actual.Connection = con

                Dim cmd1 As New SqlCommand(cabsql, con)

     

       Aca paso parametros a los cmd

    cmd1.ExecuteNonQuery() 'quiero el id generado en este cmd

     

                    cmd_actual.Parameters.Add("@TablaNombre", SqlDbType.VarChar, 250).Value = "tabla_cab"

                    Dim res As Object = cmd_actual.ExecuteScalar()

                    If res Is System.DBNull.Value Then

                        tran.Rollback()

                        MsgBox("Ocurrio un error de Id", MsgBoxStyle.Critical, "Error")

                        Exit Sub

                    Else

                        id_cabe = CType(res, Long)

                    End If

     

     

    lo uso aca

     

    cmd2.Parameters.AddWithValue("@id_guia", id_cabe)

                    cmd2.Parameters.AddWithValue("@art_cod", cart)

                    cmd2.Parameters.AddWithValue("@art_des", dart)

                    cmd2.Parameters.AddWithValue("@art_cant", kart)

                    cmd2.Parameters.AddWithValue("@art_kgs", kgs)

                    cmd2.Parameters.AddWithValue("@art_mts", mts)

                    cmd2.ExecuteNonQuery()

     

    .

    .

    .

    end using

    espero haber sido claro ,si alguien me puede guiar lo agradeceria

     


    leon
    • Cambiado Enrique M. Montejo martes, 7 de febrero de 2012 11:14 acceso a datos (De:Lenguaje VB.NET)
    lunes, 6 de febrero de 2012 12:56

Respuestas

  • grabar una factura el registro es pisado por el de otra terminal

    para evitar este problema podrias aplciar la tecnica que usa un campo TimeSpan en la tabla

    con este podria compara si el valor de este campo cambio y conocer si alguien ya lo actualizo, por supuesto es un proceso previo que harias a la actualizacion

    anteriormente en el foro se trato el tema

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/dcab78ba-c339-4696-a611-0c1bf2759c37

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Leon Abuin martes, 7 de febrero de 2012 11:15
    lunes, 6 de febrero de 2012 13:04