Usar COMMIT nos processamentos
Moderador: Moderadores
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Usar COMMIT nos processamentos
Olá!
Estava dando uma geral nos meus fontes de processamentos, onde pego dados de um DBF e repasso (REPL) em outro DBF e surgil uma dúvida.
Eu devo usar o COMMIT antes do USE, CLOSE ou CLOSE ALL ?
Estava dando uma geral nos meus fontes de processamentos, onde pego dados de um DBF e repasso (REPL) em outro DBF e surgil uma dúvida.
Eu devo usar o COMMIT antes do USE, CLOSE ou CLOSE ALL ?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Não adianta nda antes do USE e nem depois do CLOSE. O comando COMMAND tem por finalidade descarregar os buffers internos para o arquivo destino. Assim, as mudanças se tornarão imediatamente visíveis a outro usuário, em rede.
Ao executar um REPLACE, os dados não vão imediatamente para o arquivo. Usa-se COMMIT para forçar essa situação. Mas se o CLOSE vem em seguida, não há por quê usar COMMIT. Por outro lado, após um REPLACE pode vir outro ou vários outros. COMMIT, como trabalha com disco, é lento se executado seguidamente. O uso ideal é, após um REPLACE (ou vários), não seguido por CLOSE, executar apenas um COMMIT para descarregar os dados e continuar trabalhando no arquivo.
Ao executar um REPLACE, os dados não vão imediatamente para o arquivo. Usa-se COMMIT para forçar essa situação. Mas se o CLOSE vem em seguida, não há por quê usar COMMIT. Por outro lado, após um REPLACE pode vir outro ou vários outros. COMMIT, como trabalha com disco, é lento se executado seguidamente. O uso ideal é, após um REPLACE (ou vários), não seguido por CLOSE, executar apenas um COMMIT para descarregar os dados e continuar trabalhando no arquivo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Gente, o Maligno tá precisando de umas fériasO comando COMMAND....
Só complementando...
sempre depois dos replaces antes de destravar o registro, use então DBCOMMIT() pois ele atua somente no banco atual, causando uma lentidão menor.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
Cruzes!!!!Maligno escreveu:O comando COMMAND....
Complemento muito oportuno. Obrigado. Sempre esqueço desse detalhe: o comando COMMIT é traduzido para dbCommitAll() que, aliás, eu nunca uso.Só complementando...
sempre depois dos replaces antes de destravar o registro, use então DBCOMMIT() pois ele atua somente no banco atual, causando uma lentidão menor.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
É, vi no asquivo STD.CH que o comando COMMIT chama o DBCOMMITALL() e tava vendo nos estudos de c++ que é mais produtivo usar as funções e não os comandos, acho que isso já foi comentado aqui também.
Nos processamentos que faço não vou precisar COMMIT e nem o DBCOMMIT() depois dos REPLACE, já que uso os arquivos em modo exclusivo, assim o sistema fica mais leve.
Nos processamentos que faço não vou precisar COMMIT e nem o DBCOMMIT() depois dos REPLACE, já que uso os arquivos em modo exclusivo, assim o sistema fica mais leve.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Esse comando COMMIT, pra evitar confusão, deveria se chamar COMMITALL.clodoaldomonteiro escreveu:É, vi no asquivo STD.CH que o comando COMMIT chama o DBCOMMITALL()
Se foi comentado não lembro. Em C++ não existem comandos compostos como os do Clipper, mas comandos simples que não podem ser substituídos. Mas no quesito produtividade, não faz diferença o que se usa. Claro que isso dependende do codificador. Mas é muito mais fácil uma queda no nível de manutenibilidade do que no de produtividade.tava vendo nos estudos de c++ que é mais produtivo usar as funções e não os comandos, acho que isso já foi comentado aqui também.
Em Clipper é diferente. Na maior parte das vezes não dá pra trocar comandos por funções. Basta ver o conteúdo de um PPO pra entender por quê.
Não tem acesso multiusuário?Nos processamentos que faço não vou precisar COMMIT e nem o DBCOMMIT() depois dos REPLACE, já que uso os arquivos em modo exclusivo, assim o sistema fica mais leve.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Não um dbCommit() escondido, mas um efeito coloteral de mover o ponteiro para o mesmo lugar. Tá com cara de bug que deu certo.
))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Tem sim, só que quando faço processamentos, pego vários arquivos para analizar e gerar registros em um arquivo diário, eu os abro em modo exclusivo.Maligno escreveu:Não tem acesso multiusuário?
Se não quando eu tiver totalizando uma conta, e outro usuário incluir um lançamento, os saldos das contas vão ficar furados.
É um fechamento mensal.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Se o sujeito fizer um lançamento após o processamento, os saldos das contas ficarão furados do mesmo jeito. Quando for imprimir o balanço ele já estará furado. 
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Era isso mesmo que ia dizer. De quê adianta brecar todo mundo se o resultado final será o mesmo. O que poderia ser considerado, nesses relatórios (ou até consultas) é colocar a data e hora para não houver discrepâncias nos relatórios sub-seguintes.
Ja se sabe que tão somente poucos casos é aconselhado o uso do READONLY, numa rede mais ainda.
Ja se sabe que tão somente poucos casos é aconselhado o uso do READONLY, numa rede mais ainda.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Pessoal!
É que a rotina é de fechamento do mês e o usuário sabe que tem que usá-la para para atualizar as tabelas.
Quando ele altera uma tabela, eu altero uma variável para .f., e quanto ele usa o fechameno do mês essa variável passa a ser .t., assim quando ele for imprimir os relatório tem como eu saber se falta fechar o mês ou não.
Não sei se tem uma maneira melhor de fazer isso.
Ps. O sistema é basicamente de contabilidade, só que contabilidade pública, bem mais complicado.
É que a rotina é de fechamento do mês e o usuário sabe que tem que usá-la para para atualizar as tabelas.
Quando ele altera uma tabela, eu altero uma variável para .f., e quanto ele usa o fechameno do mês essa variável passa a ser .t., assim quando ele for imprimir os relatório tem como eu saber se falta fechar o mês ou não.
Não sei se tem uma maneira melhor de fazer isso.
Ps. O sistema é basicamente de contabilidade, só que contabilidade pública, bem mais complicado.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
