Jump to content
DOUGLASAP

Verificar se nome ja esta cadastrado

Recommended Posts

procedure Tcad_equipamento.SpeedButton2Click(Sender: TObject);
begin
If (DBEdit1.Text = DataModule2.ADOTable_cad_equipamentoEQUIPAMENTO.Value) Then
Begin
showmessage ('Equipamento ja cadastrado');
end
else
Begin
DataModule2.ADOTable_cad_equipamento.Post;
end;
end;


Bom Dia pessoal

Estou querendo verificar se o que foi digitado ja existe na tabela

Meu código ficou assim. . . .

 

 

procedure Tcad_equipamento.SpeedButton2Click(Sender: TObject);
begin
If (DBEdit1.Text = DataModule2.ADOTable_cad_equipamentoEQUIPAMENTO.Value) Then
Begin
showmessage ('Equipamento ja cadastrado');
end
else
Begin
DataModule2.ADOTable_cad_equipamento.Post;
end;
end;
Mas não esta funcionando . . ..
Obrigado galera

Share this post


Link to post
Share on other sites

Olá amigo.

 

Nesse caso, você tem que pesquisar dentro da tabela por registros que já estejam cadastrados.

 

Para isso, utilize o método Locate da seguinte maneira:

 

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTO', DBEdit1.Text, [loCaseInsensitive] ) then

showmessage ('Equipamento ja cadastrado');

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Olá amigo

 

Havia feito isso antes, mas acontece que gera erro

 

 

[Error] Unit5.pas(55): Undeclared identifier: 'loCaseInsensitive'
[Error] Unit5.pas(55): Incompatible types: 'TLocateOption' and 'Integer'
[Fatal Error] Project1.dpr(15): Could not compile used unit 'Unit5.pas'
incompatibilidade de tipo tlocareOption e inteiro . . .
obrigado pela ajuda...

Share this post


Link to post
Share on other sites

Olá amigo.

 

As units DBTables e DB estão declaradas na uses do seu projeto?

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Olá amigo.

 

na unit do form aonde você quer fazer essa pesquisa, logo no início do arquivo deve haver algo semelhante a isso:

 

unit NomeDaSuaUnit;

 

interface

 

uses

É aqui que você tem que ver se existe essas duas unidades declaradas.

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Ola Amigo

 

minha unit esta da seguinte forma

 

 

unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, Grids, DBGrids, StdCtrls, Mask, DBCtrls;
até

Share this post


Link to post
Share on other sites

Olá amigo.

 

Nesse caso, depois do DBCtrls coloque uma virgula e acrescente: DBTables, DB;

 

Recompile sua aplicação e faça o teste.

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites
Ola amigo


O quero q ele faça é se o equipamento estiver cadastrado, ele nao deixe realizar o cadastro para nao ficar com 2 cadastros iguais.


Quando salvo, ele gera a mensagem de ''equipamento ja cadastro'' e mesmo faz o cadastro novamente.


Meu codigo ficou assim :



if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTO', DBEdit1.Text, [loCaseInsensitive] ) then

Begin

showmessage ('Equipamento ja cadastrado');

end

else

begin

DataModule2.ADOTable_cad_equipamento.Post;


end;



obrigado amigo

Share this post


Link to post
Share on other sites

Olá amigo.

 

 

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTO', DBEdit1.Text, [loCaseInsensitive] ) then
Begin
showmessage ('Equipamento ja cadastrado');
Abort;
end;
Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Ola Amigo

 

codigo ficou assim

 

 

 

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTO', DBEdit1.Text, [loCaseInsensitive]) then
Begin
showmessage ('Equipamento ja cadastrado');
Abort;
end
else
begin
DataModule2.ADOTable_cad_equipamento.Post;
end;
DBEdit1.Text := '';
end;
mas ainda continua a mesma coisa.
Ele mostra a mensagem dizendo que ja foi cadastrado e cadastra mesmo assim.
obrigado

Share this post


Link to post
Share on other sites

Olá amigo.

 

Então, mas você tem que pegar o exemplo que te passo e adaptar ao que você precisa, entendeu?

 

Se o registro se encontra em modo de Inserção/Edição e já foi encontrado um equipamento cadastrado, então você tem que desfazer o processo.

 

 

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTO', DBEdit1.Text, [loCaseInsensitive]) then
Begin
Showmessage ('Equipamento ja cadastrado');
DataModule2.ADOTable_cad_equipamento.Cancel;
Abort;
end;
Não sei como você está fazendo, mas antes de mandar incluir/alterar você deve verificar se já existe ou não, se existir o registro, ele vai "Abortar" o processo, não executando mais nada que estiver abaixo dessa condição. Caso contrário, ai sim você faz o processo de inclusão normalmente.
Dica: Comece a desenvolver a "sua" lógica em cima dos exemplos que te mando, do contrário você vai apenas "copiar" e "colar" e não vai encadear seus pensamentos.
Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Olá Amigo,

 

O que estou fazendo é exatamente isso

1º - Verificando se o equipamento esta cadastrado, caso não esteja ele salva o dado.

Coloquei o código no botão salvar.

Meu código ficou desda maneira.

 

procedure Tcad_equipamento.SpeedButton2Click(Sender: TObject);
begin
if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTOS', DBEdit1.Text, [loCaseInsensitive]) then
Begin
showmessage ('Equipamento ja cadastrado');
DataModule2.ADOTable_cad_funcionario.Cancel;
abort;
end
else
begin
DataModule2.ADOTable_cad_equipamento.Post;
end;
DBEdit1.Text := '';

end;

 

 

Acontece que tendo o dado cadastrado ou não ele mostra a mensagem de ''Equipamento ja Cadastrado" e salva o dado, tendo o equipamento cadastrado ou não.

 

Pela lógica

IF THEN ELSE

 

SE (for verdade) faça

isso

 

 

Como lhe disse amigo, sou novo em delphi.

Estou cursando 2 ano de sistema de informação.

Irei começar e ver delphi agora, antes estava vendo pascal que sei que é a base do delphi.

Através de suas dicas consegui a fazer muitas coisas.

Não estou copiando e colando. E sim o que quero é aprender a usar os comandos . . .

 

 

 



amigo desculpe postei sem concluir meu raciocínio

 

 

Pela lógica

IF THEN ELSE

 

SE (for verdade) faça

isso

caso contrário

faça isso

 

O que não estou conseguindo entender é o seguinte

Estou dizendo para ele verificar o dado existe na minha tabela

se existir ele mostra mensagem dizendo que já existe.

se não salva o dado.

 

Obrigado pela atenção amigo

Share this post


Link to post
Share on other sites

Olá amigo.

 

Vamos lá...

 

No botão incluir, como você está fazendo?

 

Por que pergunto isso. Eu já vi casos onde na hora de incluir um registro, a pessoa costumava fazer um:

 

Tabela.Append;

Tabela.Post;

Tabela.Edit;

 

Isso era feito justamente para poder gerar um número de controle sequencial para o cadastro dela.

 

Se você estiver fazendo sua inclusão seguindo esse mesmo princípio, provavelmente seja por isso que o registro ainda continue "salvo", uma vez que na verdade ele já foi gravado na tabela, apenas entrou em edição para você concluir o restante do processo.

 

Nessa situação, você pode substituir a instrução: DataModule2.ADOTable_cad_funcionario.Cancel; por DataModule2.ADOTable_cad_funcionario.Delete;

 

Agora, se o modo que você estiver fazendo sua inclusão for diferente disso que te passei, ai eu teria que analisar todo o fonte desse projeto para poder entender o que esta fazendo ele obter esse comportamento.

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Olá amigo.

 

Depende do tipo de aplicação que você esteja desenvolvendo. Para o seu caso, a forma como você está fazendo atende muito bem. O que você precisa apenas é definir a forma de tratar algumas situações que seu programa venha apresentar, somente isso.

 

No botão incluir, como você está fazendo?

 

Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Ola Amigo

 

No botão novo utilizo DataModule2.ADOTable_cad_equipamento.Insert;

 

No botão salvar

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTOS', DBEdit1.Text, [loCaseInsensitive]) then

Begin
showmessage ('Equipamento ja cadastrado');
DataModule2.ADOTable_cad_funcionario.Cancel;
end
else
begin
DataModule2.ADOTable_cad_equipamento.Post;
end;
Amigo pelo fato de eu estar utilizando SpeedButton tem algum problema ??
Obrigado

Share this post


Link to post
Share on other sites

Olá amigo.

 

Não, SpeedButton não influencia em nada.

 

Acredito que agora compreendi o problema. Você tem que fazer o seguinte:

 

No campo aonde você digita o equipamento, no evento OnExit ( do seu DBEdit1 ), você coloca a verificação dessa maneira:

 

 

if DataModule2.ADOTable_cad_equipamento.Locate( 'EQUIPAMENTOS', DBEdit1.Text, [loCaseInsensitive]) then

Begin
showmessage ('Equipamento ja cadastrado');
Abort;
end;
Agora vai funcionar.
No botão salvar deixe apenas o método: DataModule2.ADOTable_cad_equipamento.Post;
Se houver algum equipamento cadastrado, então ele vai mostrar a mensagem e vai abortar não executando mais nada.
Até a próxima. :thumbsup:

Share this post


Link to post
Share on other sites

Bom Dia Amigo

 

Da forma em que me passou só funciona se em der um Tab e ir para outro componente.

Mas na verdade nesse form específico eu só tenho um Edit, teoricamente o usuário digitará na Edit e Clicar em Salvar direto.

No meu entendimento o código teria que estar no Button salvar.

Não consegui resolver ainda. . . .

 

 

Obrigado amigo

Share this post


Link to post
Share on other sites

Olá amigo.

 

Geralmente, eu trato em duas situações:

 

Primeira

 

Ao sair do campo "como você fez conforme eu sugeri";

 

Segunda

 

Ao terminar de digitar, pressionando a tecla "Enter" sobre o campo;

 

Eu procuro tratar as informações sempre antes de dar um "Post/Commit" no banco de dados, assim evito alguns problemas.

 

*Dica - Ao invés de utilizar o método "Insert", utilize o método "Append" para realizar a inclusão dos registros. A diferença entre eles eu te expliquei em outro tópico.

 

Até a próxima. :thumbsup:

Edited by Eisenheim

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.