[delphi-br] transação / gatilhos
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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