[delphi-br] transação / gatilhos

2009-10-01 Por tôpico Cleiton - Yahoo
Um salve for all galera,

 

Seguinte, gostaria de saber como os colegas ai trabalham com a atualização
de estoque,

principalmente quando se trata de CHECKOUT, estou com um problema de
transação.

Estou usando gatilho para atualizar estoque, sempre que inserir uma venda na
tabela
na tabela principal o gatilho dispara para os itens dessa tabela e atualiza
o estoque dos
produtos.

 

Só que ultimamente ele esta dando deadlock por causa disso.

 

Minha transação está,

read_committed

rec_version

nowait

 

o tratamento para a gravação esta correto.

 

Uso Delphi 7 firebird 2.0

 

Da um help ai valeu? Abraços.

 



[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] Transação com clientdataset

2008-06-06 Por tôpico Yahoo
Pessoal, é possível fazer um controle de transação como no modelo abaixo?

try
   StartTransaction;

   ClientDataset.CommandText := 'Insert into...';
   ClientDataset.Execute;

   ClientDataset.CommandText := 'Update Tabela...':
   ClientDataset.Execute;

   Commit;

except
   RollBack;
end;


   

[As partes desta mensagem que não continham texto foram removidas]



RE: [delphi-br] Transação com clientdataset

2008-06-06 Por tôpico Rubem Nascimento da Rocha

Se for pra fazer vários INSERT/UPDATE/DELETE dentro de um contexto 
transacional, pode fazer uso do seu componente de consulta da camada de acesso 
que vc usa (ADO-TADOQuery, dbExpress-TSQLQUery, Zeos-TZQuery, BDE-TQuery, etc.).

Não tem necessidade de usar ClientDataSet assim dessa forma. Na minha humilde 
opinião, nem deveria existir esse método Execute() em um ClientDataSet. Mas, ...

Sds.



To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Fri, 6 Jun 2008 03:26:35 -0300
Subject: [delphi-br] Transação com clientdataset


Pessoal, é possível fazer um controle de transação como no modelo abaixo?

try
StartTransaction;

ClientDataset.CommandText := 'Insert into...';
ClientDataset.Execute;

ClientDataset.CommandText := 'Update Tabela...':
ClientDataset.Execute;

Commit;

except
RollBack;
end;


_
Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
Messenger! É GRÁTIS!
http://www.msn.com.br/emoticonpack

Re: [delphi-br] Transação com clientdataset

2008-06-06 Por tôpico Alisson
O problema é que a aplicação é em 3 camadas e não dá pra fazer isso no 
componente dataset que está na aplicação servidora. Quando eu dou um update 
em registro em uma tabela, deve ser criado um ou mais registro em uma outra 
tabela. Não achei nenhum jeito de deixar essa rotina por conta do 
DatasetProvider. O que faço então?


- Original Message - 
From: Rubem Nascimento da Rocha [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Friday, June 06, 2008 10:06 AM
Subject: RE: [delphi-br] Transação com clientdataset



Se for pra fazer vários INSERT/UPDATE/DELETE dentro de um contexto 
transacional, pode fazer uso do seu componente de consulta da camada de 
acesso que vc usa (ADO-TADOQuery, dbExpress-TSQLQUery, Zeos-TZQuery, 
BDE-TQuery, etc.).

Não tem necessidade de usar ClientDataSet assim dessa forma. Na minha 
humilde opinião, nem deveria existir esse método Execute() em um 
ClientDataSet. Mas, ...

Sds.



To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Fri, 6 Jun 2008 03:26:35 -0300
Subject: [delphi-br] Transação com clientdataset


Pessoal, é possível fazer um controle de transação como no modelo abaixo?

try
StartTransaction;

ClientDataset.CommandText := 'Insert into...';
ClientDataset.Execute;

ClientDataset.CommandText := 'Update Tabela...':
ClientDataset.Execute;

Commit;

except
RollBack;
end;


_
Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
Messenger! É GRÁTIS!
http://www.msn.com.br/emoticonpack

__ Informação do NOD32 IMON 3163 (20080606) __

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br


__
Faça ligações para outros computadores com o novo Yahoo! Messenger 
http://br.beta.messenger.yahoo.com/ 


RE: [delphi-br] Transação com clientdataset

2008-06-06 Por tôpico Rubem Nascimento da Rocha

Pq ñ usar trigger na tabela em questão para que, a partir da trigger, sejam 
criados os outros registros que vc precisa? Ou então usa o evento 
BeforeUpdateRecord do TDataSetProvider pra fazer a inclusão dos registros nas 
outras tabelas. Particularmente, a primeira opção é melhor!

Em tempo: na lista de discussão NDDV (http://br.groups.yahoo.com/group/nddv - 
N-tier Delphi DeVelopers) rolou muita coisa boa a respeito desse evento 
BeforeUpdateRecord. Sugiro tb que vc se inscreva nessa lista e verifica as 
mensagens anteriores de ontem pra hoje.

Boa sorte.
Sds.



To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Fri, 6 Jun 2008 12:05:55 -0300
Subject: Re: [delphi-br] Transação com clientdataset

O problema é que a aplicação é em 3 camadas e não dá pra fazer isso no
componente dataset que está na aplicação servidora. Quando eu dou um update
em registro em uma tabela, deve ser criado um ou mais registro em uma outra
tabela. Não achei nenhum jeito de deixar essa rotina por conta do
DatasetProvider. O que faço então?

- Original Message -
From: Rubem Nascimento da Rocha [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Friday, June 06, 2008 10:06 AM
Subject: RE: [delphi-br] Transação com clientdataset

Se for pra fazer vários INSERT/UPDATE/DELETE dentro de um contexto
transacional, pode fazer uso do seu componente de consulta da camada de
acesso que vc usa (ADO-TADOQuery, dbExpress-TSQLQUery, Zeos-TZQuery,
BDE-TQuery, etc.).

Não tem necessidade de usar ClientDataSet assim dessa forma. Na minha
humilde opinião, nem deveria existir esse método Execute() em um
ClientDataSet. Mas, ...

Sds.



To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Fri, 6 Jun 2008 03:26:35 -0300
Subject: [delphi-br] Transação com clientdataset

Pessoal, é possível fazer um controle de transação como no modelo abaixo?

try
StartTransaction;

ClientDataset.CommandText := 'Insert into...';
ClientDataset.Execute;

ClientDataset.CommandText := 'Update Tabela...':
ClientDataset.Execute;

Commit;

except
RollBack;
end;


_
Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!
http://www.amigosdomessenger.com.br/

Re: [delphi-br] Transação com clientdataset

2008-06-06 Por tôpico Alisson
Como usar trigger ou o evento BeforeUpdateRecord do TDataSetProvider, sendo 
que eu preciso gravar dados que serão informados pelo usuário? 






___ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/


[delphi-br] Transação DBX x FireBird

2008-04-29 Por tôpico Luciano Calenzani Simões
Pessoal, sou novato em FireBird 2.x com DBX. Até então sempre usei BDE com 
TQuery e fazia todos os SQL manuais.
Mas agora estou em uma nova aplicação que é DBX com FireBird 2.x.
Enfrento o seguinte problema. Pensem em duas tablelas: PESSOA e CLIENTE. Todo 
cliente deve ser primeiro uma PESSOA e existe uma foreingkey para isso no 
FireBird.
Bom, na época do BDE, eu iniciaria a transação, incluiria a pessoa, pegaria o 
número da pessoa e incluiria o cliente. Mas agora no DBX, quanto inicio a 
transação e mando a classe de pessoa incluir uma PESSOA (dentro de uma 
transação) a nova pessoa não é efetivamente registrada no banco enquanto não há 
o commit, assim quando eu executo um ApplyUpdate para salvar o CLIENTE dá erro 
de violação de foreingkey, claro, a pessoa não existe no banco ainda.

Como fazer com que os registro já estejam disponíveis para a aplicação mesmo 
antes do Commit? Ou existe outra forma de contornar isso?

Nota: Não estou usando o driver DBX do Interbase e sim o UIB FireBird15.

Obrigado.
 
Luciano Calenzani Simões






  Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]



RES: [delphi-br] Transação DBX x FireBird

2008-04-29 Por tôpico Davi Eduardo Borges Wall
O registro da pessoa está na memória ainda.

Vc deve dar um applyupdate na tabela PESSOA e depois então o applyupdate na 
tabela CLIENTE. Então por fim, Commit;

 

Entenda que quando você chama o método post, você não está mais gravando na 
tabela física, mas sim em uma memória temporária que será então despejada 
nas tabelas físicas com o comando applyupdates.

 

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Luciano 
Calenzani Simões
Enviada em: terça-feira, 29 de abril de 2008 14:33
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Transação DBX x FireBird

 

Pessoal, sou novato em FireBird 2.x com DBX. Até então sempre usei BDE com 
TQuery e fazia todos os SQL manuais.
Mas agora estou em uma nova aplicação que é DBX com FireBird 2.x.
Enfrento o seguinte problema. Pensem em duas tablelas: PESSOA e CLIENTE. Todo 
cliente deve ser primeiro uma PESSOA e existe uma foreingkey para isso no 
FireBird.
Bom, na época do BDE, eu iniciaria a transação, incluiria a pessoa, pegaria o 
número da pessoa e incluiria o cliente. Mas agora no DBX, quanto inicio a 
transação e mando a classe de pessoa incluir uma PESSOA (dentro de uma 
transação) a nova pessoa não é efetivamente registrada no banco enquanto não há 
o commit, assim quando eu executo um ApplyUpdate para salvar o CLIENTE dá erro 
de violação de foreingkey, claro, a pessoa não existe no banco ainda.

Como fazer com que os registro já estejam disponíveis para a aplicação mesmo 
antes do Commit? Ou existe outra forma de contornar isso?

Nota: Não estou usando o driver DBX do Interbase e sim o UIB FireBird15.

Obrigado.

Luciano Calenzani Simões

Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]



Res: RES: [delphi-br] Transação DBX x FireBird

2008-04-29 Por tôpico Luciano Calenzani Simões
O Insert da pessoa não é feito via clientdataset, é uma classe TPessoa que faz 
um insert com um dataset independente, mas dentro da transação.
Mais ou menos assim:

** sem sintaxe **

StartTransction;
try
  codpessoa := tpessoa.inserir('joao');
  cdsClienteCD_CLIENTE := codpessoa;
  cdsCliente.post;
  cdsCliente.applyupdate(0);
  Commit
except
  rollback
end

Quantodou o clientdataset.applyupdate a pessoa ainda não está 
efetivamentegravada, creio que por causa do readcommited, então quando dá 
erroinformando que a foreingkey não é atendida.


 
Luciano Calenzani Simões



- Mensagem original 
De: Davi Eduardo Borges Wall [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Terça-feira, 29 de Abril de 2008 15:21:17
Assunto: RES: [delphi-br] Transação DBX x FireBird

O registro da pessoa está na memória ainda.

Vc deve dar um applyupdate na tabela PESSOA e depois então o applyupdate na 
tabela CLIENTE. Então por fim, Commit;

Entenda que quando você chama o método post, você não está mais gravando na 
tabela física, mas sim em uma memória temporária que será então despejada 
nas tabelas físicas com o comando applyupdates.

De: [EMAIL PROTECTED] os.com.br [mailto:[EMAIL PROTECTED] os.com.br] Em nome de 
Luciano Calenzani Simões
Enviada em: terça-feira, 29 de abril de 2008 14:33
Para: [EMAIL PROTECTED] os.com.br
Assunto: [delphi-br] Transação DBX x FireBird

Pessoal, sou novato em FireBird 2.x com DBX. Até então sempre usei BDE com 
TQuery e fazia todos os SQL manuais.
Mas agora estou em uma nova aplicação que é DBX com FireBird 2.x.
Enfrento o seguinte problema. Pensem em duas tablelas: PESSOA e CLIENTE. Todo 
cliente deve ser primeiro uma PESSOA e existe uma foreingkey para isso no 
FireBird.
Bom, na época do BDE, eu iniciaria a transação, incluiria a pessoa, pegaria o 
número da pessoa e incluiria o cliente. Mas agora no DBX, quanto inicio a 
transação e mando a classe de pessoa incluir uma PESSOA (dentro de uma 
transação) a nova pessoa não é efetivamente registrada no banco enquanto não há 
o commit, assim quando eu executo um ApplyUpdate para salvar o CLIENTE dá erro 
de violação de foreingkey, claro, a pessoa não existe no banco ainda.

Como fazer com que os registro já estejam disponíveis para a aplicação mesmo 
antes do Commit? Ou existe outra forma de contornar isso?

Nota: Não estou usando o driver DBX do Interbase e sim o UIB FireBird15.

Obrigado.

Luciano Calenzani Simões

Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
http://br.mail. yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]




!--

#ygrp-mkp{
border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
#ygrp-mkp hr{
border:1px solid #d8d8d8;}
#ygrp-mkp #hd{
color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
#ygrp-mkp #ads{
margin-bottom:10px;}
#ygrp-mkp .ad{
padding:0 0;}
#ygrp-mkp .ad a{
color:#ff;text-decoration:none;}
--

!--

#ygrp-sponsor #ygrp-lc{
font-family:Arial;}
#ygrp-sponsor #ygrp-lc #hd{
margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
#ygrp-sponsor #ygrp-lc .ad{
margin-bottom:10px;padding:0 0;}
--

!--

#ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, 
sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;}
#ygrp-vitnav{
padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
#ygrp-vitnav a{
padding:0 1px;}
#ygrp-actbar{
clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
#ygrp-actbar .left{
float:left;white-space:nowrap;}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;font-size:77%;padding:15px 0;}
#ygrp-ft{
font-family:verdana;font-size:77%;border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;}

#ygrp-reco {
margin-bottom:20px;padding:0px;}
#ygrp-reco #reco-head {
font-weight:bold;color:#ff7900;}

#reco-grpname{
font-weight:bold;margin-top:10px;}
#reco-category{
font-size:77%;}
#reco-desc{
font-size:77%;}

#ygrp-vital{
background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
#ygrp-vital #vithd{
font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
#ygrp-vital ul{
padding:0;margin:2px 0;}
#ygrp-vital ul li{
list-style-type:none;clear:both;border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
#ygrp-vital ul li .cat{
font-weight:bold;}
#ygrp-vital a{
text-decoration:none;}

#ygrp-vital a:hover{
text-decoration:underline;}

#ygrp-sponsor #hd{
color

[delphi-br] Transação IBX x DBX

2006-08-16 Por tôpico fabio_giro
Usando D7 + FB 1.5.2 . Sei que quando se faz algum acesso ao banco é
aberta uma transação. Usando query+datasetprovider+clientdataset. Se
uso IBX, faço o seguinte:
  ClientDataSet2.close;
  ClientDataSet2.Open;
  if IBQuery1.Transaction.InTransaction then
   begin
 showmessage('aberta');   -- sempre passa aqui
 IBQuery1.Transaction.Commit;
   end
  else
 showmessage('fechada');

Mas se usar DBX, como saber se a transação está aberta ou fechada?
  ClientDataSet1.close;
  ClientDataSet1.Open;
  if SQLQuery1. ???
E se usar SQLQuery1.ExecSql? 

Obrigado.









-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 





Re: [delphi-br] Transação IBX x DBX

2006-08-16 Por tôpico Logos
tenta assim:
if sqlconnection.InTransaction  then showmessage('trasacao aberta');
  - Original Message - 
  From: fabio_giro 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, August 16, 2006 10:02 AM
  Subject: [delphi-br] Transação IBX x DBX


  Usando D7 + FB 1.5.2 . Sei que quando se faz algum acesso ao banco é
  aberta uma transação. Usando query+datasetprovider+clientdataset. Se
  uso IBX, faço o seguinte:
ClientDataSet2.close;
ClientDataSet2.Open;
if IBQuery1.Transaction.InTransaction then
 begin
   showmessage('aberta');   -- sempre passa aqui
   IBQuery1.Transaction.Commit;
 end
else
   showmessage('fechada');

  Mas se usar DBX, como saber se a transação está aberta ou fechada?
ClientDataSet1.close;
ClientDataSet1.Open;
if SQLQuery1. ???
  E se usar SQLQuery1.ExecSql? 

  Obrigado.







   


--


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.1.405 / Virus Database: 268.10.10/419 - Release Date: 15/08/2006


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 





Re: [delphi-br] Transação IBX x DBX

2006-08-16 Por tôpico JJW Informática Ltda . - Roberto
Com DBX vc não controla a transação, quem faz esse controle é o ClientDataSet. 

No caso de um SQLDataSet.ExecSQL, o mesmo starteia e comita a transação ou da o 
rollback caso um erro ocorra.

Para utilizar master-detail com DBX, é necessário utilizar ninhagem de 
datasets, procure no Borland Developer Network sobre NestedDatasets

Att.
  - Original Message - 
  From: fabio_giro 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, August 16, 2006 10:02 AM
  Subject: [delphi-br] Transação IBX x DBX


  Usando D7 + FB 1.5.2 . Sei que quando se faz algum acesso ao banco é
  aberta uma transação. Usando query+datasetprovider+clientdataset. Se
  uso IBX, faço o seguinte:
ClientDataSet2.close;
ClientDataSet2.Open;
if IBQuery1.Transaction.InTransaction then
 begin
   showmessage('aberta');   -- sempre passa aqui
   IBQuery1.Transaction.Commit;
 end
else
   showmessage('fechada');

  Mas se usar DBX, como saber se a transação está aberta ou fechada?
ClientDataSet1.close;
ClientDataSet1.Open;
if SQLQuery1. ???
  E se usar SQLQuery1.ExecSql? 

  Obrigado.







   

[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




[delphi-br] Transação com ADO

2005-12-13 Por tôpico Eduardo Suruagy
Tenho uma aplicação (SQL Server + ADO) e estou querendo abrir uma transação,
executar um insert por exemplo e dar o commit caso ocorra alum erro retornar
com o rollback mas não sei como fazer. Tentei fazer desse tipo

with ADOQryExecutar do
begin
  Close;
  SQL.Text := String(S);
  Prepared := True;

 try
if not ADOConnection.InTransaction then
  ADOConnection.BeginTrans;

ADOQryExecutar.ExecSQL;
ADOConnection.IsolationLevel := ilReadCommitted;
ADOConnection.CommitTrans;
 except
On e:Exception do
begin
  ADOConnection.RollbackTrans;
end;
 end;


mas ocorre um erro, gostaria de um socorro!!


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




RE: [delphi-br] Transação com ADO

2005-12-13 Por tôpico Rubem Nascimento da Rocha

Defina o nível de isolamento da transação SEMPRE ANTES de iniciá-la. Ou 
seja, ajuste a propriedade IsolationLevel do seu ADOConnection antes de 
chamar o método BeginTrans(). Veja se só com isso vc consegue resolver seu 
problema.

Sds.

From: Eduardo Suruagy [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: [delphi-br] Transação com ADO
Date: Tue, 13 Dec 2005 13:10:41 -0300

Tenho uma aplicação (SQL Server + ADO) e estou querendo abrir uma 
transação,
executar um insert por exemplo e dar o commit caso ocorra alum erro 
retornar
com o rollback mas não sei como fazer. Tentei fazer desse tipo

with ADOQryExecutar do
begin
   Close;
   SQL.Text := String(S);
   Prepared := True;

  try
 if not ADOConnection.InTransaction then
   ADOConnection.BeginTrans;

 ADOQryExecutar.ExecSQL;
 ADOConnection.IsolationLevel := ilReadCommitted;
 ADOConnection.CommitTrans;
  except
 On e:Exception do
 begin
   ADOConnection.RollbackTrans;
 end;
  end;


mas ocorre um erro, gostaria de um socorro!!


[As partes desta mensagem que não continham texto foram removidas]


_
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




[delphi-br] Transação foi Excedida

2005-08-29 Por tôpico Ailton Branco
eu uso o dbexpress que nao me dava erro em momento algum mas hoje me deparei 
com este erro e nao acho onde estou fazendo a besteira

   with Conexao do
   begin
  RANDOMIZE;
  if Not InTransaction then
  begin
 TD.TransactionID  := Random(3) + 123456;// Número 
aleatório que define a transação
 TD.GlobalID   := 0;
 TD.IsolationLevel := xilREADCOMMITTED;  // Setado para efetuar 
travamento ao registro em uso
 StartTransaction(TD);
  end;
   end;  

Quando ele chega neste ponto StartTransaction(TD); dá que a seguinte mens.

Não é possivel criar uma nova transação pois a capacidade foi excedida

porem nao abro a transacao em momento alguem alem daqui, mesmo que eu nao use 
esta funcao e uso o applyupdate(-1) tb da o erro


alguem sabe o que esta acontecendo???

 

[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 





Re: [delphi-br] Transação foi Excedida

2005-08-29 Por tôpico Ailton Branco
descobri um jeito tá funcionando por isso estou compartilhando com a galera, e 
tb se alguem souber de outro jeito, ou se este jeito que dei tem contra 
indicação gostaria de saber...

mas por hora esta funcionando legal

Procedure  pStartTransction(Conexao:TSQLConnection);
Begin
   with Conexao do
   begin
  Conexao.CloseDataSets;  {Acrescentei esta linha antes de iniciar a 
transação}
  RANDOMIZE;
  if Not InTransaction then
  begin
 TD.TransactionID  := Random(3) + 123456;// Número 
aleatório que define a transação
 TD.GlobalID   := 0;
 TD.IsolationLevel := xilREADCOMMITTED;  // Setado para efetuar 
travamento ao registro em uso
 StartTransaction(TD);
  end;
   end;
 end;

  - Original Message - 
  From: Ailton Branco 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Monday, August 29, 2005 11:04 AM
  Subject: [delphi-br] Transação foi Excedida


  eu uso o dbexpress que nao me dava erro em momento algum mas hoje me deparei 
com este erro e nao acho onde estou fazendo a besteira

 with Conexao do
 begin
RANDOMIZE;
if Not InTransaction then
begin
   TD.TransactionID  := Random(3) + 123456;// Número 
aleatório que define a transação
   TD.GlobalID   := 0;
   TD.IsolationLevel := xilREADCOMMITTED;  // Setado para efetuar 
travamento ao registro em uso
   StartTransaction(TD);
end;
 end;  

  Quando ele chega neste ponto StartTransaction(TD); dá que a seguinte mens.

  Não é possivel criar uma nova transação pois a capacidade foi excedida

  porem nao abro a transacao em momento alguem alem daqui, mesmo que eu nao use 
esta funcao e uso o applyupdate(-1) tb da o erro


  alguem sabe o que esta acontecendo???



  [As partes desta mensagem que não continham texto foram removidas]





  -- 
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por: 
  


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




[delphi-br] Transação BD Firebird (Zeus)

2005-08-19 Por tôpico Fernando Mangussi
Olá,

Como ter 2 transações simultâneas na mesma conexão Zeus.

Com os componenetes IB é bem fácil é só colocar 2 componentes IBTransaction. 


Como fazer no Zeus? O Zeus aceita sessões?

att.
Fernando Mangussi


[As partes desta mensagem que não continham texto foram removidas]





-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




[delphi-br] Transação

2005-01-28 Por tôpico Wenceslau Miranda

   Salve amigos do grupo,
 
   Mais uma vez venho tentar aprender um pouco com vocês.
   Estou usando Depressa com Firebird ( SQLConection  SQLDataset  
DataSetProvider  ClientDataset).
   Já procurei algumas informações sobre o controle transacional e pude ver que 
ele será muito útil no sisteminha que estou fazendo para a empresa. Em uma 
determinada parte precisarei gravar Dados de um cliente que serão disposto em 
tabelas da seguinte forma: Clientes, Base_Instalada, Equipamentos. 1 Cliente 
tem 1 Base-Instalada e esta tem N equipamentos. Preciso fazer um controle 
transacional para que ao gravar os dados não se perca nada e se ocorrer erro 
aconteça um rollback.  Como faço para fazer essa gravação sendo que tenho que 
gravar em minha tabela Base_Instalada o Código da base, o Código do cliente, e 
os diversos equipamentos. Sei que devo abrir uma transação antes e fechá-la 
depois, mas como fazer? Como eu devo proceder depois da transação aberta? Dou 
uma applyupdates na tabela de base instalada e ela gravará todos os 
equipamentos juntamente com o cliente? Alguma alma caridoso poderia me instruir 
ou me envia um exemplo de como isso é feito? Sei que para vocês isso é fácil,
 mas sou iniciante e pra mim está um pouco difícil fazer.




-
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador do Yahoo! 
agora.

[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html