Fórum Evento DBGrid #371878
02/07/2009
0
Para evitar cadastrar a mesma pessoa duas vezes nesta tabela, faço uma filtragem da seguinte forma:
Tenho um Edit para digitar o NOME e um DBGrid que vai filtrando dentre os nomes já cadastrados, conforme o nome que digita-se no Edit, pois será através do Dbgrid que irei decidir se será um novo registro, uma alteração ou uma inclusão.
A minha dúvida é qual o evento, ou outra opção que verifica quando o DBGrid fica vazio, pois neste momento terei que habilitar o botão NOVO.
Utilizo o Delphi 6 , o banco é ACCES e uso acesso é via ADO.
Espero que tenham entendido, e me ajudem, pois ainda não domino totalmente o DELPHI.
Edilsonlima
Curtir tópico
+ 0Posts
02/07/2009
Osocram
e nele vc faz a sua pesquisa e ve se existe ou não
Agora uma duvida sobre o que vc esta fazendo, no mundo existe pessoas com o mesmo nome. Por exemplo José da Silva, João da Silva... Talvez vc esteja validando o campo errado.
Gostei + 0
02/07/2009
Edilsonlima
Na verdade essa tabela cadastra processos e existe um Nº DE PROCESSO que também é visualizado junto com o NOME no DBGrid.
Gostei + 0
02/07/2009
Lightshine
O nosso amigo osocram levantou uma situação comum e corriqueira, a questão dos homonimos. Acredito que uma validação por algum número de documento deixaria seu sistema mais preciso. O documento que eu aconselharia seria o CPF. Todo mundo tem, é de abrangência nacional e é impossivel existir duas pessoas com o mesmo CPF.
Imagine você validando por nome, e acontece de ter no seu cadastro uma pessoa chamada ´José da Silva´, e algum tempo depois precisa cadastrar outra pessoa com o mesmo nome? Imagine a salada que isso poderia virar? Nessa situação você ao editar o registro perderia os dados do primeiro cadastro, ou o registro poderia estar poluído com informações misturadas das duas pessoas. Isso tiraria a credibilidade do seu sistema.
Passa a estrutura da sua tabela para que eu possa tentar lhe ajudar.
Lightshine
Gostei + 0
02/07/2009
Edilsonlima
Amigos
[color=red:16edc49bf6]A minha dúvida é qual o evento, ou outra opção que verifica quando o DBGrid fica vazio, pois neste momento terei que habilitar o botão NOVO.
só isso[/color:16edc49bf6]
Se puderem ajudar,
Não poso validar nada (só visual) o campo unico da tabela seria o N_PROCESSO mas tem vários formatos.
Gostei + 0
02/07/2009
Lightshine
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Cadastro.Close;
Cadastro.SQL.Clear;
Cadastro.SQL.Add(´Select * from SuaTabela´);
Cadastro.SQL.Add(´where Campo like ´´´+edit1.text+´¬´´ ´);
Cadastro.Open;
if Cadastro.RecordCount = 0 then
begin
// Tabela vazia
end else
begin
// Contem registros
end;
end;
Lembrando que:
1 - Se não retornou na consulta nenhum registro, logo o grid está vazio
2 - Cadastro é o nome do componente ADOQuery que você está utilizando.
Gostei + 0
02/07/2009
Danielrsanches
if Query.isempty then
showmessage(´vazio´)
else
showmessage(´não está vazio´);
abraços !!!
Gostei + 0
02/07/2009
Edilsonlima
Obrigado turma,
Testei as duas formas e ambas estão corretas. Deixei assim:
DataModule2.ADOQNomeProcData.Close;
DataModule2.ADOQNomeProcData.SQL.Clear;
DataModule2.ADOQNomeProcData.SQL.Add(´Select * from processo´);
DataModule2.ADOQNomeProcData.SQL.Add(´where nome like ´´´+edit2.text+´¬´´ ´);
DataModule2.ADOQNomeProcData.Open;
if DataModule2.ADOQNomeProcData.RecordCount = 0 then
begin
BbtInserir.Enabled:=true;
end
else
begin
BbtInserir.Enabled:=false;
end
Gostei + 0
03/07/2009
Lightshine
Só lembrando que no caso do IF conter apenas uma linha de codigo apos a verificação não há necessidade de begin e end... Ou seja, você pode usar assim:
if DataModule2.ADOQNomeProcData.RecordCount = 0 then
BbtInserir.Enabled:=true
else
BbtInserir.Enabled:=false;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)