Função para validar se o nome vai duplicar no banco de dados

As vezes precisamos validar a inclusão dos dados evitando que nomes sejam cadastrados em duplicidade nos nossos sistemas.

abaixo estou descrevendo uma rotina de validação de nomes duplicados na tabela de editoras de um sistema de biblioteca, usando a criação dinamica de objetos, e o sql para conseguir validar se o nome da editora ja foi utilizado.

incluir na uses as UNITS DB e ADODB;

Definir a função em private:
function ValidaSeNomeEDuplicado(intId: integer; strNome:string):Boolean;

instanciar com CTRL+ SHIFT + C

function Tfrm_cad_editora.ValidaSeNomeEDuplicado(intId:Integer; strNome: string): Boolean;
var
DtsAux:TADODataSet; //define manualmente um dataset auxiliar
bolResultado:Boolean;
begin
bolResultado:= False;  //inicio o retorno como falso
DtsAux:=TADODataSet.Create(nil); //estou instanciondo o objeto na memoria com vazio
DtsAux.Connection:= DataModule1.conexao;//configura a conexao
DtsAux.CommandText:= ‘Select Codigo, Nome from Editora’ +
‘Where Codigo <> :Codigo and ‘ +
‘Nome = :Nome’; //faz a consulta sql para saber se
//o nome ta duplicado
DtsAux.Parameters[0].Value:= intId; //passa o nome que sera consultado
DtsAux.Parameters[1].Value:= strNome; //passa o nome que sera consultado
DtsAux.Open;//abro a consulta sql
if DtsAux.RecordCount > 0 then //pergunto se a consulta encontrou o nome no banco de dados
Begin
ShowMessage(‘O nome da editora ja esta cadastrado no sistema com o codigo’ +
DtsAux.FieldByName(‘Codigo’).AsString );
bolResultado:= True; //mudo o retorno para true para dizer que
// o nome ja esta castrado(Duplicado)
End;
DtsAux.Close;//fecha a conexao
DtsAux.Free; //destroi o objeto da memória
Result:= bolResultado;
end;

//usar a função no botão salvar e se quiser tambem no evento onexit da caixa Nome

exemplo:

procedure Tfrm_cad_editora.but_salvarClick(Sender: TObject);
begin
if ValidaSeNomeEDuplicado(DataModule1.dts_editoraCodigo.AsInteger, DataModule1.dts_editoraNome.AsString) = True then
begin
edit_nome.SetFocus;
Exit;
end;
  DataModule1.dts_editora.Post;
end;

Teste ai e qualquer probema manda as duvidas no meu e-mail mn_ss@yahoo.com.br

abraços e ate a próxima

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s