Quanto a alterações...

Nunca faça nada na camada de acesso ao banco de dados. Faça no CDS. Não tem 
porque você gerar um Delete/Update, se o provider faz justamente isso por 
você...


Quanto a "campos que já existem"... Você tem algumas soluções...
1 - Cria um índice único para o campo.. ai quando você tentar gravar no 
banco, ele vai reclamar da duplicidade
2- Checar via Trigger
3- Fazer um select

Eu prefiro usar os índices/constraints para esse tipo de checagem... Repare 
apenas que você só vai validar as informações quando o usuário tentar gravar 
todos os dados... Ou seja... O cara vai digitar tudo e só quando ele 
resolver salvar, vai ver que tal campo está errado. Ai você vai pensar "Ah, 
o select então seria o melhor"... Mas e se o usuário, só de sacanagem, ficar 
entrando e saindo do campo? Ficar mudando o valor? Enfim, executar um milhão 
de vezes seguidas o evento que dispara o teu select? Você vai ter uma queda 
de performance... e vários select's desnecessários serão gerados...
E se você for mais radical vai falar: "Problema dele" (o meu antigo patrão 
falou isso pra mim)... Ao contrário.. problema seu... O sistema funcionar, e 
funcionar bem, e responsabilidade do programador... e não do usuário...

Espero ter ajudado


Francisco Thiago de Almeida
Enter&Plug Sistemas
Divisão: Desenvolvimento / Banco de dados
Franca - SP




----- Original Message ----- 
From: "Evolution" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Tuesday, July 26, 2005 7:18 PM
Subject: Re: [delphi-br] ClientDataSet x FindKey, como otimizar ?


> Olha o que vc quer fazer fica meio difícil, ainda mais se for utilizar
> como PK(Chave primária) o generator, pois desta forma vc só vai ficar
> sabendo se houve a violação a chave depois que gravar no banco.
> O que eu costumo fazer é definir Triggers onde nestas eu checo a
> duplicidade em outros campos, por exemplo 2 clientes com o mesmo cgc.
>
> Fausto
>
> dprogrammer escreveu:
>> HI,
>>
>> tudo bom camaradas
>>
>> tou na fase de migrar meus sistemas para esse novo esquema usando
>> ClientDataSet com DBExpress
>>
>> quando usava TTable sempre usei FindKey
>>
>> mas já vi que vou ter que mudar essa filosofia, e usar uma função 
>> generica
>> para localizar, que eu passe a SQL e a Condição para essa função
>>
>> mas eu gostaria já de fazer um lance legalzinho, e gostaria de algumas
>> dicas sobre o assunto, de como realmente proceder quando eu quiser testar
>> se um registro existe.
>>
>> ou para incluir e deleter eu não deva usar o CDS e sim o SQLDataSet
>> somente, sem provider e cds ?
>>
>> ou o mais indicado mesmo é ao invés de usar dataset.delete, localizando
>> antes esse registro, ou já ir deletando usando o comando SQL,  delete 
>> from ?
>>
>> desde já agardeço
>>
>>
>> ps: é que nem rolou por aí, antes eu tinha pressão de chefe e num dava 
>> para
>> refinar muito, mas hj tou em casa, e agora tou estudando mais, hehehe
>>
>>
>> Intel +
>>
>> Visitem meu forum,  tem download lá, conteúdo
>> http://dprogrammer.cetasistemas.com.br/forum
>> Programação, Banco de dados, Etc.
>>
>> Paulo Alexsandro - Maceió/Alagoas
>> Programador - Delphi/NS Basic
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>
>
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
> http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
> [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
>
> -- 
> No virus found in this incoming message.
> Checked by AVG Anti-Virus.
> Version: 7.0.338 / Virus Database: 267.9.5/58 - Release Date: 25/07/2005
>
> 


        
        
                
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a