Fórum Consultar cliente ja cadastrado #194816

13/11/2003

0

Us IB 6 com D6. Como fazer uma rotina que possa verificar se um registro ja esta cadastrado? Se uso locate(impossivel numa arquitetura client/server) fica muito lento. Imagne um banco com 30.000 registro? A resposta deveria vir o mais rapido possivel, tipo no OnExit do DBEdit ou edit, ja vira a msg: ESTE CLIENTE JA ESTA CADASTRADO.


Paulo

Paulo

Responder

Posts

13/11/2003

Delphistar

realmente quando a tabela eh grande o LOCATE eh inviavel, eu uso uma query tipo assim:

select codigo from clientes where codigo = :codigo

eu passo o parametro (codigo que estou buscando), e executo, dai faço a verificacao pela propriedade IsEmpty da query, se = false quer dizer que ja esta cadastrado...


Responder

Gostei + 0

13/11/2003

Celsoctorres

Crie um IBQuery (IBQVerifica) e siga este código:

você pode colocar este código no evento on exit do dbedit:
só lembre-se que quando vc tiver editando é preciso tratar este se não este irá verificar sempre.
Para burlar este problema fiz o seguinte:

1º declarei uma variavel global...

var

editando : Boolean;

depois fiz o seguinte:

no botão inserir

editando:=false; //isso fará com que ele seja verificado...

if editando = false then
begin
with dm1.IBQVerifica do
begin
Close;
SQL.Clear;
SQL.Add(´select ARQUIVO´); //campo que vc quer verificar
SQL.Add(´from PROJETOS´); // tabela
SQL.Add(´where ARQUIVO=´+´´´´+dbnomearquivo.Text+´´´´);
Open;
if dm1.IBQVerifica.IsEmpty then
else
begin
Application.MessageBox(´Projeto já cadastrado!´,´Cadastro de Projetos´,MB_OK + MB_ICONWARNING);
dbndesenho.SetFocus;
end;
end;
end;

nos botões

editar : editando:=true;
salvar: editando:=false;
ou seja, somente no botão editar editando recebe true;

espero ter ajudado...

um abraço


Responder

Gostei + 0

14/11/2003

Mitsalito

:D Desculpa mecher no fonte mas é pouca coisa

if dm1.IBQVerifica.state in [dsEdit] then
begin
with dm1.IBQVerifica do
begin
Close;
SQL.text := ´select Count(campo) ´Qtd´ from tabela Where campo = ´
+ variavel
ExecSql;
Open;
if dm1.IBQVerifica.FieldValues[´Qtd´] = 0 then
begin

end
else
begin
Application.MessageBox(´Projeto já cadastrado!´,´Cadastro de
Projetos´,MB_OK + MB_ICONERROR);
dbndesenho.SetFocus;
end;
end;
end;

e olha pelo lado bom vc ainda vair ter um recordcount via SQL se souber usar vai lhe ser de grande proveito


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar