[delphi-br] Commit Automático no Paradox
Boa tarde, Como fazer commit automático com tabelas paradox para que os dados sejam salvos automaticamente ao serem transferidos para a tbl? Grato
Re: [delphi-br] Commit Automático no Paradox
Se não me engano é com o comando DbiSaveChanges(NomeDoObjetoTTable.Handle). Coloca ele no evento afterPost das tabelas. [] Andrei 2008/12/9 marcio [EMAIL PROTECTED] Boa tarde, Como fazer commit automático com tabelas paradox para que os dados sejam salvos automaticamente ao serem transferidos para a tbl? Grato [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Satoy, você recebeu o site com a vídeo-aula? Satoy Matsuoka [EMAIL PROTECTED] escreveu: Obrigado Fábio, Mas quando utilizo uma tabela ??? Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Grato Abraços []'s Satoy Em 30/08/07, fabio giro [EMAIL PROTECTED] escreveu: Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring := trim(edtCodEmp.text); Params.ByName('pdescr').asstring := trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] satoym%40gmail.com escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]delphi-br%40yahoogrupos.com.brFromdelphi-br%40yahoog rupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato []'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
vixi nada haver com a resposta... foi mal desculpe - Original Message - From: Hudson To: delphi-br@yahoogrupos.com.br Sent: Friday, August 31, 2007 9:51 AM Subject: Re: [delphi-br] Commit automático no evento onclik do dbnavigator... if button = nbinsert then begin aqui vc coloca o codigo... end; inserir registro = nbinsert salvar registro = nbpost ... espero ter te ajudado! Atenciosamente Hudson Dias www.alcancedigital.com.br MSN: [EMAIL PROTECTED] Skype: hudson_bh Tele: (31)3434-6304 - Original Message - From: Satoy Matsuoka To: delphi-br@yahoogrupos.com.br Sent: Friday, August 31, 2007 7:43 AM Subject: Re: [delphi-br] Commit automático Obrigado Fábio, Mas quando utilizo uma tabela ??? Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Grato Abraços []'s Satoy Em 30/08/07, fabio giro [EMAIL PROTECTED] escreveu: Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring := trim(edtCodEmp.text); Params.ByName('pdescr').asstring := trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] satoym%40gmail.com escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]delphi-br%40yahoogrupos.com.brFromdelphi-br%40yahoog rupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato []'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Obrigado Fábio, Mas quando utilizo uma tabela ??? Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Grato Abraços []'s Satoy Em 30/08/07, fabio giro [EMAIL PROTECTED] escreveu: Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring := trim(edtCodEmp.text); Params.ByName('pdescr').asstring := trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] satoym%40gmail.com escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]delphi-br%40yahoogrupos.com.brFromdelphi-br%40yahoog rupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato []'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Voce ta usando as coisas sem saber o porque?? dai fica meio dificil. Leia documentacao na net, tem um monte de coisa... http://zeos.firmos.at/kb.php?mode=articlek=6 From: Satoy Matsuoka [EMAIL PROTECTED] Reply-To: delphi-br@yahoogrupos.com.br To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Commit automático Date: Fri, 31 Aug 2007 07:43:48 -0300 Obrigado Fábio, Mas quando utilizo uma tabela ??? Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Grato Abraços []'s Satoy Em 30/08/07, fabio giro [EMAIL PROTECTED] escreveu: Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring := trim(edtCodEmp.text); Params.ByName('pdescr').asstring := trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] satoym%40gmail.com escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]delphi-br%40yahoogrupos.com.brFromdelphi-br%40yahoog rupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato []'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] _ Verificador de Segurança do Windows Live OneCare: combata já vírus e outras ameaças! http://onecare.live.com/site/pt-br/default.htm
RES: RES: [delphi-br] Commit automático
João, Até onde eu sei, não há necessidade de commit para comandos DDL em qualquer banco de dados. Acabei de fazer um teste com firebird (por que vc me deixou encucado) e a regra é a mesma, ou seja, criei um campo via SQL e não precisei dar commit e o campo está lá. []s De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao Morais Enviada em: quinta-feira, 30 de agosto de 2007 17:41 Para: delphi-br@yahoogrupos.com.br Assunto: Re: RES: [delphi-br] Commit automático Davi Eduardo Borges Wall wrote: Para DDL não há transação. Depende do banco. Oracle dá um commit a cada ddl, Firebird não. -- Joao Morais Oracle por exemplo, o default para DML é ter que usar o COMMIT. Se vc abrir um SQLPlus por exemplo e dar um delete em uma tabela sem dar commit, sair e entrar novamente os dados permanecem. De: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br [mailto:delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br ] Em nome de Rubem Nascimento da Rocha Enviada em: quinta-feira, 30 de agosto de 2007 16:03 Para: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Assunto: RE: [delphi-br] Commit automático Prioridade: Alta Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] mailto:delphi-br%40yahoogrupos.com.brFrom mailto:delphi-br%40yahoogrupos.com.brFrom : [EMAIL PROTECTED] mailto:satoym%40gmail.comDate mailto:satoym%40gmail.comDate : Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
no evento onclik do dbnavigator... if button = nbinsert then begin aqui vc coloca o codigo... end; inserir registro = nbinsert salvar registro = nbpost ... espero ter te ajudado! Atenciosamente Hudson Dias www.alcancedigital.com.br MSN: [EMAIL PROTECTED] Skype: hudson_bh Tele: (31)3434-6304 - Original Message - From: Satoy Matsuoka To: delphi-br@yahoogrupos.com.br Sent: Friday, August 31, 2007 7:43 AM Subject: Re: [delphi-br] Commit automático Obrigado Fábio, Mas quando utilizo uma tabela ??? Na verdde uso Tquery pq as próprias pessoas da lista me disseram que não poderia utilizar o Ttable. Mas uso o DBgrid ou DBEdit e DBnavigator ... Onde vou dar o commit E como ??? Grato Abraços []'s Satoy Em 30/08/07, fabio giro [EMAIL PROTECTED] escreveu: Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring := trim(edtCodEmp.text); Params.ByName('pdescr').asstring := trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] satoym%40gmail.com escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED]djpardalrocha%40hotmail.com escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]delphi-br%40yahoogrupos.com.brFromdelphi-br%40yahoog rupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato []'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: RES: RES: [delphi-br] Commit automático
Davi Eduardo Borges Wall wrote: Até onde eu sei, não há necessidade de commit para comandos DDL em qualquer banco de dados. Acabei de fazer um teste com firebird (por que vc me deixou encucado) e a regra é a mesma, ou seja, criei um campo via SQL e não precisei dar commit e o campo está lá. Se você executa o script pelo isql, DDLs serão commitadas na hora porque o AutoCommit DDL é True por padrão. Digite set auto off; e teste novamente. -- Joao Morais
Re: [delphi-br] Commit automático
Satoy Matsuoka wrote: Olá João, Estou usando os componentes errados ? Como poderia fazer então ?? Estou utilizando o D7 + IBX + FB 2 + DBEdit + DBNavigator ... Quais os componentes que deveria utilizar Você está usando os componentes certos, mas o jeito que estes componentes trabalham quando estão juntos é que _podem_ vir a te causar problemas. O maior deles é o tempo em que a transação permanece aberta. Não tem como falar em certo e errado porque isto são questões pessoais. Vou falar as abordagens que eu vi por aí afora, os prós e contras de cada uma, e você pergunta aonde tiver dúvida para então montar sua própria opção. 1. Uma solução rápida é o uso do cached updates do IBX. Com ele você altera os dados em memória e pode conectar ao banco só na hora de aplicar o insert ou update. O maior problema dele é que ele não funciona com um nível de mestre detalhe maior do que 1 (ex. Pedido-PedidoItem-PedidoItemCusto), sem falar que é um recurso chato pácas de usar (opinião pessoal). 2. Você tem também a opção de tirar o DBEdit Cia. da jogada e trabalhar direto com componentes simples (Edit Cia.) então apenas quando o usuário confirma os dados é que você monta os inserts ou updates de todos os níveis de mestre-detalhe, abre a transação, manda tudo para o banco e fecha a transação. Isto dá um trabalho infernal no começo, mas a partir do momento em que você começa a reaproveitar código, este trabalho começa a ficar menor. Se você tiver jeito para a coisa, poderá montar uma estrutura que facilite novas implementações e as manutenções. Se não tiver muito jeito, isso pode te dar muito trabalho sempre que tiver que mexer na estrutura. O lado bom é que você tem controle 100% de tudo o que está acontecendo, e como você faz a coisa do seu jeito, você consegue resolver problemas 'de outro mundo' com mais facilidade. 3. Você tem ainda a opção de usar ClientDataset, caso a sua versão de Delphi tenha este componente (acho que todos os D7 tem, correto?). Com ele você terá transações curtas com tantos níveis de mestre-detalhe quantos precisar. O problema é que, se com a implementação tradicional você já tem que configurar um monte de componente, com ClientDataset esse trabalho é multiplicado por 2 ou 3. Para usar cds existe também uma pequena curva de aprendizado. 4. Por fim, você pode usar orientação a objetos no acesso e na apresentação dos dados. Esta é a solução que 'salvou o meu emprego' e que eu utilizo até hoje. O problema é que esta técnica tem uma curva de aprendizado muito longa e você tem que estar com disposição, força de vontade e paciência para fazer uso dela. E lógico, acreditar que é uma boa técnica também ajuda. Uma vez conhecendo a técnica, você ganha muito em produtividade e risca controle transacional e montagem de Query da sua lista de tarefas. -- Joao Morais Em 30/08/07, *Joao Morais* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] escreveu: Satoy Matsuoka wrote: Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Você está fazendo certo, porém o componente que você usa não foi desenhado para trabalhar desta forma. Para este caso específico, você terá que abrir uma transação, executar suas dml e então enviar um commit para gravar caso não tenha ocorrido erro, ou enviar rollback para cancelar caso tenha ocorrido algum erro. Para futuro, pense na hipótese de usar alguma coisa para fazer cache dos dados. Que seja client dataset, que seja um framework de persistência, que seja usar edit ao invés de dbedit, mas evite usar componentes que não façam cache (IBX) junto com componentes dbware, porque isso dá um bocado de dor de cabeça. -- Joao Morais
RES: RES: RES: [delphi-br] Commit automático
Eu não utilizei ISql, fiz pela aplicação mesmo. Utilzando SQLCONNECTION. De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao Morais Enviada em: sexta-feira, 31 de agosto de 2007 10:02 Para: delphi-br@yahoogrupos.com.br Assunto: Re: RES: RES: [delphi-br] Commit automático Davi Eduardo Borges Wall wrote: Até onde eu sei, não há necessidade de commit para comandos DDL em qualquer banco de dados. Acabei de fazer um teste com firebird (por que vc me deixou encucado) e a regra é a mesma, ou seja, criei um campo via SQL e não precisei dar commit e o campo está lá. Se você executa o script pelo isql, DDLs serão commitadas na hora porque o AutoCommit DDL é True por padrão. Digite set auto off; e teste novamente. -- Joao Morais [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Commit automático
Bom dia pessoal, Estou usando o D7 com Firebird e IBX. Queria saber se existe alguma forma de configurar o Delphi para fazer o commit automático. Ou seja qq insert já faz o commit. Seja em um execsql, ou usando um DBNagivator ... Sem ter que ficar dando o Commit explicito. Grato []'s [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] Commit automático
Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] _ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED] escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] delphi-br%40yahoogrupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Quando trabalhava com IBX fazia assim: with DM.qryManut do begin close; sql.clear; if btIncAlt.caption = 'Incluir' then begin sql.add('INSERT INTO EMPRESA (CODEMP, DESCRICAO) sql.add(' VALUES (:pcodemp, :pdescr); end else if btIncAlt.caption = 'Alterar' then begin sql.add('UPDATE EMPRESA'); sql.add(' SET DESCRICAO = :pdescr'); sql.add(' WHERE CODEMP = :pcodemp'); end; if not Transaction.InTransaction then Transaction.StartTransaction; prepare; Params.ByName('pcodemp').asstring:= trim(edtCodEmp.text); Params.ByName('pdescr').asstring:= trim(edtDescr.text); ExecQuery; try Transaction.Commit; except Transaction.Rollback; end; end; Mais uma coisa, sempre que você acessar o banco (select, insert, update, delete), tem que dar commit; Espero ter ajudado. Satoy Matsuoka [EMAIL PROTECTED] escreveu: Olá Rubem, Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Grato []'s Satoy Em 30/08/07, Rubem Nascimento da Rocha [EMAIL PROTECTED] escreveu: Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] delphi-br%40yahoogrupos.com.brFrom: [EMAIL PROTECTED] satoym%40gmail.comDate: Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Flickr agora em português. Você clica, todo mundo vê. Saiba mais. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Commit automático
Satoy Matsuoka wrote: Mas não é o que ocorre com minha aplicação. Ex. se estou na tela simples (Cód. descrição). Depois que faço a atualização, (aperto o botão de insert do DBNavigator), e sem sair da tela, faço a query por fora do sistema, ela não me responde com as alterações feitas. Somente depois que saido, ou dou um commit explícito, é que enchergo as alterações. Então estou fazendo algo de errado na minha estrutura ?? Você está fazendo certo, porém o componente que você usa não foi desenhado para trabalhar desta forma. Para este caso específico, você terá que abrir uma transação, executar suas dml e então enviar um commit para gravar caso não tenha ocorrido erro, ou enviar rollback para cancelar caso tenha ocorrido algum erro. Para futuro, pense na hipótese de usar alguma coisa para fazer cache dos dados. Que seja client dataset, que seja um framework de persistência, que seja usar edit ao invés de dbedit, mas evite usar componentes que não façam cache (IBX) junto com componentes dbware, porque isso dá um bocado de dor de cabeça. -- Joao Morais
RES: [delphi-br] Commit automático
Para DDL não há transação. Oracle por exemplo, o default para DML é ter que usar o COMMIT. Se vc abrir um SQLPlus por exemplo e dar um delete em uma tabela sem dar commit, sair e entrar novamente os dados permanecem. De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rubem Nascimento da Rocha Enviada em: quinta-feira, 30 de agosto de 2007 16:03 Para: delphi-br@yahoogrupos.com.br Assunto: RE: [delphi-br] Commit automático Prioridade: Alta Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] mailto:delphi-br%40yahoogrupos.com.brFrom : [EMAIL PROTECTED] mailto:satoym%40gmail.comDate : Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RE: RES: [delphi-br] Commit automático
deve ter alguma propriedade autocommit := true; pronto... From: Davi Eduardo Borges Wall [EMAIL PROTECTED] Reply-To: delphi-br@yahoogrupos.com.br To: delphi-br@yahoogrupos.com.br Subject: RES: [delphi-br] Commit automático Date: Thu, 30 Aug 2007 16:06:33 -0300 Para DDL não há transação. Oracle por exemplo, o default para DML é ter que usar o COMMIT. Se vc abrir um SQLPlus por exemplo e dar um delete em uma tabela sem dar commit, sair e entrar novamente os dados permanecem. De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rubem Nascimento da Rocha Enviada em: quinta-feira, 30 de agosto de 2007 16:03 Para: delphi-br@yahoogrupos.com.br Assunto: RE: [delphi-br] Commit automático Prioridade: Alta Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] mailto:delphi-br%40yahoogrupos.com.brFrom : [EMAIL PROTECTED] mailto:satoym%40gmail.comDate : Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas] __ Receba as últimas notícias do Brasil e do mundo direto no seu Messenger com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] _ Descubra como mandar Torpedos SMS do seu Messenger para o celular dos seus amigos. http://mobile.msn.com/
Re: RES: [delphi-br] Commit automático
Davi Eduardo Borges Wall wrote: Para DDL não há transação. Depende do banco. Oracle dá um commit a cada ddl, Firebird não. -- Joao Morais Oracle por exemplo, o default para DML é ter que usar o COMMIT. Se vc abrir um SQLPlus por exemplo e dar um delete em uma tabela sem dar commit, sair e entrar novamente os dados permanecem. De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rubem Nascimento da Rocha Enviada em: quinta-feira, 30 de agosto de 2007 16:03 Para: delphi-br@yahoogrupos.com.br Assunto: RE: [delphi-br] Commit automático Prioridade: Alta Até onde me consta, em qualquer SGBD relacional, se você envia somente uma instrução SQL de DML (INSERT, UPDATE ou DELETE) ao banco de dados, e este não está envolvido em um contexto transacional, o COMMIT ocorrerá de forma automática pelo servidor. Ou seja, se você tem várias operações SQL de DML que necessitam ser efetivadas de forma atômica (ou seja, ou tudo ou nada!), faça o contexto transacional (START TRANSACTION/COMMIT/ROLLBACK) envolvendo todas essas operações. Se for apenas uma única operação, o banco se encarrega de fazer COMMIT ou ROLLBACK automático se ocorrer alguma operação errada. Sds. To: [EMAIL PROTECTED] mailto:delphi-br%40yahoogrupos.com.brFrom : [EMAIL PROTECTED] mailto:satoym%40gmail.comDate : Thu, 30 Aug 2007 11:34:22 -0300Subject: [delphi-br] Commit automático Bom dia pessoal,Estou usando o D7 com Firebird e IBX.Queria saber se existe alguma forma de configurar o Delphi para fazer ocommit automático.Ou seja qq insert já faz o commit.Seja em um execsql, ou usando um DBNagivator ...Sem ter que ficar dando o Commit explicito.Grato[]'s[As partes desta mensagem que não continham texto foram removidas]