| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
rvercesi Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010 Mensagens: 912 Localização: Curitiba / PR
|
Enviada: Qua Mai 04, 2011 9:41 am Assunto: Mudança na linha do Registro |
|
|
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 |
|
 |
rvercesi Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010 Mensagens: 912 Localização: Curitiba / PR
|
Enviada: Qua Mai 04, 2011 12:09 pm Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Mai 05, 2011 12:26 pm Assunto: |
|
|
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 |
|
 |
rvercesi Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010 Mensagens: 912 Localização: Curitiba / PR
|
Enviada: Qui Mai 05, 2011 3:11 pm Assunto: |
|
|
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 |
|
 |
|