Delphi 7 IB6 - Êrro na execução muito esquisito.

Firebird

11/02/2004

Pessoal,

Estou desenvolvendo uma aplicação usando o Delphi 7 e o IB6 com DBX, clientdatasets, Provider, etc. Acontece que quando eu dou o Post na tabela:

dm.CDSMovEst.Post;
dm.CDSMovEst.ApplyUpdates(-1);

em tempo de execução, dá o seguinte erro, que não tem nada a ver, eu acho:

Project Estoque raised exception class EinvalidOperation with message ´cannot focus a disabled or invisible window´. Process stop. Use step or run to continue.

Eu usei o Debug e verifiquei que ele para na instrução do Post. Não estou tentando fazer ficar visible ou disabled nenhum componente. A coisa é muito estranha porque estou usando o mesmo método com outras tabelas e funciona perfeitamente.

Obrigado,

Airton


Airton Santos

Airton Santos

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

11/02/2004

[quote:3e5b90d5c9=´Airton dos Santos´]Project Estoque raised exception class EinvalidOperation with message ´cannot focus a disabled or invisible window´. Process stop. Use step or run to continue.[/quote:3e5b90d5c9]

Isso não tem nada a ver com o banco de dados, você esta sim, de alguma forma tentando setar o foco em um componente que não esta ativo(enabled) ou visivel(visible); Talvez você possa estar tentando fazer isso em algum evento como AfterPost, BeforePost, dai o erro no momento do Post! :?


GOSTEI 0
Airton Santos

Airton Santos

11/02/2004

Caro Maicongabriel,

Eu verifiquei se nos eventos do ClientDataSet (CDSMovEst) havia alguma coisa no BeforePost e AfterPost ou qualquer outro evento, mas infelizmente estava tudo limpo. Não havia nada.

Pelo Debug eu notei que isso dá no Post e, se eu coloco // na frente do Post, dá no ApplyUpdates. Me parece que minha tabela não aceita atualização !?. :? :?:

Eu vou olhar no IBConsole se tem alguma coisa errada com a tabela.

Obrigado,

Airton


GOSTEI 0
Brenoinfo

Brenoinfo

11/02/2004

caro amigo ,,,

verifique no evento on click do seu botao que esta executando o post se vc nao esta mnadando voltaro foco para algum campo inexistente ou invisivel,,. como citou nosso amigo ai logo acima,..

exemplo :


edit1.setfocus;
edit2.setfocus;
btn?.setfocus;


GOSTEI 0
Airton Santos

Airton Santos

11/02/2004

Pessoal,

O negócio é o seguinte: - Eu desisti de tentar saber o que estava acontecendo pelo seguinte fato:

Fiz uma aplicação bem pequenina com dois botões - um de gravar e outro de sair. No botão de gravar eu dei append no CDS, coloquei algumas informações nos campos da tabela e depois dei Post e ApplyUpdates.
Funcionou legal.

Aí eu peguei a outra aplicação e fui tirando componentes e testando para ver se eu achava o componente ou rotina com problema.

AGORA, PASMEM !! As duas aplicações ficaram iguais (exatamente iguais), linha por linha, componente por componente....mas, a aplicação que funcionava continuou funcionando e a que dava problema continuou dando problema.

Bom, depois dessa eu fui dormir com a cabeça pegando fogo. No dia seguinte eu joguei fora a aplicação com problema e fiz de novo e aí não apresentou mais o problema.

DÁ PRA ENTENDER ???? Só pode ser erro de compilador ou coisa parecida.

Mas, obrigado a todos

Airton


GOSTEI 0
Maicongabriel

Maicongabriel

11/02/2004

:shock: as vezes, tirar e repor um determinado componente tambem ´corrige´ essas loucuras não muito freqüentes...


GOSTEI 0
Afarias

Afarias

11/02/2004

|DÁ PRA ENTENDER ???? Só pode ser erro de compilador ou coisa
|parecida.

Hehehehe... no meu trabalho ocorre isso muitas vezes... sempre q vou dar uma olhada foi alguma coisinha q escapou ao desenvolvedor e praticamente nunca um bug (da ferramenta)


T+


GOSTEI 0
Airton Santos

Airton Santos

11/02/2004

A.FARIAS,

Eu acho que ao inves de rir de certas afirmacões, voce deveria ir mais fundo e reconsiderar sua opinião, pois só para exemplificar.

No DBCHART, em relacão ao campo NUMERIC(XX,X) cujo formato é TfmtBCD, existe um BUG grosseiro quando se usa a funcão SUM(campo) as TOTAL, por exemplo, pois esse campo simplesmente não é listado na relacão de campos do DATASET.

E, sabe como eu descobri isso ??

Entrando num site americano e localizando uma dúvida semelhante para ADO.

A solucão é mudar o formato do campo no dataset para float. O próprio fabricante do DBCHART admitiu o erro e corrigirá em versões posteriores.

HEHEHEHE !!!

Airton


GOSTEI 0
Afarias

Afarias

11/02/2004

Cara... tu desenterrou essa heim?!

Ai ai... pois é, esses caras do DBChat são fogo! :roll:



T+


GOSTEI 0
Andrelino Souza

Andrelino Souza

11/02/2004

E ai galera! Isso já aconteceu comigo. Eu tinha colocado um DbRadioGroup e no Onchange tinha comandos setando o foco de acordo com o index do DbRadioGroup, ai quando eu dava um post ou cancel no clientDataSet retornava esse erro,  fiquei bom tempo pra descobrir.
GOSTEI 0
POSTAR