Fórum Table: Record not found ? #372033
06/07/2009
0
Estou com um probleminha aqui:
Quando executo um [i:8a1ec5ad95]post[/i:8a1ec5ad95] em uma determinada tabela ocorre tudo perfeito,
porém quando tento inserir um novo registro nessa tabela é lançada uma
exceção [b:8a1ec5ad95]´Table: Record not found´[/b:8a1ec5ad95].
As vezes essa exceção é somente lançada depois do 3º ou 4º registro
inserido na tabela.
Como você podem ver, esta exceção é diferente da exceção
[b:8a1ec5ad95]Record not found or changed by another user[/b:8a1ec5ad95] que lançou muitas
dúvidas aqui no forum.
Alguém tem alguma dica para a resolução deste problema?!
Estou usando o Firebird 2.0.
Desde já Obrigado!
Fabricio.ribeiro
Curtir tópico
+ 0Posts
06/07/2009
Osocram
Mas ja vou adiantando se vc estiver usando DBExpress... vc precisa configurar as propriedade InKey dos campos que sao PK
e mudar no DataSetProvider a opção WhereAll para WhereKeyOnly.
Se não achar as propriedade da um alo que eu posto detalhado aqui para vc... é que estou sem delphi aqui no momento.
So por curiosidade vc tem campos Not null e com default no banco nessa tabela que esta fazendo os insert?
Flw.
Gostei + 0
07/07/2009
Fabricio.ribeiro
na aba Interbase, e um [b:bd83c6cc04]DataSource[/b:bd83c6cc04] (Dara Acess).
Nesta tabela há dois campos não Nulos.
Obrigado pela atenção![b:bd83c6cc04][/b:bd83c6cc04]
Gostei + 0
07/07/2009
Osocram
deve ter um comando Transaction.commit algo do genero.
Qto as campos nulos inicializa eles no after insert da table.
Pois o erro ´Record not found or changed by another user´
Acontece geralmente qdo tem campos not null e default dae vc manda null p o banco e ele preenche com o default e qdo o sistema vai traz de novo e vc faz algum update... ele acusa q o registro foi mudado por alguem pois ele mandou null e retornou diferente de null.
Essa é uma das maneira de se resolver isso.
Gostei + 0
07/07/2009
Fabricio.ribeiro
Identifiquei a origem do problema:
Tenho uma tabela [b:1ff3667b97]CONTA[/b:1ff3667b97] e uma [b:1ff3667b97]QUARTO[/b:1ff3667b97]. Insiro os valores na tabela
CONTA, sendo que também é necessário inserir o ID da tabela QUARTO,
logo tem uma chave estrangeira na tabela CONTA que faz referência a tabela
QUARTO. Quando chega por volta do 3º ou 4º registro inserido sequencialmente
na tabela CONTA esta EXCEÇÃO é lançada, ou seja a conta não está mais
localizando a referência a tela QUARTO que por sua vez é feita por um
componente DBLookupCombox.
A messagem da Exceção lançada é: [b:1ff3667b97]tbQuarto: Record not found[/b:1ff3667b97]
Espero que tenha entendido.
Gostei + 0
07/07/2009
Osocram
parece que é algo especifico com o TTable, e eu não lembro mais como usar isso.
Uma dica seria vc migrar seu sistema para DBExpress... principalmente por ser melhor e tbm por ter mais tutoriais.
Mas sobre o seu real problema não saberei resolver.. lamento.
Gostei + 0
07/07/2009
Fabricio.ribeiro
Gostei + 0
08/07/2009
Fabricio.ribeiro
Gostei + 0
08/07/2009
Fabricio.ribeiro
Gostei + 0
09/07/2009
Fabricio.ribeiro
a provável resolução do problema:
[b:e844f1617d]Excluir a TABLE, DARASOURCE e TRASACTION...[/b:e844f1617d]
depois basta recrialos re refazer a coxão com os componentes
e se for necessário alterar o código!
:D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)