quinta-feira, 3 de abril de 2008

ClientDataSet: Heaven or hell?

Para todos os delpheiros de plantão, essa classe é com certeza a mais idolatrada (tanto que a microsoft copiou.. hehehe)

Um componente capaz de manter em memória um "micro bd", com indices, ordenação, agrupamento, etc.

Mas, apesar dos pesares, não é perfeito. Já encontrei alguns empecilhos com esse cara e de vez em quando, quando lembrar de algum, posto aqui.

1 - Em caso de erro de um reconcile erro, ele engole a exceção e passa direto como se nada tivesse acontecido. :)

2 - Aggregate fields: nunca tente interpretá-los como AsFloat. Sempre da problema. Faça um cast StrToFloat e trate valores como '' para conseguir o que quer.

3 - Utilizando o commandtext do componente: você pode passar parâmetros no commandtext e depois dar um fetchparams para criá-lo. Mas, se você troca o commandtext, dê um clear nos params da query senão da m#r#a!!


Bem, num lembro mais de um... Quando aparecer eu posto

3 comentários:

Nilton Cavalini disse...

Alexandre,

Um componente com um nome tão estranho não poderia ser tão bom. hehehe.
Se eu tiver mais um filho, vou chamar de Agregate Cavalini hehehe.

Unknown disse...

Acho que é mais heaven do que hell. O detalhe e que ele possui algumas características particulares que não nos atemos e quando vai ver a "m..." tá feita. Como todo componente há de se ter um bom conhecimento para utilizá-lo bem, senão, mete-se os pés pelas mãos mesmo. Poderia ser melhor? Claro, como tudo na vida, nada é perfeito... eheh

Blog do Paixão disse...

Alexandre,

Sobre o item 1, já vi algo parecido, porém havia um componente TAplicationEvents na aplicação em que todas exceções eram tratadas no evento OnException, desta forma todos exceptions fora dali eram "engolidos".