Table: Record not found ?

Delphi

06/07/2009

Olá para todos!
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

Fabricio.ribeiro

Curtidas 0

Respostas

Osocram

Osocram

06/07/2009

Amigo, faltou vc dizer qual os componentes de acesso ao banco vc esta usando.

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.

Olá para todos! Estou com um probleminha aqui: Quando executo um [i:116aa0f462]post[/i:116aa0f462] em uma determinada tabela ocorre tudo perfeito, porém quando tento inserir um novo registro nessa tabela é lançada uma exceção [b:116aa0f462]´Table: Record not found´[/b:116aa0f462]. 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:116aa0f462]Record not found or changed by another user[/b:116aa0f462] 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!



GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

[b:bd83c6cc04]osocram[/b:bd83c6cc04] estou utilizando nesta tabela um [b:bd83c6cc04]Trasnaction[/b:bd83c6cc04] e [b:bd83c6cc04]Table[/b:bd83c6cc04] que estão
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
Osocram

Osocram

06/07/2009

Então sobre table..... faz uns 10 anos q num uso... mas por ter transaction. vc tem q comitar isso ae para ele gravar no banco.
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.


[b:1fcacceb57]osocram[/b:1fcacceb57] estou utilizando nesta tabela um [b:1fcacceb57]Trasnaction[/b:1fcacceb57] e [b:1fcacceb57]Table[/b:1fcacceb57] que estão na aba Interbase, e um [b:1fcacceb57]DataSource[/b:1fcacceb57] (Dara Acess). Nesta tabela há dois campos não Nulos. Obrigado pela atenção![b:1fcacceb57][/b:1fcacceb57]



GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

Eu estou dando os [b:1ff3667b97]COMMIT[/b:1ff3667b97].

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
Osocram

Osocram

06/07/2009

Dae complicou então amigo.
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.

Eu estou dando os [b:f3064a86dd]COMMIT[/b:f3064a86dd]. Identifiquei a origem do problema: Tenho uma tabela [b:f3064a86dd]CONTA[/b:f3064a86dd] e uma [b:f3064a86dd]QUARTO[/b:f3064a86dd]. 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:f3064a86dd]tbQuarto: Record not found[/b:f3064a86dd] Espero que tenha entendido.



GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

Ainda assim obrigado por tentar [b:1fcacceb57]osocram[/b:1fcacceb57].


GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

==== sobe ====


GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

==== sobe ====


GOSTEI 0
Fabricio.ribeiro

Fabricio.ribeiro

06/07/2009

Caso alguém tenha o mesmo problema que eu, fica a dica para
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
POSTAR