Usuário com melhor resposta
Transação com DataTable

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
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 SnippetTry
da.Update(ds,
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()
Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
Todas as Respostas
-
Jeronimo,
Minha sugestão (Exemplo em VB.NET):
Code SnippetImports
System.DataImports
System.Data.SqlClientImports
System.ConfigurationImports
System.Text 'StringBuilderPrivate 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 SQLstrSQL.Append(
"INSERT INTO Production.ProductCategory ")strSQL.Append(
" ( ")strSQL.Append(
" Name ")strSQL.Append(
" ) ")strSQL.Append(
" Values ")strSQL.Append(
" ( ")strSQL.Append(
" @Name ")strSQL.Append(
" ) ") 'abrindo conexãocnnConn.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 ExceptionMsgBox(Ex.ToString)
oTransaction.Rollback()
End Try End Using End Sub
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -
-
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 SnippetTry
da.Update(ds,
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()
Não esqueça de marca a mensagem como "útil", caso tenha ajudado. -