Verificação de CPF

Delphi

11/06/2005

Olá galera, blz?

Tenho uma tela de cadastro onde, o campo CPF, ao perder o foco, só é aceito qdo não for repetido. Tentei algumas maneiras, mas não obtive sucesso.

No evento onexit do campo cpf, coloquei da seguinte forma:

with dm.cdsCpf do
begin
if not dm.cdsCpf.IsEmpty then
begin
MessageDlg(´Ja existe um cliente com este CPF. Por favor, digite o correto.´, mtinformation, [mbOk], 0);
mskedtCpf.SetFocus;
end

Já tentei tbem usando o cdsClientes(um outro clientdataset que criei):

dm.sqlClientes.CommandText := ´select CPF from clientes where CPF =:CPF´;
if not dm.cdsclientes.IsEmpty then
begin
MessageDlg(´Ja existe um cliente com este CPF. Por favor, digite o correto.´, mtinformation, [mbOk], 0);
mskedtCpf.SetFocus;
end

O que acontece é que está verificando se a tabela está vazia, e não se foi digitado outro cpf igual, visto que tenho o sqlCpf (que é o sqlclientdataset) que tá definido como select CPF from clientes where CPF =:CPF), com o parametro string, aplicado no clientdaset através do fetchparams.

Acho que ele não está executando a sql.

Se alguem puder me ajudar, ficarei grato.


[]´s

Rogério


Roger1976

Roger1976

Curtidas 0

Respostas

Gameiro

Gameiro

11/06/2005

vc esta fechando o sqldatset antes de passar o commandtext?

eu sempre uso assim

clientdataset.close;
sqldatset.close;
sqldatset.commandtext:=´´select CPF from clientes where CPF =:CPF´
sqldataset.parambyname(´cpf´).asstring:=mskedtCpf.text;
sqldatset.open;



Vc pode dar open no clientdatset o sqldataset.

não sei se resolve.


ate mais

:)


GOSTEI 0
Roger1976

Roger1976

11/06/2005

Kra, eu já tinha feito de várias formas, mas a sua dica me mostrou algo que não tinha percebido... Ficou assim:

with dm.cdsCpf do
begin
Close;
Commandtext := ´select CPF from clientes where CPF =:CPF´;
params.ParamByName(´CPF´).AsString := mskedtCpf.text;
open;

if not dm.cdsCpf.IsEmpty then
begin
MessageDlg(´Ja existe um cliente com este CPF. Por favor, digite o correto.´, mtError, [mbOk], 0);
mskedtCpf.SetFocus;
end
end

Muito obrigado!!!


GOSTEI 0
POSTAR