Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvidas... Espero Que Possam Ajudar


Betina

Pergunta

Ola!

Deparei-me com um problema no meu programa. Ele bloqueou e tive de "deitá-lo abaixo" e perdi os dados todos que tinham sido inseridos desde que tinha aberto a aplicação. O que fiz para corrigir este problema foi o close e open das tabelas conforme vou fechando o form.

Não há outra forma de fazer isto? Tentei o commit e não resultou. Talvez não esteja a utilizá-lo correctamente. Os campos dos meus forms são do tipo TDBEdit, TDBCheckBox, etc. Ou seja, estão directamente ligadas à Base de dados (em Paradox).

Outra questão: Alguém sabe como é que posso fazer aparecer a descrição do documento que se está a imprimir na janela de 'jobs' da impressora?

Muito obrigada.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Em relação ao primeiro problema, o que aconteceu, você perdeu todos os dados que haviam sido registrados no banco. Outra coisa, você quer uma forma de abrir e fechar as tabelas apenas quando for usá-las?

Em relação à impressora, não sei como ajudá-la.

Link para o comentário
Compartilhar em outros sites

  • 0

É assim, o meu problema ficou resolvido ao fechar e abrir as tabelas quando fecho os forms que tenho. Assim os dados não se perdem mesmo que a aplicação bloqueie por alguma razão.

So gostaria de em vez de fechar e abrir as tabelas quando fecho os forms, fazer o commit (uma vez que essa função existe) depois de guardar os dados inseridos. Já tentei utilizar a função CommitUptdate mas não resolve nada. Se a aplicação bloqueia, utilizando o CommitUpdate em vez de fechar e abrir tabelas, ele perde os dados inseridos. Talvez não esteja a utilizar o CommitUpdate correctamente, mas fi-lo da mesma forma que está no exemplo da ajuda do Delphi. Não entendo porque não funciona.

Obrigada pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas o que eu não consigo entender é porquê os dados somem da tabela, porquê eles estão sendo apagados.

Link para o comentário
Compartilhar em outros sites

  • 0

Os dados inseridos só são apagados se não se fizer o close das tabelas que se alteraram antes que a aplicação bloqueie. Para testar isto eu faço o "Program reset" no Delphi, assim a aplicação vai abaixo. O que acontece é: As inserções feitas nas tabelas em que não foi feito o close até eu deitar o programa abaixo, são todas apagadas. Isso talvez porque os dados apenas são escritos para ficheiro depois de fazer o close, não sei bem.

Acho que a função commitUpdate é que garante a escrita de dados para ficheiro, mas eu utilizo essa função e isso não acontece, por isso como alternativa faço sempre o close das tabelas que utilizo quando saio dos forms. Assim os dados não somem.

Eu so queria saber como se utiliza o commitUpdate da Base de Dados. O que utilizo para gravar os dados é o applyUpDates, que pelos vistos grava mas só os escreve para ficheiro depois de fazer o close da tabela.

Não sei se me fiz entender... Mas agradeço atençao smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Bem... não vou te dar certeza absoluta, mas é bem provavel que o applyUpDates tenha problema com o sistema de Cache e sistema de lock do proprio sistema operacional....

Como voce faz a insercao de dados? Utiliza o Append e Post?

Link para o comentário
Compartilhar em outros sites

  • 0

É, bem estranho mesmo!! Eu nunca usei commitUpdate e nem applyUpDates (não ei nem pra quê que isso serve!!), mas sempre que vou adicionar um registro e gravar eu utilizo o que o Corposemalma falou:

Tabela.Append; // cria um novo registro

Tabela.Post; // salva o registro criado.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu também utilizo Tabela.Post para gravar para a tabela e por vezes tb faço o ApplyUpdate. Mas pelos vistos se por acaso o programa for abaixo sem que o close da tabela tenha sido feito os dados que foram inseridos somem. Pelo menos foi o que me aconteceu sad.gif. Mas pronto, eu remediei a situação fechando a tabela cada vez que saio de um form para ter a certeza que os dados sejam escritos para o ficheiro de dados.

Tinha ideia que o commitUpdate servia pra isso, mas pelo que experimentei não resulta. Paciência.

Mais uma vez muito obrigada smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Estranho, os dados deveriam ser gravados imediatamente...(tb nunca tentei derrubar a aplicacao). Como disse deve ser algo relacionado com o cache...

Talvez exista alguma opcao nas configuracoes para que as mudanças sejam instantaneas (no alias ou engine da tabela)

De uma olhada, porque eu não estou acostumado a trabalhar com Paradox

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Não sei se entendi bem o problema,

mas isso de usar o ApplyUpdates depende do componente que você esta usando, se é uma “Tquery” ou “TTable” ou “IBTable” etc,

Para o Paradox eu não sei porque nunca usei essa base de dados, mas por exemplo o “IBTable” precisa de um “IBTransaction”, e para gravar eu uso “IBTransaction1.Commit”

Se usar o Ttable eu simplesmente coloco um Table1.Insert e depois um Table1.Post, por segurança as vezes antes do Post eu coloco os dados informados em variáveis, coloco o post, fecho a tabela, abro de novo e localizo o registro com base nas variáveis.

Se você quiser usar “Commit” então coloque um insert um post um apply e um commit. Acho que o commit já fecha a tabela automaticamente então faça aquilo de localizar o registro depois que ai não tem erro.

Espero ter ajudado,

Ate mais!

Link para o comentário
Compartilhar em outros sites

  • 0

É, isso é estranho, eu sempre uso Paradox (que, diga-se de passagem, é o único banco que eu sei usar!!) e sempre que vou gravar registro uso append e depois post. Isso que ela tá relatando nunca aconteceu comigo... ainda bem né.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...