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 

Mudança na linha do Registro

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


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Qua Mai 04, 2011 9:41 am    Assunto: Mudança na linha do Registro Responder com Citação

Tenho a seguinte rotina (em diversas telas de cadastro):

Código:
  if ( dsVisao.State in [dsEdit, dsInsert] ) then begin
    frmPrincipal.MySQLOrdenscod_sup.Value := frmPrincipal.MySQLVendedorescod_sup.Value;
    frmPrincipal.MySQLOrdenstipo_status.Value := frmPrincipal.MySQLStatustipo.Value;
    frmPrincipal.MySQLOrdensdigitador.Text := sLogin;
    dsVisao.DataSet.Post;
    frmPrincipal.MySQLOrdens.CommitUpdates;
    iOrdemGerada := frmPrincipal.MySQLOrdensid.Value;


Notem que a rotina é a mesma para várias telas (inclusive o arquivo) porque exitem diversas formas de se cadastrar. Para cada uma alguns campos são necessários e para outras não!

O que tem ocorrido é que em algumas telas, após o POST ou o COMMITUPDATE, a tabela sai da posição e a variável iOrdemGerada é carregada com um valor errado!

O mais estranho é que em 3 das 5 telas o valor carregado na variável é correto, enquanto nas duas outras é carregado um valor errado pela mudança de registro na tabela.

Notem que o POST é feito corretamente. Mas não entendo como possa mudar de registro na tabela.

Alguém teria alguma idéia de porque isso acontece?

Desde já agradeço a todos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rvercesi
Mestre
Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Qua Mai 04, 2011 12:09 pm    Assunto: Responder com Citação

Olha só o que já fiz:



Código:
    SavePlace := frmPrincipal.MySQLOrdens.GetBookmark;
    dsVisao.DataSet.Post;
    frmPrincipal.MySQLOrdens.CommitUpdates;
    frmPrincipal.MySQLOrdens.GotoBookmark(SavePlace);
    iOrdemGerada := frmPrincipal.MySQLOrdensid.Value;


E mesmo assim a artribuição da variável iOrdemGerada está errada!

Não entendo o que pode estar acontencendo!
O registro em si está sendo gravado corretamente.
Mas após o POST a tabela sai da posição onde está e vai para um outro registro aleatório!

Alguma idéia?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


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

MensagemEnviada: Qui Mai 05, 2011 12:26 pm    Assunto: Responder com Citação

Vc precisa de um valor referente a tabela e este quando grava pega o registro errado. É isto o que entendi?

Se for o caso verifique em que local vc está fazendo o deslocamento do ponteiro, quando vc tenta salvar, geralmente utilizando o mesmo componente para fazer outra tarefa...


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
rvercesi
Mestre
Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Qui Mai 05, 2011 3:11 pm    Assunto: Responder com Citação

Não Johnny.

Ele está gravando corretamente. Mas inexplicávelmente logo após o POST ele sai do registro e vai para outro aleatório!

Olha o código:

Código:
  if ( dsVisao.State in [dsEdit, dsInsert] ) then begin
    SavePlace := dsVisao.DataSet.GetBookmark;
    dsVisao.DataSet.Post;
    frmPrincipal.MySQLOrdens.CommitUpdates;
    dsVisao.DataSet.GotoBookmark(SavePlace);
    iOrdemGerada := frmPrincipal.MySQLOrdensid.Value;


Os bookmarks eu coloquei agora para forçar ele a retornar ao registro em questão! Mas mesmo assim não está voltando! A variável iOrdemGerada é uma variável integer que deveria receber o valor do novo input. Mas ela recebe valores aleatórios. Exemplo: o novo código é 12.356, ele gera isso, grava o registro corretamente, mas a variável é atribuido o valor de 549.

E eu não descobro o porque está fazendo isso! E não existe nenhuma rotina no meio disso, nem nenhuma store no banco para isso!

Mesmo com o bookmark ele não retorna ao registro correto.

To maluco com isso fazem dois dias já!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
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