Verificação de CPF
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
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
Curtidas 0
Respostas
Gameiro
11/06/2005
vc esta fechando o sqldatset antes de passar o commandtext?
eu sempre uso assim
Vc pode dar open no clientdatset o sqldataset.
não sei se resolve.
ate mais
:)
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
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!!!
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