quarta-feira, 17 de agosto de 2011

Filtrar intervalo de datas e nomes (SQLServer)

Como dá pra perceber mais duas dicas sobre informática sobre programação, dessa vez no banco de dados.

As perguntas foram:

1. "Como faço pra filtrar todos os clientes que eu tenho que foram cadastrados em um intervalo de data?"

2. "Como faço a mesma coisa definindo também um filtro de nome, por exemplo Pedro?"


Bom, vamos por ordem.





primeira pergunta (Resposta):


   Você deve utilizar o comando Between que define um intervalo em um campo seja ele numérico, de data ou valor monetário.


   Criei uma tabela chamada tb_cliente contendo os campos:


   cliente_codigo - tipo Integer - chave primária.
   cliente_nome  -  tipo Varchar (45).
   cliente_data_cadastro - tipo DateTime.


   para buscar todo mundo cadastrado de 01 junho de 2011 até 31 de agosto de 2011 eu coloquei o seguinte comando:




    Select * from tb_cliente
     where cliente_data_cadastro between '2011-06-01' and '2011-08-31'

    sendo assim a tabela retornará todos nesse intervalo de data.


    2 Pergunta (Resposta):


    Pra você filtrar pelo nome você tem que ver o que vc quer fazer, por exemplo:




    Procurar clientes que comecem com o nome PEDRO.

    Select cliente_nome from tb_cliente
    where cliente_nome like 'PEDRO%'


     Procurar clientes que terminem com o nome SILVA.

     Select cliente_nome from tb_cliente
     where cliente_nome like '%SILVA'


     Procurar clientes que tenham o nome PEDRO em qualquer posição do nome.

     Select cliente_nome from tb_cliente
     where cliente_nome like '%PEDRO%'



     Unindo as informações podemos responder a segunda pergunta:


     Select * from tb_cliente
     where cliente_nome like '%PEDRO%' and
              cliente_data_cadastro between '2011-006-01' and '2011-08-31'




     Espero ter ajudado, qualquer coisa entre em contato comigo.


     Abraço a todos.

     






   

segunda-feira, 15 de agosto de 2011

Resultado de uma Query num Combobox (Delphi + SQL)


Olá amigos,

Hoje vou ajudar um amigo que me pediu pra explicar como colocar o resultado de uma busca com uma Query dentro de um combobox na linguagem Delphi, essa informação é para profissionais da área então para o blog essa informação fica avaliada como Grau de Profissional (Médio), mas então vamos lá:


Primeiro vamos começar explicando que o componente Combobox tem propriedades e elas seram editadas, nesse exemplo iremos editar a propriedade "Itens" observe.


Dentro de um botão do tipo BitBtn vou colocar para fazer a busca em uma tabela de exemplo onde contém nomes de Alunos a qual nomeei TbAluno como mostra a figura 01.




fig01.

 





 Observem que foi utilizado no formulário:


  1. Combobox
  1. Botão do tipo BitBtn
  1. DataBase
  1. Query (Nomeada QueryAula).


  O DataBase foi utilizado para fazer contato com o banco de dados onde está localizada a tabela tbAluno.


  Estou levando em consideração que você sabe fazer contato com o banco de dados já que o objetivo é somente inserir no Combobox os dados da busca nele.


  Sendo assim com a Query nomeada de QueryAula coloquei na sua propriedade SQL localizada no object inspector o seguinte comando como mostra a figura 02:


    Fig02.


   


 
  Código SQL:
    
     select * from tb_aluno
      
     // Selecionar todos os alunos cadastrados na tabela de alunos (tb_aluno).






Após inserir o código na query vamos ter que informar uns códigos bem simples no botão BitBtn1 observe na figura 03.




fig03.


  
    Observe:

    Antes de começar alguma operação com a QueryAula eu fechei ela para que informações defasadas não sejam pertinentes na nossa nova busca e abri novamente para trazer informações atuais pois ao abrir a QueryAula a mesma executa o comando SQL buscando os alunos cadastrados.


    QueryAula.Close;
    QueryAula.Open;

   
   Depois eu verifiquei se ela conseguiu trazer algum registro do banco de dados e condicionei que se ela estivesse vazia de registro que mandasse uma mensagem ao usuário informando a ele sobre a situação.




    if QueryAula.IsEmpty then
     begin
       ShowMessage('Nenhum registro encontrado!');
       Exit;
     end

    Logo depois continuei com um comando ELSE, e neste momento estou confiante que você sabe utilizar o fomando if, then e else, e coloquei o comando para situação contrária de vazio para a QueryAula, dizendo aos programa que percorra todos os registros um a um colocando os nomes dos alunos no Combobox do formulário.


 Else 
  begin
    While not QueryAula.EOF do
      begin
        Combobox1.Itens.Add(
        QueryAula.FieldByName('nome_aluno').asString);
        QueryAula.Next;
      end;
  end;



Juntando tudo fica assim:





    QueryAula.Close;
    QueryAula.Open;

    
    if QueryAula.IsEmpty then
     begin
       ShowMessage('Nenhum registro encontrado!');
       Exit;
     end
    else 
     begin
       While not QueryAula.EOF do
         begin
           Combobox1.Itens.Add(
           QueryAula.FieldByName('nome_aluno').asString);
           QueryAula.Next;

         end;
     end;
   

     Selecione o componente Combobox1 e altere a propriedade Style no Object Inspector para csDropDownList para ficar melhor a visualização do resultado da busca já no combobox.




    Depois de tudo prontinho executamos, clicamos no botão para executar a busca e se houver algum registro ele manda uma mensagem de sucesso, caso contrário ele manda uma mensagem de falha, logo depois podemos ver o resultado na figura 04 com todos os alunos cadastrados no combobox.




fig 04.

   



    Bom, tentei deixar tudo bem explicadinho, se você tiver dificuldades entre em contato comigo.
    Pra melhorar um pouco mais vou deixar o código do botão dentro de um arquivo de texto no grupo do google pra vocês, junto com as imagens da explicação.


    Grupo do Google TecnicaSys - Apoio de Informática.

   O endereço estará disponível para vocês se cadastrarem para ter acesso aos assuntos e dados contidos no grupo do google.


   Espero ter ajudado.