Integridade de Campos

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Integridade de Campos

Mensagem por asimoes »

Olá Colegas Clippeiros,

Alguém tem alguma rotina que verifique se o conteúdo do campo corresponde ao dado gravado.

Tenho uma tabela que apresentou lixo em um campo numérico, data e logico.

e isso me deixou muito preocupado.

Agradeço,

Clip []´s
:))
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eu tenho um campo em cada registro onde gravo o CRC32 do registro todo. Quando acesso o registro, verifico. Se não bater, já solto o alerto pro usuário e pára tudo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Maligno

Mas como eu faço isso?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Transforme todos os campos em string, some tudo e use minha função de cálculo do CRC32, disponível na minha página.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mensagem por asimoes »

Maligno,

Baixei sua função para testar.
Quando o campo for lógico e memo como fica?

Transformar number e data para string sem problemas mas lógico e memo...?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Se for lógico, converta para strings: "T" se TRUE ou "F" para FALSE. Ou qualquer outra coisa que possa identificar o valor. Só tem dois mesmo.
Quanto ao memo, coloque como "U", por exemplo, pra identificar como indefinido. O conteúdo do memo em si já é outra história. Não uso memo. Aliás, nunca usei. Mas também não é complicado. Você poderia, por exemplo, criar outro campo de CRC para guardar o hash do memo. Na aplicação, ao recuperar o memo, você compara e pronto. Só dá mais trabalho, mas o princípio não muda.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Maligno escreveu:...use minha função de cálculo do CRC32...
CRC32 é a mesma coisa que MD5???


Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ambos são hash. Mas o MD5 é bem mais complexo e, por isso, mais lento. Ainda assim, o MD5 é o mais utilizado como finger-print de segurança, especialmente na Internet.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Maligno,

Fui dar uma passeada na internet e verifiquei:

1- o CRC32 gera um código com 08 caracteres;

2- o MD5 gera um código com 32 caracteres;

3- A propabilidade do CRC32 gerar um código repetido é mais alta que com o md5. o CRC32 se repetiu 111 vezes em um teste com um milhão de inserções simultaneas. Já o md5 não se repetiu nenhuma vez. ( http://forum.wmonline.com.br/lofiversio ... 74572.html )

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Exatamente por isso o MD5 é o mais utilizado para finger-print em situações que exigem um nível de segurança maior.

Apesar de quê eu uso CRC32 normalmente, sem medo de repetição, em muitas situações. Inclusive como numerador automático de registro. Agora tem um porém: a chance de repetição se tornará tanto maior quanto menor for o tamanho das amostras. Os códigos de numeração que utilizo são pequenos. Então, após gerar o CRC32, faço uma busca pelo índice. Se já existir, repito a geração. Nunca falhou.

Portanto, como o registro de um banco de dados normalmente não é assim tão pequeno, acho o CRC32 bem aceitável. Mas se você ainda assim não se acha confortável pra usá-lo, opte pelo MD5. Também tenho esta função na forma de uma LIB.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder