Fórum Evento DBGrid #371878

02/07/2009

0

Amigos, tenho um sistema com uma tabela ‘cadastro’.
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

Edilsonlima

Responder

Posts

02/07/2009

Osocram

Amigo aconselho vc colocar um botão do lado do edit ´Validar nome´
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.


Amigos, tenho um sistema com uma tabela ‘cadastro’. 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.



Responder

Gostei + 0

02/07/2009

Edilsonlima

Quanto sua indagação não fui muito claro, mas é o seguinte:
Na verdade essa tabela cadastra processos e existe um Nº DE PROCESSO que também é visualizado junto com o NOME no DBGrid.


Responder

Gostei + 0

02/07/2009

Lightshine

Edilson,

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


Responder

Gostei + 0

02/07/2009

Edilsonlima

Edilson, 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


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.


Responder

Gostei + 0

02/07/2009

Lightshine

O que você pode fazer é no evento OnChange (quando a propriedade edit é alterda) ou no onKeyPess (quando uma tecla é pressionada) do TEdit fazer esta pesquisa e verificar se o grid está vazio. Exemplo:

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.


Responder

Gostei + 0

02/07/2009

Danielrsanches

o DBGrid mostra todos os registros retornados na sua Query ou Table correto ??? então a checagem pode ser feita na Query ou Table ...

if Query.isempty then
showmessage(´vazio´)
else
showmessage(´não está vazio´);


abraços !!!


Responder

Gostei + 0

02/07/2009

Edilsonlima

Resolvido.

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


Responder

Gostei + 0

03/07/2009

Lightshine

De nada.

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;


Responder

Gostei + 0

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

Aceitar