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 

"Key Violation." Msagem de erro imprecisa no CDS[Resolvido]
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Ter Jun 15, 2010 10:02 am    Assunto: "Key Violation." Msagem de erro imprecisa no CDS[Resolvido] Responder com Citação

Bom dia a todos!

Srs., estou diante do seguinte problema, toda vez que forço um erro de chave primaria ou de unique no firebird através de uma simples aplicação feita em delphi, retorna a mensagem de "Key violation.". Mais precisamente... "First chance exception at $7C812AEB. Exception class EDBClient with message 'Key violation.'. Process Project1.exe (3728)". Vejam que a mensagem não é qualificada. Ou seja, não me mostra se é uma violação de chave primária ou de unicidade. Se faço a simulação usando o IBExpert, a mensagem de erro é completa. Pesquisei, mas não encontrei nada que pudesse me ajudar. Já mudei o drive de conexão, tentei no delphi 2010, desinstalei o firebird e nada.

Estou usando:

- Delphi 2006 (Tentei no Delphi 2010)
- Firebird 2.0
- Drive UIB (No Delphi 2010 tentei com o drive Firebird)

Obs. Já criei outro BD e o problema continua.

Alguém já passou por isso ou teria alguma referência para que eu possa estudar o problema?
_________________
Júnior Miranda
Analista de Sistemas.


Editado pela última vez por juniormiranda em Qui Jun 17, 2010 10:32 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rogerbetti
Colaborador
Colaborador


Registrado: Quarta-Feira, 2 de Fevereiro de 2005
Mensagens: 1366
Localização: São Paulo/SP

MensagemEnviada: Ter Jun 15, 2010 10:28 am    Assunto: Responder com Citação

tenta gravar direto sem o clientdataset pra ver o que retorna
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Ter Jun 15, 2010 10:55 am    Assunto: Responder com Citação

rogerbetti escreveu:
tenta gravar direto sem o clientdataset pra ver o que retorna


Obrigado pela atenção! Me desculpe por não ter mencionado! Eu já havia testado uma inserção direta usando SQL puro(Funciona perfeitamente). A questão é que eu queria entender o problema junto ao ClientDataset. Por que no ClientDataset, a mensagem não está retornando qualificada(Completa)?

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rogerbetti
Colaborador
Colaborador


Registrado: Quarta-Feira, 2 de Fevereiro de 2005
Mensagens: 1366
Localização: São Paulo/SP

MensagemEnviada: Ter Jun 15, 2010 10:59 am    Assunto: Responder com Citação

vc inseriu pela propriedade sqldirect do connection ou usou o sqldataset?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Ter Jun 15, 2010 11:11 am    Assunto: Responder com Citação

rogerbetti escreveu:
vc inseriu pela propriedade sqldirect do connection ou usou o sqldataset?


SqlQuery.

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


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

MensagemEnviada: Ter Jun 15, 2010 8:55 pm    Assunto: Responder com Citação

Tentou utilizar o evento OnReconcielError ou a tela que o delphi fornece para tratar desteste tipos de erros...



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
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Qua Jun 16, 2010 8:41 am    Assunto: Responder com Citação

johnny-walker escreveu:
Tentou utilizar o evento OnReconcielError ou a tela que o delphi fornece para tratar desteste tipos de erros...

bye


Eu já trato o erro! na verdade, o que eu quero é compreender o porque do clientdataset está trazendo a mensagem de forma não qualificada('Key Violation.') ao invés de 'violation of PRIMARY or UNIQUE KEY constraint UNQ1_ENT_IPORTADMBOL" on table "ENT_IPORTADMBOL' por exemplo!

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Qua Jun 16, 2010 9:00 am    Assunto: Responder com Citação

PlenusJunior escreveu:
johnny-walker escreveu:
Tentou utilizar o evento OnReconcielError ou a tela que o delphi fornece para tratar desteste tipos de erros...

bye


Eu já trato o erro! na verdade, o que eu quero é compreender o porque do clientdataset está trazendo a mensagem de forma não qualificada('Key Violation.') ao invés de 'violation of PRIMARY or UNIQUE KEY constraint UNQ1_ENT_IPORTADMBOL" on table "ENT_IPORTADMBOL' por exemplo!

[]'s


cara n sei
mas uma vez tive um problema semelhante
e ai usei o driver nativo interbase
pois estava q nem vc...
usando o uib

n sei se ajudara mas....
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Qua Jun 16, 2010 9:06 am    Assunto: Responder com Citação

Você não definiu algum índice no próprio CDS não?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Qua Jun 16, 2010 9:12 am    Assunto: Responder com Citação

macario1983 escreveu:
PlenusJunior escreveu:
johnny-walker escreveu:
Tentou utilizar o evento OnReconcielError ou a tela que o delphi fornece para tratar desteste tipos de erros...

bye


Eu já trato o erro! na verdade, o que eu quero é compreender o porque do clientdataset está trazendo a mensagem de forma não qualificada('Key Violation.') ao invés de 'violation of PRIMARY or UNIQUE KEY constraint UNQ1_ENT_IPORTADMBOL" on table "ENT_IPORTADMBOL' por exemplo!

[]'s


cara n sei
mas uma vez tive um problema semelhante
e ai usei o driver nativo interbase
pois estava q nem vc...
usando o uib

n sei se ajudara mas....


No delphi 2010 eu testei usando o drive firebird e deu na mesma.

Citação:


Você não definiu algum índice no próprio CDS não?



Não

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Qui Jun 17, 2010 10:33 am    Assunto: Responder com Citação

A solução foi o par:
DisableConstraints e EnableConstraints

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Seg Jun 21, 2010 10:11 am    Assunto: Responder com Citação

PlenusJunior escreveu:
A solução foi o par:
DisableConstraints e EnableConstraints

[]'s



como assim chefe?
vc fez isso via componente ou codigo?

eu tb tive este problema tb...qd tentei usar o uib 1.5 no delphi
e o 2010 tb...

valeu
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Seg Jun 21, 2010 11:00 am    Assunto: Responder com Citação

macario1983 escreveu:
PlenusJunior escreveu:
A solução foi o par:
DisableConstraints e EnableConstraints

[]'s



como assim chefe?
vc fez isso via componente ou codigo?

eu tb tive este problema tb...qd tentei usar o uib 1.5 no delphi
e o 2010 tb...

valeu


Via código! Mas esqueça estas propriedades(para este problema em específico)! estas duas propriedades me deram uma falsa idéia de solução. Digo isto, baseado no que elas se propõem a fazer. Desabilitar temporariamente as constraints(caso constem no DataPacket) no lado cliente blá blá blá...
Para resolver de fato este problema, eu tinha duas opções:
1) Substituir o drive de conexão(Uib por Interbase por ex.);
2) Incluir o tratamento para esta excessão dentro da minha rotina(no ApplicationEvents).

Fiquei com a segunda opção! A questão era eu entender porque a mensagem exibida não era qualificada. Percebi que provavelmente, se trata da implementação no drive UIB.

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
macario1983
Experiente
Experiente


Registrado: Domingo, 1 de Novembro de 2009
Mensagens: 404

MensagemEnviada: Seg Jun 21, 2010 11:12 am    Assunto: Responder com Citação

PlenusJunior escreveu:
macario1983 escreveu:
PlenusJunior escreveu:
A solução foi o par:
DisableConstraints e EnableConstraints

[]'s



como assim chefe?
vc fez isso via componente ou codigo?

eu tb tive este problema tb...qd tentei usar o uib 1.5 no delphi
e o 2010 tb...

valeu


Via código! Mas esqueça estas propriedades(para este problema em específico)! estas duas propriedades me deram uma falsa idéia de solução. Digo isto, baseado no que elas se propõem a fazer. Desabilitar temporariamente as constraints(caso constem no DataPacket) no lado cliente blá blá blá...
Para resolver de fato este problema, eu tinha duas opções:
1) Substituir o drive de conexão(Uib por Interbase por ex.);
2) Incluir o tratamento para esta excessão dentro da minha rotina(no ApplicationEvents).

Fiquei com a segunda opção! A questão era eu entender porque a mensagem exibida não era qualificada. Percebi que provavelmente, se trata da implementação no drive UIB.

[]'s


mas ai aparece o erro ainda?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
juniormiranda
Experiente
Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006
Mensagens: 413

MensagemEnviada: Seg Jun 21, 2010 11:32 am    Assunto: Responder com Citação

macario1983 escreveu:
PlenusJunior escreveu:
macario1983 escreveu:
PlenusJunior escreveu:
A solução foi o par:
DisableConstraints e EnableConstraints

[]'s



como assim chefe?
vc fez isso via componente ou codigo?

eu tb tive este problema tb...qd tentei usar o uib 1.5 no delphi
e o 2010 tb...

valeu


Via código! Mas esqueça estas propriedades(para este problema em específico)! estas duas propriedades me deram uma falsa idéia de solução. Digo isto, baseado no que elas se propõem a fazer. Desabilitar temporariamente as constraints(caso constem no DataPacket) no lado cliente blá blá blá...
Para resolver de fato este problema, eu tinha duas opções:
1) Substituir o drive de conexão(Uib por Interbase por ex.);
2) Incluir o tratamento para esta excessão dentro da minha rotina(no ApplicationEvents).

Fiquei com a segunda opção! A questão era eu entender porque a mensagem exibida não era qualificada. Percebi que provavelmente, se trata da implementação no drive UIB.

[]'s


mas ai aparece o erro ainda?


Caso uma excessão seja levantada por uma violação de chave, sim! Contudo, retorno para o usuário, uma mensagem mais amigável.

[]'s
_________________
Júnior Miranda
Analista de Sistemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
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
Ir à página 1, 2  Próximo
Página 1 de 2

 
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