Mensagem de Registro Existente

Delphi

30/11/2003

Por favor se alguem puder me ajudar eu vou ficar muito grata!
Tenho um dbedit para cadastrar o nome do cliente, e o campo cliente está como chave primária na minha tabela do paradox, então se eu for incluir um cliente que já exista quero que quando eu aperto o botão salvar me apareça a mensagem dizendo que o cliente ja está cadastrado, e não aquele erro do delphi...
Por favor me ajudem!!!


Tania_mara

Tania_mara

Curtidas 0

Respostas

Vinciguerra

Vinciguerra

30/11/2003

Tania,

Não sei se entendi direito a tua dúvida, mas...
Não aconselho usar o campo nome do cliente como chave primária, melhor seria ter um índice numérico.
No seu caso, o que poderia se fazer é um laço que percorresse toda a tua tabela testando o nome que você está incluindo com os que já estão cadastrados. Caso o nome já estaja cadastrado então faça mostrar a mensagem de que ele já existe.
Acredito que o melhor evento para fazer essa programação seria no ´Before Post´ da tabela no DataModule.
Se não fui muito claro, mande-me um e-mail, ok?

Boa sorte.


GOSTEI 0
Celsoctorres

Celsoctorres

30/11/2003

Olá,

antes de mais nada eu uso o interbase e não paradox, mas o código abaixo deve ajudá-la....



procedure VerRegistro(campo,tabela:string;mensagem,titulo:PANSichar;DBVerifica,DBSetFocus:TDBEdit);
begin
if editando = false then
begin
with dm1.IBQVerifica do
begin
Close;
SQL.Clear;
SQL.Add(´select ´ + campo + ´ from ´ + tabela + ´ where ´ + campo+ ´=´+´´´´+DBVerifica.text+´´´´);
Active:=true;
Open;
if dm1.IBQVerifica.IsEmpty then
else
begin
Application.MessageBox(mensagem,titulo,MB_OK + MB_ICONWARNING);
DBSetFocus.SetFocus;
end;
end;
end;
end;

Este procedimento vc pode colocar em uma unit e usá-la como padrão...

explicando:

campo: seria o campo o qual é sua chave primária, ou seja, cliente, lá do banco de dados.
tabela: deve ser da sua tabela cliente,
mensagem: seria como o nome diz a mensagem que irá exibir... ´cliente já cadastrado´
título: seria o título do form: ´Cliente´
DBVerifica seria o campo o onde esta a sua chave primária,
DBsetfocus seria o campo que vc gostaria de focar ao verificar se o registro é existente...

um exemplo...

procedure TFCad_ferrite.dbfer_pesoEnter(Sender: TObject);
begin
VerRegistro(´FER_COD´,´FERRITE´,´Ferrite já cadastrado´,´Ferrite´,dbfer_cod,dbfer_cod);
end;

FER_COD é minha chave primária,
FERRITE, é o nome da tabela,
Ferrite já cadastrado é a mensagem,
Ferrite é o título,
dbfer_cod, é onde esta minha chave primária,
dbfer_cod é o objeto que quero focar...

lembro que isso é para o banco interbase... vc pode alterar o código para paradox...

mais uma coisinha... porque vc não usa Interbase ao invés de paradox? eu já usava paradox mas minhas aplicações ficaram bem melhor quando passei a usar interbase,


GOSTEI 0
Nigro

Nigro

30/11/2003

Todas as mensagens acima são válidas, mas somente para dar uma opção mais simples aqui vai...
No evento onPost Error da sua tabela, coloque:
MessageDlg(´Erro... Registrto já existente!´, mtError, [mbok], 0);
Cancel;


GOSTEI 0
POSTAR