ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Pesquisar Antes de Cadastrar

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
djmusic
Novato
Novato


Registrado: Terça-Feira, 29 de Março de 2005
Mensagens: 60

MensagemEnviada: Ter Out 25, 2005 12:07 am    Assunto: Pesquisar Antes de Cadastrar Responder com Citação

opá e ai..
então eu estou desenvolvendo um projetinho com banco em paradox, e quero que antede de pesquisar realizer uma pesquisa para ver se tem dado cadastrado para não dar duplicidade, eu montei este código mas não faz o que eu quero. veja :
if Table1.Locate(\'TACE\',dbeTace.Text,[]) then
begin
Application.MessageBox(\'MATRICULA já Existe Cadastrado!\',\'Cadastro Agenda Básica - Consórcio ETS/OESTE\',MB_ok + MB_ICONINFORMATION);
if (Table1.Locate(\'Telefone\',dbeTelefone.Text,[])) then
begin
Application.MessageBox(\'Telefone já Existe Cadastrado!!\',\'Cadastro Agenda Básica - Consórcio ETS/OESTE\',MB_ok + MB_ICONINFORMATION);
end
else
begin
table1.Last;
table1.Append;
end;
end;


quero que funcione este esquema de pesquisa se já existir cadastrado então apareça a mensagem.. se não estiver cadastrado.. então cadastre...

vale.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felinto
Aprendiz
Aprendiz


Registrado: Sábado, 6 de Agosto de 2005
Mensagens: 123

MensagemEnviada: Ter Out 25, 2005 1:11 am    Assunto: Pesquisar Antes de Cadastrar Responder com Citação

Dj,

O paradox para aceitar ídices secundários exige uma chave primária.

Chaves primárias (matricula pode ser) se houver uma entrada igual é gerado um erro de Key violation. Voce pode tratar o erro para melhorar a mensagem no evento OnPostError da tabela.

Os demais campos use o evento OnValidate e pesquise lá. Ex:

With TQuery.Create(Application) do
try
Select Telefone from Clientes where Telefone = Razz\'
ParamByName(\'P1\').asString := Datafield.Value;
Open;
if Fields[0].Value <> null then
Raise.EDatabaseError.Create(\'Telefone já cadastrado\');
finally
close
free;
end;


Nota: Do jeito que está só funciona para Inclusões. Nas alterações a quuery vai achar o próprio registro. Fica como exercício testar a chave primária

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Hades
Novato
Novato


Registrado: Segunda-Feira, 18 de Abril de 2005
Mensagens: 16

MensagemEnviada: Ter Out 25, 2005 12:49 pm    Assunto: Pesquisar Antes de Cadastrar Responder com Citação

[quote] var
cod :string;
begin
if (trim(MaskEdit1.Text)<>\'\')and (opcao =1) then
begin
cod := MaskEdit1.Text;
if DM.ClientDataSet_Funcionarios.FindKey([cod]) then
begin
ShowMessage(\'Número já cadastrado! \');
LimpaTela;
MaskEdit1.SetFocus;
end
else
begin
DM.ClientDataSet_Funcionarios.Insert;
MaskEdit1.ReadOnly := True;
end;
end;
end;

O LimpaTela e uma Procedure adicionada na { Private declarations } para se os numero já existir ele limpa todos os outros,DBEdit. Os outros DBEdits mostram os dados do funcionario que já existe, e depois com o LimpaTela e da um (Clear) nos outros DBedits.


ex:
private
{ Private declarations }
procedure LimpaTela;
public
{ Public declarations }
end;
.
.
.
var
Frm_Funcionario: TFrm_Funcionario;
opcao : integer;
.
.
procedure TFrm_Funcionario.LimpaTela;
begin
DBEdit1.Clear;
DBEdit2.Clear;
DBEdit3.Clear;
end;


procedure TFrm_Funcionario.MaskEdit1Exit(Sender: TObject);
var
cod :string;
begin
if (trim(MaskEdit1.Text)<>\'\')and (opcao =1) then
begin
cod := MaskEdit1.Text;
if DM.ClientDataSet_Funcionarios.FindKey([cod]) then
begin
ShowMessage(\'Número já cadastrado! \');
LimpaTela;
MaskEdit1.SetFocus;
end
else
begin
DM.ClientDataSet_Funcionarios.Insert;
MaskEdit1.ReadOnly := True;
end;
end;
end;

O comando todo só vai funcionar direito se vc tiver uma chave primaria declarada.[/quote]

PS : Eu uso essa linha de codigo para verificar se a chave primaria já existe. Eu coloco no evento Onexit do maskedit mais vc pode adaptar para sua pesquisa. funciona perfeitamente.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB