ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Gravar registros, DBExpress- Não da certo

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
ODIRLEIMAIER
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 21 de Agosto de 2009
Mensagens: 170

MensagemEnviada: Qui Fev 25, 2010 3:30 pm    Assunto: Gravar registros, DBExpress- Não da certo Responder com Citação

Companheiros, sempre usei componentes IB agora estou tentando usar os componentes da aba DBExpress porque dizem que é melhor, mas ja tenho um problema, Insiro um registro e clico em salvar, aprentemente ele salva, mas ai fecho o aplicativo e reabro-o e não salvo nada, por que isso???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Qui Fev 25, 2010 3:39 pm    Assunto: Responder com Citação

"porque dizem que é melhor"

Rolling Eyes

Sem apply updates o negocio nao vai.

e fica com o componente que voce conhece bem.
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Qui Fev 25, 2010 3:40 pm    Assunto: Responder com Citação

da um ClientDataSet.ApplyUpdate(-1)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
ODIRLEIMAIER
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 21 de Agosto de 2009
Mensagens: 170

MensagemEnviada: Qui Fev 25, 2010 4:25 pm    Assunto: a Responder com Citação

rafmattos onde devo colocar esse codigo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Qui Fev 25, 2010 4:31 pm    Assunto: Re: a Responder com Citação

ODIRLEIMAIER escreveu:
rafmattos onde devo colocar esse codigo


No botão salvar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Fev 25, 2010 9:03 pm    Assunto: Responder com Citação

Quando em eu usava este componente em 2000 e antigamente fazia assim.
Código:
if dsPadrao.DataSet.State in [dsEdit, dsInsert] then
      try //começo do trecho try/except
        dsPadrao.DataSet.Post;
        (dsPadrao.DataSet as TClientDataSet).ApplyUpdates(0);
         MessageDlg('Dados gravados com sucesso', mtInformation, [mbOk],0);
         AtualizaRefresh(); //É uma procedure que atualiza os dados.
      except
         on E:Exception do
         begin
           MessageDlg('Ocorreu um erro neste processo. ' +#13#13 +'Erro gerado: '+#13+
           E.Message + #13#13 + 'Todo o processo foi abortado!', mtError, [mbOk],0);
           Abort;
           DSPadrao.DataSet.Cancel;
         end;
      end; //Final try/except

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
seymon
Novato
Novato


Registrado: Domingo, 21 de Fevereiro de 2010
Mensagens: 71

MensagemEnviada: Qui Fev 25, 2010 10:29 pm    Assunto: Responder com Citação

na última linha de comando do botão salvar coloque o seguinte:

ClientDataSet.ApplyUpdate(-1);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Fev 26, 2010 1:12 am    Assunto: Responder com Citação

Neste caso falta o tratamento de exceções e de erros. Caso vc de um applyudates(0) o registro é gravado e a quantidade de erros esperada não pode ser diferente de zero, neste caso ele avisa ao usuário que ocorreu um erro no meio do processo e que não foi gravado o registro, isto significa que o número de erros esperado é zero, ou seja MaxErrors = 0, se for colocado para -1 significa que não há limite para o número de erros. Isto para mim não parece ser uma boa coisa, por isto sempre defino o applyupdates como zero. Vc pode colocar num try .. except tb para capturar outros erros que ocorrem ao dar o applyupdates.

Lmebrando que antes é bom iniciar uma trasação.

Código:

var (Deixei Global)
Transacao: TTransactionDesc;
..
...
begin
Transacao.IsolationLevel := xilREADCOMMITTED;
// pode ser um número aleátório...
// no meu tenho uma funçao que gera este número
Transacao.TransactionID := 1;
SQLConnection1.StartTransaction(Transacao);
  try
  if cdsTabela.ApplyUpdates(0) <> 0 then
  begin
        if SQLConnection1.InTransaction then
           SQLConnection1.Rollback(Transacao);
        ShowMessage('Ocorreu um erro ao tentar aplicar o applyupdates') ;
  end
  except
    On E: EDataBaseError do
    begin
        SQLConnection1.Rollback(Transacao);     
        ShowMessage('Ocorreu uma exceção bla bla bla. Mensagem Original: ' + E.Message);
    end;
  end;
...
...



Para certo Erros o melhor é utilizar a tela de ReconcileError que é uma tela do proprio delphi que tem ela no reposítório, de uma pesquisada a respeito..

bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Sex Fev 26, 2010 9:45 am    Assunto: Responder com Citação

johnny-walker escreveu:

Para certo Erros o melhor é utilizar a tela de ReconcileError que é uma tela do proprio delphi que tem ela no reposítório, de uma pesquisada a respeito..
bye


Alguém aqui da lista utiliza a tela de ReconcileError em suas aplicações?
Pergunto porque ela raramente é sugerida.

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB