 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
djmusic Novato

Registrado: Terça-Feira, 29 de Março de 2005 Mensagens: 60
|
Enviada: Ter Out 25, 2005 12:07 am Assunto: Pesquisar Antes de Cadastrar |
|
|
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 |
|
 |
felinto Aprendiz

Registrado: Sábado, 6 de Agosto de 2005 Mensagens: 123
|
Enviada: Ter Out 25, 2005 1:11 am Assunto: Pesquisar Antes de Cadastrar |
|
|
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 = \'
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 |
|
 |
Hades Novato

Registrado: Segunda-Feira, 18 de Abril de 2005 Mensagens: 16
|
Enviada: Ter Out 25, 2005 12:49 pm Assunto: Pesquisar Antes de Cadastrar |
|
|
[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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|