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 

RefreshRecord

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


Registrado: Segunda-Feira, 2 de Abril de 2007
Mensagens: 234
Localização: Caxias do Sul

MensagemEnviada: Sex Out 30, 2009 12:10 pm    Assunto: RefreshRecord Responder com Citação

Olá a todos!

Estou desenvolvendo um novo produto e reescrevendo "todo" o código mas com isso vem inovações (ou complicações) Sad !!!!!

O caso é que criei uma classe chamada TDtm_FlexDadosEntidade e que irá encapsular todo evento referente a manutenção de dados em tabelas, como já faço na versão anterior do meu aplicativo.

O problema é que agora é que modifiquei o código descrito abaixo, acrescentando o procedimento RefreshRecord só para atualizar o registro que estou modificando, mas na verdade não sei o que é esse procedimento, mas gostaria de saber como funciona para que serve e o que é necessário para que ele funcione. Embarassed

Pergunto: Para que serve e como devo utilizar, visto que ao utilizar ele apresenta a seguinte mensagem: Refresh not found or changed by another user

Obrigado à todos.

Código:
procedure TDtm_FlexDadosEntidade.Confirmar(const pMaxErros: Integer; const pAbrirTransacao: Boolean);
var
  lNroErros: Smallint;
begin
  if Aberto and ExistemAlteracoes then
  begin
    if pAbrirTransacao then
      AbrirTransacao;

    try
      repeat
        FRegistrosCorrigidos := 0;
        lNroErros := Cds_Principal.ApplyUpdates(pMaxErros) - FRegistrosCorrigidos;
      until (FRegistrosCorrigidos = 0) or ((pMaxErros <1> pMaxErros));

      if ((pMaxErros <1> pMaxErros)) then
      begin
        Cds_Principal.CancelUpdates;
        if TTexto.StringEmBranco(FMensagemReconcile) then
          FlexControle.FlexMensagem.Erro('Erro ao atualizar Banco de Dados.', teErro)
        else
          FlexControle.FlexMensagem.Erro(FMensagemReconcile, teAbortar);
      end;

      if pAbrirTransacao then
        CommitarTransacao;

      if Cds_Principal.UpdateStatus = usUnModified then
        Cds_Principal.RefreshRecord;
    except
      if pAbrirTransacao then
        RollbackTransacao;
      raise;
    end;
  end;
end;

_________________
Edvilson V. G. Chaves

- Pesquise bem antes de postar.

- Qdo postar pense muito bem onde seria o melhor resultado.

e-mail: suporte@flexvendasweb.com.br
Site: www.flexvendasweb.com.br


Editado pela última vez por flexsystems em Sáb Nov 14, 2009 8:55 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
alexbandeira
Mestre
Mestre


Registrado: Terça-Feira, 27 de Julho de 2004
Mensagens: 812
Localização: Paulista - PE

MensagemEnviada: Sex Out 30, 2009 2:40 pm    Assunto: Responder com Citação

Cara gostei do teu código, heheheh.

Bom, em relação ao refhesh, ele funciona como um commit. serve para atualizar dispositivos de armazenamentos de dados, normalmente é usado em sistemas em rede para atualizar os terminais com as informações mais recentes do servidor.

Como a msg retorna é que o sist. ñ encontrou motivos para realizar o refresh.

é bom vc rever o código.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
flexsystems
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Abril de 2007
Mensagens: 234
Localização: Caxias do Sul

MensagemEnviada: Sáb Nov 14, 2009 8:59 am    Assunto: Responder com Citação

Olá desculpe a demora em responder a sua resposta...

mas ae que está o problema,

estou desenvolvendo todas as tabelas do sistema com conceito de surrogate key,método onde a Primary key da tabela é informada via trigger no momento de inserir no banco de dados, com isso com toda certeza afirmo a você que existe sim uma alteração no registro e este deveria ser alterado.
_________________
Edvilson V. G. Chaves

- Pesquise bem antes de postar.

- Qdo postar pense muito bem onde seria o melhor resultado.

e-mail: suporte@flexvendasweb.com.br
Site: www.flexvendasweb.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
flexsystems
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Abril de 2007
Mensagens: 234
Localização: Caxias do Sul

MensagemEnviada: Sáb Nov 14, 2009 10:10 am    Assunto: Responder com Citação

flexsystems escreveu:
Olá desculpe a demora em responder a sua resposta...

mas ae que está o problema,

estou desenvolvendo todas as tabelas do sistema com conceito de surrogate key,método onde a Primary key da tabela é informada via trigger no momento de inserir no banco de dados, com isso com toda certeza afirmo a você que existe sim uma alteração no registro e este deveria ser alterado.


Exemplo:

Tabela de Condições de Pagamento:

ID -> CODIGO -> DESCRICAO
====================
1 -> 30D -> 30 DIAS
2 -> AVI -> A VISTA
3 -> 60D -> 60 DIAS

Quando aplicado o comando insert:

-1 -> [VAZIO] -> [VAZIO]

Após Post do ClientDataSet:

-1 -> 90D -> 90 DIAS

Após o ApplyUpdates/Commit no Banco:

4 -> 90D -> 90 DIAS

Agora viria o RefreshRecord para atualizar o registro, monstrando no ID 4 e não -1, mas ocorre o erro.
_________________
Edvilson V. G. Chaves

- Pesquise bem antes de postar.

- Qdo postar pense muito bem onde seria o melhor resultado.

e-mail: suporte@flexvendasweb.com.br
Site: www.flexvendasweb.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
[VAZA]
Novato
Novato


Registrado: Terça-Feira, 30 de Agosto de 2011
Mensagens: 5

MensagemEnviada: Ter Ago 30, 2011 2:18 pm    Assunto: Responder com Citação

Amigo..conseguiu resolver o problema? estou tendo o mesmo erro
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