Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

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

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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é

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.