[firebase-br] Trigger + ClientDataSet
Francisco Thiago Almeida
jeandeadlucky em yahoo.com.br
Sex Dez 3 13:59:15 -03 2004
Então tá, vamos descobrir onde está o erro:
Crie uma nova tabela e um novo Form, e faça o acesso a essa nova tabela, não escrevendo código algum.
Escreva a Trigger conforme eu te instrui a pouco (e o generato também);
...
if (new.campo is null) or (new.campo = -1) then
new.campo = gen_id(gernerator,1)
...
Configure os componentes como de praxe. Neste caso, não será necessário setar o required para false...
no before post do ClientDataSet escreva:
If DataSet.FindField('Campo') <> Nil Then
DataSet.FieldByName('Campo').AsInteger := -1
onde "Campo" é o campo "auto incremento"
coloque os campos no form... tudo como de praxe... adicione o dbnavigator e um outro componente button.
Neste componente Button, escreva o seguinte código:
ClientDataSet1.ApplyUpdates(0);
E no evento OnReconcileError do ClientDataSet escreva o seguinte:
ShowMessage(E.Message) // este código é para você ver a mensagem de erro)
execute a aplicação e faça os testes. Se você fizer exclusivamente desta forma, deve funcionar corretamente.
Espero que tenha ajudado
Thiago
Leonardo <leomarcsys em mcnet.inf.br> wrote:
Mas como faço para conferir isto, pois segui os passos constantes de
alguns livros delphi que possuo, e como é a primeira vez que utilizo a
estrutura SQLDataSet+DSP+CDS então estou bem perdido.
Antes eu usava o GENERATOR com uma StoredProcedure e criava um
componente IBStoredProcedure que era acionado no BeforeInsert do
componente Tabela!
Marcilio Soares wrote:
>Nao seria problema de cache de dados no cliente que ta gerando o erro ?
>No banco pelo que vcs tao falando... ele atualiza ok e da pra conferir isso.
>Nao seria o dataset do client que taria gerando erro, pois pode esta com o
>row de dados velho em relacao ao banco de dados apos o applyupdates?
>
>----- Original Message -----
>From: "Leonardo"
>To: "FireBase"
>Sent: Friday, December 03, 2004 10:48 AM
>Subject: Re: [firebase-br] Trigger + ClientDataSet
>
>
>Pelo que pude notar o erro está acontecendo é devido a TRIGGER não está
>atualizando o campo DESTINATARIO_ID, pois quando dou o
>POST/APPLYYPDATES na primeira vez que ativo o ClientDataSet ele insere o
>registro normalmente, mas quando vou inserir um segundo ao enviar o
>POST/APPLYUPDATES eu recebo um erro de VIOLATION KEY, parece que a
>TRIGGER não fornece uma nova ID para a inserção do segundo registro e
>sim repete a ID fornecida ao primeiro!!!
>
>
>Francisco Thiago Almeida wrote:
>
>
>
>>Não passe -1 no applyupdates.. Pode ser que os erros estejam acontecendo
>>
>>
>sim.. mas a aplicaçao não os está devolvendo pra você.
>
>
>>Depois de ler o script da trigger, eu creio que esteja acontecendo o
>>
>>
>seguinte:
>
>
>>Voce está passando um valor padrão para o campo Destinatario (seja null,
>>
>>
>zero, ou -1).. na primeira vez que você incluir, tudo bem. mas na segunda dá
>erro de chave e como o applyupdates está com -1, ele não retorna erro..
>
>
>>Leia o outro email que mandei e vê se resolve....
>>
>>Espero estar ajudando
>>
>>Thiago
>>
>>
>>
>>
>>
>>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
-----------------------------------------------
Francisco Thiago de Almeida
MRL Consultoria em Informática
Divisão Desenvolvimento e Banco de Dados
Franca/SP
__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger
http://br.download.yahoo.com/messenger/
Mais detalhes sobre a lista de discussão lista