Fórum Nomes duplicados.... #239222

23/06/2004

0

pessoal sou novo em Delphi e n tenho muito material p estudo...
estou precisando de uma rotina q n deixe gravar nomes iguais na Tabela, alguem sabe onde posso encontrar ou ainda se tiver agradeço muito :)!!! valews


Hviana

Hviana

Responder

Posts

23/06/2004

Repa

P/ fazer a verificação eu faço a comparação entre o edit (que foi digitado) e o dbedit(que está na tabela)..
Por ex:
If ((tabela.FindKey([UpperCase(trim(Editnome.Text))]) = True)
then
begin
showmessage(´Já existe o nome na tabela´);
end;

Mas, é muito pouco provável que não existam pessoas com o mesmo nome, então sugiro que use + um campo p/ comparação, por exemplo um documento ou o nome da mãe.


Responder

Gostei + 0

23/06/2004

Motta

Ou solução (mais onerosa) é criar um índice único na tabela, a criação depende do bd, mas o índice agiliza a busca pelo nome.


Responder

Gostei + 0

25/06/2004

Hviana

Ou solução (mais onerosa) é criar um índice único na tabela, a criação depende do bd, mas o índice agiliza a busca pelo nome.


blz...mais como eu traduzo essa messagem p/ o usuário???


Responder

Gostei + 0

25/06/2004

Reginaldo174

vc acha que pode existir dois : joão da silva ??
Re: é claro que sim !
Então acho que voce deve usar uma referencia que não exista outra iguais por exemplo o CPF, CNPJ, Identidade, etc...

Dessa forma sua aplicação ficará mais consistente.

Já que está iniciando vá ao www.superdownloads.com.br e procure por Deephi.exe . É um arquivo com 1.600 dicas de delphi que funcionam.


Responder

Gostei + 0

25/06/2004

Hviana

vc acha que pode existir dois : joão da silva ?? Re: é claro que sim ! Então acho que voce deve usar uma referencia que não exista outra iguais por exemplo o CPF, CNPJ, Identidade, etc... Dessa forma sua aplicação ficará mais consistente. Já que está iniciando vá ao www.superdownloads.com.br e procure por Deephi.exe . É um arquivo com 1.600 dicas de delphi que funcionam.



Qndo eu disse ´nome´ na verdade quis generalizar...no meu caso especifico é um cadastro de músicas q n pode ter musicas cadastradas c mesmo nome 2 vezes!!!


Responder

Gostei + 0

26/06/2004

Motta

blz...mais como eu traduzo essa messagem p/ o usuário???

qdo se grava é o indice é violado uma mensagem de erro retorna.

faço assim

try
...
excepty
on e:exception do
_begin
____if pos (e.message,´idx_xpto´) > 0 then
_______ShowMessage(´Nome Duplicado´);
_end;
end;


idx_xpto é o nome do indice violado, no Oracle funciona assim ele retorna o objeto que gerou o erro,creioque funciona em outros bd´s , até os mais simples tipo paradox.

nao tenho certeza da sintaxe da function pos, nunca lembro a ordem ....


Responder

Gostei + 0

26/06/2004

Hviana

blz...mais como eu traduzo essa messagem p/ o usuário??? qdo se grava é o indice é violado uma mensagem de erro retorna. faço assim try ... excepty on e:exception do _begin ____if pos (e.message,´idx_xpto´) > 0 then _______ShowMessage(´Nome Duplicado´); _end; end; idx_xpto é o nome do indice violado, no Oracle funciona assim ele retorna o objeto que gerou o erro,creioque funciona em outros bd´s , até os mais simples tipo paradox. nao tenho certeza da sintaxe da function pos, nunca lembro a ordem ....


valew galera...vc´s do forun desenrolam tudo...a união faz a força heheh :idea:


Responder

Gostei + 0

26/06/2004

Rm

Tive a necessidade disto a pouco tempo.Sem pesquisar soluções prontas simplesmente fiz O QUE SEGUE. Experimente é bem pratico. Deleta o registro igual logo apos que inserido e seleciona o já existente.

Para fazer somente primeira letra maisucula SEMPRE.
procedure TForm1.Table3BeforePost(DataSet: TDataSet);
begin
if table3combina.value<> ´´ then begin
table3.Edit;
table3combina.value:= UpperCase(Copy(table3combina.value,1,1))+LowerCase(Copy(table3combina.value,2,Length(table3combina.value)));
end;
end;

Para localizar e deletar registros IGUAIS por locate (locaseInsensitive)
TABLE3COMBINA.VALUE É O REGISTRO QUE SERIA PARA TI ´MUSICA´.

procedure TForm1.Table3AfterPost(DataSet: TDataSet);
VAR
s:string;
r:integer;
begin
s:=table3combina.value;
r:=table3.RecNo;
Table3.Locate(´combina´,s,[LoCaseInsensitive]);

if table3.RecNo<>r then begin
if table3combina.value=s then begin
showmessage (´Registro já existe!!Duplicação foi deletada!Registro já existente está selecionado.´);
table3.recno:=r;
table3.delete;
Table3.Locate(´combina´,s,[LoCaseInsensitive]);
end;
end;

end;


SDS/RM


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar