[firebase-br] Mostrar Autoincremento no IB

RedDevil reddevil em reddevil.eti.br
Sex Abr 29 10:41:47 -03 2005


Segundo o que, em um futuro muito distante, dirao as lendas, em Sex,
2005-04-29 às 09:12, Marcelo Nunes de Oliveira escreveu:
> Olá Pessoal!
> Sou novato aqui e no IB e epero que alguém possa tirar minhas dúvidas:
> 1-Estou usando os Componentes do IBX do Delphi, criei uma trigger para Autoincremento, só que ela não funciona, estou usando o IBDatabase, IBTransAction, IBTable, IBQuery. Uso o IBTable para cadastrar dados, uso o comando Insert para inserir e Post para gravar, depois CommitRetaining no Transaction, mas dá erro, dizendo que o campo que deve ser chave primária não existe, ou seja, ele fica nulo, não incrementa nada!! 
> O Forces Writes está Enable, IB 6.5 e IB 6.0, Win98 e WinXP, o código da Trigger eu achei no Firebase.com.br.
> Fiz um teste fechando e abrindo a tabela logo após o Commit aí funcionou, mas isso é horrível, pois a Tabela abre mas náo no ultimo registro gravado, e preciso justamente do último registro gravado!! AH, também funciona só com o CommitRetaining, quer dizer, não da erro de chave primária, mas não aparece o numero do registro atual, o campo fica vazio!!!
> Como devo proceder? estou usando os componentes corretos?
> Desde já, muito grato!!!

ola Marcelo.
tudo bem contigo?
sincerely, espero que sim.

se voce puder fazer o que voce faz com uma IBTable, nessa tua historia
ae, com uma IBQuery, eu te aconselharia a dar preferencia para a
IBQuery, pois alem do uso de Queries ser mais recomendado quando se
trabalha com SGBD, na IBQuery voce podera encontrar a soluçao para essa
tua parada ae...

eu nao conheço muito bem os componentes do IBX, mas no IBObjects, a
suite de componentes que eu uso, as Queries possuem uma propriedade
chamada CommitAction... procure essa propriedade na tua IBQuery, se ela
existir, deixe a CommitAction como "caInvalidateCursor", pois ae, apos
voce inserir um registro na tua tabela atraves da IBQuery, quando voce
der o Commit, vai ser a mesma coisa do que voce commitar, fechar e abrir
a Query...

usar CommitRetaining eh suicidio, pois isso commita as informaçoes, mas
deixa a transaçao aberta, e uma transaçao aberta por muito tempo pode
matar a performance de um sistema... o que nao acontece com um Commit...
e se a IBQuery estiver com a propriedade CommitAction devidamente
configurada, o efeito aparente sera o mesmo...

a proposito, seja bem vindo ao barco... tenha a certeza de que voce vai
aprender muito com a galera desta lista...
;o)


[]s
força sempre!
ate +++

Luiz "RedDevil" Stefanski
http://www.RedDevil.eti.br - Delphi Powered By IBObjects






Mais detalhes sobre a lista de discussão lista