View Full Version : uso de Transação em camadas


AprendizVB
07-03-2006, 10:14 PM
Olá!

Estou desenvolvendo um sistema em camadas onde o acesso a dados está isolado.

estou com uma dúvida em relação ao trabalho com transação.

O conceito é o mesmo de uma nota fiscal e seus ítens.

Preciso fazer algo parecido com isto:

No formulário (apenas um exemplo simples do funcionamento):

Dim nf as new clsNota

'instanciar a classe nota fiscal
nf.numero = numnf
nf.valor = valortotalnf
nf...

'chamar o método de inclusão da nota
nf.incluir

for i = 1 to qtdeitens
nf.item = i
nf.iditem = id
nf.qt = qtde
nf.vlrunit = valorunitario
nf...

'chamar o método de inclusão do item da nota
nf.incluiitem

next


Em clsNota teríamos algo semelhante a isto:

Public Sub incluir()
Dim conn As New SqlConnection(ConexaoSQL)
Dim cmd As New SqlCommand()
Dim Transacao As SqlTransaction
Dim sql As String
conn.Open()
Transacao = conn.BeginTransaction()
sql = "INSERT INTO TBNOTA... "

With cmd
.Connection = conn
.CommandText = sql
.CommandType = CommandType.Text
.Transaction = Transacao
.ExecuteNonQuery()
End With
Transacao.Commit()
End Sub


Public Sub incluiitem()
Dim conn As New SqlConnection(ConexaoSQL)
Dim cmd As New SqlCommand()
Dim Transacao As SqlTransaction
Dim sql As String
conn.Open()
Transacao = conn.BeginTransaction()
sql = "INSERT INTO TBITEMNOTA...

With cmd
.Connection = conn
.CommandText = sql
.CommandType = CommandType.Text
.Transaction = Transacao
.ExecuteNonQuery()
End With
Transacao.Commit()
End Sub

========

As transações funcionam perfeitamente, mas caso eu tenha uma nota com 50
itens e houver algum problema no 40º, apenas este é cancelado...

Como trabalhar com uma única transação para inclusões como esta? uma nota e
diversos itens?
É possível fazer isto sem trabalhar com a conexão/banco de dados na chamada
dos métodos? Lembrando que na camada do formulário, não existe acesso a
dados, apenas a chamada de tais métodos!

Em uma aplicação real, em alguns casos, precisamos trabalhar com transações,
mesmo trabalhando com dados em diferentes classes, como proceder nestes casos?

Grato!

Luciano Azevedo
07-04-2006, 01:14 AM
Vc tem um Begin transaction lá no seu incluir item.
Vc inicia uma transação para cada item.

Public Sub incluiitem()
> Dim conn As New SqlConnection(ConexaoSQL)
> Dim cmd As New SqlCommand()
> Dim Transacao As SqlTransaction
> Dim sql As String
> conn.Open()
--------> Transacao = conn.BeginTransaction()
aqui o erro
> sql = "INSERT INTO TBITEMNOTA

[ ]´s
Luciano Azevedo
"AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
news:F3BE9EA1-DF18-4DEC-B09D-810AE3F4508C@microsoft.com...
> Olá!
>
> Estou desenvolvendo um sistema em camadas onde o acesso a dados está
> isolado.
>
> estou com uma dúvida em relação ao trabalho com transação.
>
> O conceito é o mesmo de uma nota fiscal e seus ítens.
>
> Preciso fazer algo parecido com isto:
>
> No formulário (apenas um exemplo simples do funcionamento):
>
> Dim nf as new clsNota
>
> 'instanciar a classe nota fiscal
> nf.numero = numnf
> nf.valor = valortotalnf
> nf...
>
> 'chamar o método de inclusão da nota
> nf.incluir
>
> for i = 1 to qtdeitens
> nf.item = i
> nf.iditem = id
> nf.qt = qtde
> nf.vlrunit = valorunitario
> nf...
>
> 'chamar o método de inclusão do item da nota
> nf.incluiitem
>
> next
>
>
> Em clsNota teríamos algo semelhante a isto:
>
> Public Sub incluir()
> Dim conn As New SqlConnection(ConexaoSQL)
> Dim cmd As New SqlCommand()
> Dim Transacao As SqlTransaction
> Dim sql As String
> conn.Open()
> Transacao = conn.BeginTransaction()
> sql = "INSERT INTO TBNOTA... "
>
> With cmd
> .Connection = conn
> .CommandText = sql
> .CommandType = CommandType.Text
> .Transaction = Transacao
> .ExecuteNonQuery()
> End With
> Transacao.Commit()
> End Sub
>
>
> Public Sub incluiitem()
> Dim conn As New SqlConnection(ConexaoSQL)
> Dim cmd As New SqlCommand()
> Dim Transacao As SqlTransaction
> Dim sql As String
> conn.Open()
> Transacao = conn.BeginTransaction()
> sql = "INSERT INTO TBITEMNOTA...
>
> With cmd
> .Connection = conn
> .CommandText = sql
> .CommandType = CommandType.Text
> .Transaction = Transacao
> .ExecuteNonQuery()
> End With
> Transacao.Commit()
> End Sub
>
> ========
>
> As transações funcionam perfeitamente, mas caso eu tenha uma nota com 50
> itens e houver algum problema no 40º, apenas este é cancelado...
>
> Como trabalhar com uma única transação para inclusões como esta? uma nota
> e
> diversos itens?
> É possível fazer isto sem trabalhar com a conexão/banco de dados na
> chamada
> dos métodos? Lembrando que na camada do formulário, não existe acesso a
> dados, apenas a chamada de tais métodos!
>
> Em uma aplicação real, em alguns casos, precisamos trabalhar com
> transações,
> mesmo trabalhando com dados em diferentes classes, como proceder nestes
> casos?
>
> Grato!

AprendizVB
07-04-2006, 01:35 PM
Correto Luciano,
A questão é como remover a transação dai, sem misturar a transação com a
chamada de incluir e incluiitem?

"Luciano Azevedo" escreveu:

> Vc tem um Begin transaction lá no seu incluir item.
> Vc inicia uma transação para cada item.
>
> Public Sub incluiitem()
> > Dim conn As New SqlConnection(ConexaoSQL)
> > Dim cmd As New SqlCommand()
> > Dim Transacao As SqlTransaction
> > Dim sql As String
> > conn.Open()
> --------> Transacao = conn.BeginTransaction()
> aqui o erro
> > sql = "INSERT INTO TBITEMNOTA
>
> [ ]´s
> Luciano Azevedo
> "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
> news:F3BE9EA1-DF18-4DEC-B09D-810AE3F4508C@microsoft.com...
> > Olá!
> >
> > Estou desenvolvendo um sistema em camadas onde o acesso a dados está
> > isolado.
> >
> > estou com uma dúvida em relação ao trabalho com transação.
> >
> > O conceito é o mesmo de uma nota fiscal e seus ítens.
> >
> > Preciso fazer algo parecido com isto:
> >
> > No formulário (apenas um exemplo simples do funcionamento):
> >
> > Dim nf as new clsNota
> >
> > 'instanciar a classe nota fiscal
> > nf.numero = numnf
> > nf.valor = valortotalnf
> > nf...
> >
> > 'chamar o método de inclusão da nota
> > nf.incluir
> >
> > for i = 1 to qtdeitens
> > nf.item = i
> > nf.iditem = id
> > nf.qt = qtde
> > nf.vlrunit = valorunitario
> > nf...
> >
> > 'chamar o método de inclusão do item da nota
> > nf.incluiitem
> >
> > next
> >
> >
> > Em clsNota teríamos algo semelhante a isto:
> >
> > Public Sub incluir()
> > Dim conn As New SqlConnection(ConexaoSQL)
> > Dim cmd As New SqlCommand()
> > Dim Transacao As SqlTransaction
> > Dim sql As String
> > conn.Open()
> > Transacao = conn.BeginTransaction()
> > sql = "INSERT INTO TBNOTA... "
> >
> > With cmd
> > .Connection = conn
> > .CommandText = sql
> > .CommandType = CommandType.Text
> > .Transaction = Transacao
> > .ExecuteNonQuery()
> > End With
> > Transacao.Commit()
> > End Sub
> >
> >
> > Public Sub incluiitem()
> > Dim conn As New SqlConnection(ConexaoSQL)
> > Dim cmd As New SqlCommand()
> > Dim Transacao As SqlTransaction
> > Dim sql As String
> > conn.Open()
> > Transacao = conn.BeginTransaction()
> > sql = "INSERT INTO TBITEMNOTA...
> >
> > With cmd
> > .Connection = conn
> > .CommandText = sql
> > .CommandType = CommandType.Text
> > .Transaction = Transacao
> > .ExecuteNonQuery()
> > End With
> > Transacao.Commit()
> > End Sub
> >
> > ========
> >
> > As transações funcionam perfeitamente, mas caso eu tenha uma nota com 50
> > itens e houver algum problema no 40º, apenas este é cancelado...
> >
> > Como trabalhar com uma única transação para inclusões como esta? uma nota
> > e
> > diversos itens?
> > É possível fazer isto sem trabalhar com a conexão/banco de dados na
> > chamada
> > dos métodos? Lembrando que na camada do formulário, não existe acesso a
> > dados, apenas a chamada de tais métodos!
> >
> > Em uma aplicação real, em alguns casos, precisamos trabalhar com
> > transações,
> > mesmo trabalhando com dados em diferentes classes, como proceder nestes
> > casos?
> >
> > Grato!
>
>
>

Luciano Azevedo
07-05-2006, 02:50 AM
Vc tem que passar de um para o outro a conexao e usar a mesma. Assim vc só
abre a transação uma vez e passa a conexao aberta para as outras classes.

[ ]´s
Luciano Azevedo

"AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
news:78ECE90B-60A3-4AF1-A060-3165730E497D@microsoft.com...
> Correto Luciano,
> A questão é como remover a transação dai, sem misturar a transação com a
> chamada de incluir e incluiitem?
>
> "Luciano Azevedo" escreveu:
>
>> Vc tem um Begin transaction lá no seu incluir item.
>> Vc inicia uma transação para cada item.
>>
>> Public Sub incluiitem()
>> > Dim conn As New SqlConnection(ConexaoSQL)
>> > Dim cmd As New SqlCommand()
>> > Dim Transacao As SqlTransaction
>> > Dim sql As String
>> > conn.Open()
>> --------> Transacao = conn.BeginTransaction()
>> aqui o erro
>> > sql = "INSERT INTO TBITEMNOTA
>>
>> [ ]´s
>> Luciano Azevedo
>> "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
>> news:F3BE9EA1-DF18-4DEC-B09D-810AE3F4508C@microsoft.com...
>> > Olá!
>> >
>> > Estou desenvolvendo um sistema em camadas onde o acesso a dados está
>> > isolado.
>> >
>> > estou com uma dúvida em relação ao trabalho com transação.
>> >
>> > O conceito é o mesmo de uma nota fiscal e seus ítens.
>> >
>> > Preciso fazer algo parecido com isto:
>> >
>> > No formulário (apenas um exemplo simples do funcionamento):
>> >
>> > Dim nf as new clsNota
>> >
>> > 'instanciar a classe nota fiscal
>> > nf.numero = numnf
>> > nf.valor = valortotalnf
>> > nf...
>> >
>> > 'chamar o método de inclusão da nota
>> > nf.incluir
>> >
>> > for i = 1 to qtdeitens
>> > nf.item = i
>> > nf.iditem = id
>> > nf.qt = qtde
>> > nf.vlrunit = valorunitario
>> > nf...
>> >
>> > 'chamar o método de inclusão do item da nota
>> > nf.incluiitem
>> >
>> > next
>> >
>> >
>> > Em clsNota teríamos algo semelhante a isto:
>> >
>> > Public Sub incluir()
>> > Dim conn As New SqlConnection(ConexaoSQL)
>> > Dim cmd As New SqlCommand()
>> > Dim Transacao As SqlTransaction
>> > Dim sql As String
>> > conn.Open()
>> > Transacao = conn.BeginTransaction()
>> > sql = "INSERT INTO TBNOTA... "
>> >
>> > With cmd
>> > .Connection = conn
>> > .CommandText = sql
>> > .CommandType = CommandType.Text
>> > .Transaction = Transacao
>> > .ExecuteNonQuery()
>> > End With
>> > Transacao.Commit()
>> > End Sub
>> >
>> >
>> > Public Sub incluiitem()
>> > Dim conn As New SqlConnection(ConexaoSQL)
>> > Dim cmd As New SqlCommand()
>> > Dim Transacao As SqlTransaction
>> > Dim sql As String
>> > conn.Open()
>> > Transacao = conn.BeginTransaction()
>> > sql = "INSERT INTO TBITEMNOTA...
>> >
>> > With cmd
>> > .Connection = conn
>> > .CommandText = sql
>> > .CommandType = CommandType.Text
>> > .Transaction = Transacao
>> > .ExecuteNonQuery()
>> > End With
>> > Transacao.Commit()
>> > End Sub
>> >
>> > ========
>> >
>> > As transações funcionam perfeitamente, mas caso eu tenha uma nota com
>> > 50
>> > itens e houver algum problema no 40º, apenas este é cancelado...
>> >
>> > Como trabalhar com uma única transação para inclusões como esta? uma
>> > nota
>> > e
>> > diversos itens?
>> > É possível fazer isto sem trabalhar com a conexão/banco de dados na
>> > chamada
>> > dos métodos? Lembrando que na camada do formulário, não existe acesso a
>> > dados, apenas a chamada de tais métodos!
>> >
>> > Em uma aplicação real, em alguns casos, precisamos trabalhar com
>> > transações,
>> > mesmo trabalhando com dados em diferentes classes, como proceder nestes
>> > casos?
>> >
>> > Grato!
>>
>>
>>

Geraldo Drieskens
07-29-2006, 04:25 PM
Crie uma conexão única. Passe como parâmetro para os métodos transacionados.

Sugestão:

Crie um método como esse:

SalvarNFItens(NotaFiscal nf, ArrayList itens)
{
Abrir conexao
try{
BegginTransaction
Executar insert NF

percorrer os itens
salvar itens

commit
catch{
conexao.RollBack();
}
finally {
conexao.close();
}


}


Espero ter ajudado.

Abraço!
"Luciano Azevedo" escreveu:

> Vc tem que passar de um para o outro a conexao e usar a mesma. Assim vc só
> abre a transação uma vez e passa a conexao aberta para as outras classes.
>
> [ ]´s
> Luciano Azevedo
>
> "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
> news:78ECE90B-60A3-4AF1-A060-3165730E497D@microsoft.com...
> > Correto Luciano,
> > A questão é como remover a transação dai, sem misturar a transação com a
> > chamada de incluir e incluiitem?
> >
> > "Luciano Azevedo" escreveu:
> >
> >> Vc tem um Begin transaction lá no seu incluir item.
> >> Vc inicia uma transação para cada item.
> >>
> >> Public Sub incluiitem()
> >> > Dim conn As New SqlConnection(ConexaoSQL)
> >> > Dim cmd As New SqlCommand()
> >> > Dim Transacao As SqlTransaction
> >> > Dim sql As String
> >> > conn.Open()
> >> --------> Transacao = conn.BeginTransaction()
> >> aqui o erro
> >> > sql = "INSERT INTO TBITEMNOTA
> >>
> >> [ ]´s
> >> Luciano Azevedo
> >> "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
> >> news:F3BE9EA1-DF18-4DEC-B09D-810AE3F4508C@microsoft.com...
> >> > Olá!
> >> >
> >> > Estou desenvolvendo um sistema em camadas onde o acesso a dados está
> >> > isolado.
> >> >
> >> > estou com uma dúvida em relação ao trabalho com transação.
> >> >
> >> > O conceito é o mesmo de uma nota fiscal e seus ítens.
> >> >
> >> > Preciso fazer algo parecido com isto:
> >> >
> >> > No formulário (apenas um exemplo simples do funcionamento):
> >> >
> >> > Dim nf as new clsNota
> >> >
> >> > 'instanciar a classe nota fiscal
> >> > nf.numero = numnf
> >> > nf.valor = valortotalnf
> >> > nf...
> >> >
> >> > 'chamar o método de inclusão da nota
> >> > nf.incluir
> >> >
> >> > for i = 1 to qtdeitens
> >> > nf.item = i
> >> > nf.iditem = id
> >> > nf.qt = qtde
> >> > nf.vlrunit = valorunitario
> >> > nf...
> >> >
> >> > 'chamar o método de inclusão do item da nota
> >> > nf.incluiitem
> >> >
> >> > next
> >> >
> >> >
> >> > Em clsNota teríamos algo semelhante a isto:
> >> >
> >> > Public Sub incluir()
> >> > Dim conn As New SqlConnection(ConexaoSQL)
> >> > Dim cmd As New SqlCommand()
> >> > Dim Transacao As SqlTransaction
> >> > Dim sql As String
> >> > conn.Open()
> >> > Transacao = conn.BeginTransaction()
> >> > sql = "INSERT INTO TBNOTA... "
> >> >
> >> > With cmd
> >> > .Connection = conn
> >> > .CommandText = sql
> >> > .CommandType = CommandType.Text
> >> > .Transaction = Transacao
> >> > .ExecuteNonQuery()
> >> > End With
> >> > Transacao.Commit()
> >> > End Sub
> >> >
> >> >
> >> > Public Sub incluiitem()
> >> > Dim conn As New SqlConnection(ConexaoSQL)
> >> > Dim cmd As New SqlCommand()
> >> > Dim Transacao As SqlTransaction
> >> > Dim sql As String
> >> > conn.Open()
> >> > Transacao = conn.BeginTransaction()
> >> > sql = "INSERT INTO TBITEMNOTA...
> >> >
> >> > With cmd
> >> > .Connection = conn
> >> > .CommandText = sql
> >> > .CommandType = CommandType.Text
> >> > .Transaction = Transacao
> >> > .ExecuteNonQuery()
> >> > End With
> >> > Transacao.Commit()
> >> > End Sub
> >> >
> >> > ========
> >> >
> >> > As transações funcionam perfeitamente, mas caso eu tenha uma nota com
> >> > 50
> >> > itens e houver algum problema no 40º, apenas este é cancelado...
> >> >
> >> > Como trabalhar com uma única transação para inclusões como esta? uma
> >> > nota
> >> > e
> >> > diversos itens?
> >> > É possível fazer isto sem trabalhar com a conexão/banco de dados na
> >> > chamada
> >> > dos métodos? Lembrando que na camada do formulário, não existe acesso a
> >> > dados, apenas a chamada de tais métodos!
> >> >
> >> > Em uma aplicação real, em alguns casos, precisamos trabalhar com
> >> > transações,
> >> > mesmo trabalhando com dados em diferentes classes, como proceder nestes
> >> > casos?
> >> >
> >> > Grato!
> >>
> >>
> >>
>
>
>

Iter Vinícius
08-02-2006, 01:48 AM
Olá...

Verifique se o pattern singleton, não te ajude... Pois bem implementado, ele
manterá somente uma instancia do objeto para vc...


Abraço, espero ter ajudado...

Iter Vinicius

"Geraldo Drieskens" escreveu:

> Crie uma conexão única. Passe como parâmetro para os métodos transacionados.
>
> Sugestão:
>
> Crie um método como esse:
>
> SalvarNFItens(NotaFiscal nf, ArrayList itens)
> {
> Abrir conexao
> try{
> BegginTransaction
> Executar insert NF
>
> percorrer os itens
> salvar itens
>
> commit
> catch{
> conexao.RollBack();
> }
> finally {
> conexao.close();
> }
>
>
> }
>
>
> Espero ter ajudado.
>
> Abraço!
> "Luciano Azevedo" escreveu:
>
> > Vc tem que passar de um para o outro a conexao e usar a mesma. Assim vc só
> > abre a transação uma vez e passa a conexao aberta para as outras classes.
> >
> > [ ]´s
> > Luciano Azevedo
> >
> > "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
> > news:78ECE90B-60A3-4AF1-A060-3165730E497D@microsoft.com...
> > > Correto Luciano,
> > > A questão é como remover a transação dai, sem misturar a transação com a
> > > chamada de incluir e incluiitem?
> > >
> > > "Luciano Azevedo" escreveu:
> > >
> > >> Vc tem um Begin transaction lá no seu incluir item.
> > >> Vc inicia uma transação para cada item.
> > >>
> > >> Public Sub incluiitem()
> > >> > Dim conn As New SqlConnection(ConexaoSQL)
> > >> > Dim cmd As New SqlCommand()
> > >> > Dim Transacao As SqlTransaction
> > >> > Dim sql As String
> > >> > conn.Open()
> > >> --------> Transacao = conn.BeginTransaction()
> > >> aqui o erro
> > >> > sql = "INSERT INTO TBITEMNOTA
> > >>
> > >> [ ]´s
> > >> Luciano Azevedo
> > >> "AprendizVB" <AprendizVB@discussions.microsoft.com> escreveu na mensagem
> > >> news:F3BE9EA1-DF18-4DEC-B09D-810AE3F4508C@microsoft.com...
> > >> > Olá!
> > >> >
> > >> > Estou desenvolvendo um sistema em camadas onde o acesso a dados está
> > >> > isolado.
> > >> >
> > >> > estou com uma dúvida em relação ao trabalho com transação.
> > >> >
> > >> > O conceito é o mesmo de uma nota fiscal e seus ítens.
> > >> >
> > >> > Preciso fazer algo parecido com isto:
> > >> >
> > >> > No formulário (apenas um exemplo simples do funcionamento):
> > >> >
> > >> > Dim nf as new clsNota
> > >> >
> > >> > 'instanciar a classe nota fiscal
> > >> > nf.numero = numnf
> > >> > nf.valor = valortotalnf
> > >> > nf...
> > >> >
> > >> > 'chamar o método de inclusão da nota
> > >> > nf.incluir
> > >> >
> > >> > for i = 1 to qtdeitens
> > >> > nf.item = i
> > >> > nf.iditem = id
> > >> > nf.qt = qtde
> > >> > nf.vlrunit = valorunitario
> > >> > nf...
> > >> >
> > >> > 'chamar o método de inclusão do item da nota
> > >> > nf.incluiitem
> > >> >
> > >> > next
> > >> >
> > >> >
> > >> > Em clsNota teríamos algo semelhante a isto:
> > >> >
> > >> > Public Sub incluir()
> > >> > Dim conn As New SqlConnection(ConexaoSQL)
> > >> > Dim cmd As New SqlCommand()
> > >> > Dim Transacao As SqlTransaction
> > >> > Dim sql As String
> > >> > conn.Open()
> > >> > Transacao = conn.BeginTransaction()
> > >> > sql = "INSERT INTO TBNOTA... "
> > >> >
> > >> > With cmd
> > >> > .Connection = conn
> > >> > .CommandText = sql
> > >> > .CommandType = CommandType.Text
> > >> > .Transaction = Transacao
> > >> > .ExecuteNonQuery()
> > >> > End With
> > >> > Transacao.Commit()
> > >> > End Sub
> > >> >
> > >> >
> > >> > Public Sub incluiitem()
> > >> > Dim conn As New SqlConnection(ConexaoSQL)
> > >> > Dim cmd As New SqlCommand()
> > >> > Dim Transacao As SqlTransaction
> > >> > Dim sql As String
> > >> > conn.Open()
> > >> > Transacao = conn.BeginTransaction()
> > >> > sql = "INSERT INTO TBITEMNOTA...
> > >> >
> > >> > With cmd
> > >> > .Connection = conn
> > >> > .CommandText = sql
> > >> > .CommandType = CommandType.Text
> > >> > .Transaction = Transacao
> > >> > .ExecuteNonQuery()
> > >> > End With
> > >> > Transacao.Commit()
> > >> > End Sub
> > >> >
> > >> > ========
> > >> >
> > >> > As transações funcionam perfeitamente, mas caso eu tenha uma nota com
> > >> > 50
> > >> > itens e houver algum problema no 40º, apenas este é cancelado...
> > >> >
> > >> > Como trabalhar com uma única transação para inclusões como esta? uma
> > >> > nota
> > >> > e
> > >> > diversos itens?
> > >> > É possível fazer isto sem trabalhar com a conexão/banco de dados na
> > >> > chamada
> > >> > dos métodos? Lembrando que na camada do formulário, não existe acesso a
> > >> > dados, apenas a chamada de tais métodos!
> > >> >
> > >> > Em uma aplicação real, em alguns casos, precisamos trabalhar com
> > >> > transações,
> > >> > mesmo trabalhando com dados em diferentes classes, como proceder nestes
> > >> > casos?
> > >> >
> > >> > Grato!
> > >>
> > >>
> > >>
> >
> >
> >