none
Transação com DataTable RRS feed

  • Pergunta

  • Caros,


    Tem como realizar transação utilizando datatable?
    O codigo postado é para guardar o ultimo boleto para num proximo ciclo utilizar outro numero de boleto. Estou achando se acontecer de executarem duas pessoas possa dar problema de numero de titulos iguais, pode ocorrer?

    SEGUE O CODIGO
    ...
    'Gravando proximo titulo
                    daEmpresa.FillByIDEmpresa(dtEmpresa, Empresa)
                    dtEmpresa.Item(0).nm_tituloprox = dtEmpresa.Item(0).nm_tituloprox + 1
                    NumTitulo = dtEmpresa.Item(0).nm_tituloprox
                    daEmpresa.Update(dtEmpresa)
    ...

    Obrigado
    sexta-feira, 22 de agosto de 2008 20:24

Respostas

  • Jeronimo,

     

    Sem problemas, neste caso você precisa utilizar o método AcceptChanges do DataTable.

    http://msdn.microsoft.com/pt-br/library/system.data.datatable.acceptchanges.aspx

     

    Um exemplo em VB.NET

     

    Code Snippet

    Try

    da.Update(ds, "Emp")

    ds.AcceptChanges()

    Console.WriteLine("Transaction successfully committed ...")

    Catch e As Exception

    ds.RejectChanges()

    Console.WriteLine(e.Message)

    Console.WriteLine("Transaction failed - Rolled back ...")

    Finally

    con.Close()

    End Try

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    segunda-feira, 25 de agosto de 2008 00:45

Todas as Respostas

  • Jeronimo,

     

    Minha sugestão (Exemplo em VB.NET):

     

    Code Snippet

    Imports System.Data

    Imports System.Data.SqlClient

    Imports System.Configuration

    Imports System.Text 'StringBuilder

     

    Private Sub SQLServerTransaction()

    'definindo a string de conexao

    'Dim strConn As String = My.Settings.AWorks

    Dim strConn = ConfigurationManager.ConnectionStrings("AWorks").ToString

    'Dim cnnConn As New SqlConnection(strConn)

    Dim strSQL As New StringBuilder

    Using cnnConn As New SqlConnection(strConn)

    'definindo SQL

    strSQL.Append("INSERT INTO Production.ProductCategory ")

    strSQL.Append(" ( ")

    strSQL.Append(" Name ")

    strSQL.Append(" ) ")

    strSQL.Append(" Values ")

    strSQL.Append(" ( ")

    strSQL.Append(" @Name ")

    strSQL.Append(" ) ")

    'abrindo conexão

    cnnConn.Open()

    'inicia uma transação local

    Dim oTransaction As SqlTransaction = cnnConn.BeginTransaction()

    Try

    'efetuando pesquisa no banco de dados

    Dim cmd As New SqlCommand(strSQL.ToString, cnnConn)

    cmd.Transaction = oTransaction

    cmd.Parameters.Add(New SqlParameter("@Name", SqlDbType.Char, 15)).Value = "Hardware3a"

    cmd.CommandType = CommandType.Text

    oTransaction.Commit()

    MsgBox(CType(cmd.ExecuteNonQuery(), Int32))

    Catch Ex As Exception

    MsgBox(Ex.ToString)

    oTransaction.Rollback()

    End Try

    End Using

    End Sub

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    domingo, 24 de agosto de 2008 18:38
  • Amigo,

     

    Deste modo eu sei.

    Mas utilizando o proprio DataTable se sabe?

     

    Obrigado.

    domingo, 24 de agosto de 2008 22:59
  • Jeronimo,

     

    Sem problemas, neste caso você precisa utilizar o método AcceptChanges do DataTable.

    http://msdn.microsoft.com/pt-br/library/system.data.datatable.acceptchanges.aspx

     

    Um exemplo em VB.NET

     

    Code Snippet

    Try

    da.Update(ds, "Emp")

    ds.AcceptChanges()

    Console.WriteLine("Transaction successfully committed ...")

    Catch e As Exception

    ds.RejectChanges()

    Console.WriteLine(e.Message)

    Console.WriteLine("Transaction failed - Rolled back ...")

    Finally

    con.Close()

    End Try

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    segunda-feira, 25 de agosto de 2008 00:45
  • coloquei como util e resposta.

    vou testar qualquer coisa reabro o post.

     

    Obrigado.

     

    segunda-feira, 25 de agosto de 2008 01:10