Jump to content
Sign in to follow this  
RValentim

Como Listar todos os meses na Query ou no PHP?

Recommended Posts

Preciso listar todos os meses dentro de um período, inclusive os que não houveram movimentação, exemplo abaixo:
Minha Query:
    SELECT LEFT(B8.B8_DTVALID, 06) AS VALIDADE,
           SUM(B8.B8_SALDO) AS VENCIDO,
           0 AS VENCENDO,
           0 AS AVENCER
      FROM SB8030 B8
     INNER JOIN SB1030 B1
        ON B1.B1_COD = B8.B8_PRODUTO
       AND B1.B1_GRUPO IN ('Q1', 'Q4', 'Q5')
       AND B1.D_E_L_E_T_ = ' '
     WHERE B8.B8_DTVALID BETWEEN 'dtIni' AND 'dtFim'
       AND B8.B8_DTVALID < CONVERT(VARCHAR(10), GETDATE(), 112)
       AND (B8_SALDO > 0 OR B8_EMPENHO > 0)
       AND B8.D_E_L_E_T_ = ' '
     GROUP BY LEFT(B8.B8_DTVALID, 06)

utilizo a QUERY 3x repetidas alterando "DTVALID '<' ou '=' ou '>' CONVERT" com UNION para unir as 3 consultas

Returno do SQL:
    Mes/Ano | Vencidos | A Vencer | Vencendo
    01/2015 |    5     |    0     |     0
    02/2015 |    1     |    0     |     0
    04/2015 |    15    |    0     |     0
    06/2015 |    7     |    0     |     0
    07/2015 |    1     |   200    |     3
    09/2015 |    0     |   578    |     0
    12/2015 |    0     |   231    |     0

Resultado esperado

    Mes/Ano | Vencidos | A Vencer | Vencendo
    01/2015 |    5     |    0     |     0
    02/2015 |    1     |    0     |     0
    03/2015 |    0     |    0     |     0
    04/2015 |    15    |    0     |     0
    05/2015 |    0     |    0     |     0
    06/2015 |    7     |    0     |     0
    07/2015 |    1     |   200    |     3
    08/2015 |    0     |    0     |     0
    09/2015 |    0     |   578    |     0
    10/2015 |    0     |    0     |     0
    11/2015 |    0     |    0     |     0
    12/2015 |    0     |   231    |     0

Código PHP

  $aDados = $rep->SelDados($dtIni, $dtFim);
  $nCount = count($aDados);           
  for ($x = 0; $x < $nCount; $x++) {
    $oDados = new Validade($aDados[$x]['VALIDADE'], $aDados[$x]['VENCIDO'], $aDados[$x]['VENCENDO'], $aDados[$x]['AVENCER']);
    echo "<tr class=\"font01\">";
    echo "<td>".$oDados->GetValidade()."</td>";
    echo "<td>".$oDados->GetVencido()."</td>";
    echo "<td>".$oDados->GetVencendo()."</td>";
    echo "<td>".$oDados->GetAvencer()."</td>";
    echo "</tr>";
  }

Alguém teria alguma ideia de como resolver isso pela QUERY ou pelo PHP ?

 

Share this post


Link to post
Share on other sites

Pelo oke estou vendo ele te traz apenas os dias que tem alguma coisa.. vc está fazendo o FOR com os resultados, vc pode implementar algo verificando se a data é 1 dia após a ultima impressão. se não for ele vai escrevendo na tela com as datas em branco.. isso vc vai verificar com WHILE.. sempre dentro do seu form vc no final grava a data em uma variavel.. dai quando ele der o loop no for ele vai entrar no while enquanto a nova data for maior igual a dois dias da data.. dai no while sempre no final vc incrementa mais um dia na variavel...

Share this post


Link to post
Share on other sites

Obrigado, consegui resolver o problema, o erro foi do DBA que fez a query com alguns erros, simplesmente peguei a query sem analisar confiando no DBA e terminei me deparando com uma dificuldade onde na verdade não existia.

 

Ou use uma "tabela-calendário". Veja um exemplo usando agenda.

Desta forma, você consegue fazer com LEFT JOIN.

E usar para outras coisas também.

 

Sua ideia também é interessante e funciona, também testei...

 

Agradeço a atenção de todos. Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By violin101
      Caros amigos membros do grupo, saudações...
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Tenho uma rotina onde consigo efetuar o Download de arquivos para uma pasta dentro do sistema, o que preciso seria mudar o nome do arquivo, por exemplo:
       
      após selecionar  o arquivo criado com o nome de: ESTOQUE.PDF
       
      gostaria de gravar na pasta de upload's com um novo nome, como por exemplo: cliente[1]-estoque.pdf.
       
      Onde poderia fazer essa alteração na rotina abaixo, para gravar o arquivo com um novo nome ?
       
      abaixo posto o fonte da rotina.
      <?php public function anexar() { $this->load->library('upload'); $this->load->library('image_lib'); $upload_conf = array( 'upload_path' => realpath('./assets/anexos'), 'allowed_types' => 'pdf|PDF|doc|DOC|docx|DOCX', // formatos permitidos para anexos de os 'max_size' => 1024, ); //Recebe a variável via POST $validade = $this->input->post('validade'); $this->upload->initialize($upload_conf); foreach ($_FILES['userfile'] as $key => $val) { $i = 1; foreach ($val as $v) { $field_name = "file_".$i; $_FILES[$field_name][$key] = $v; $i++; } } unset($_FILES['userfile']); $error = array(); $success = array(); foreach ($_FILES as $field_name => $file) { if (! $this->upload->do_upload($field_name)) { $error['upload'][] = $this->upload->display_errors(); } else { $upload_data = $this->upload->data(); if ($upload_data['is_image'] == 1) { // set the resize config $resize_conf = array( 'source_image' => $upload_data['full_path'], 'new_image' => $upload_data['file_path'].'thumbs/thumb_'.$upload_data['file_name'], 'width' => 200, 'height' => 125 ); $this->image_lib->initialize($resize_conf); if (! $this->image_lib->resize()) { $error['resize'][] = $this->image_lib->display_errors(); } else { $success[] = $upload_data; $this->load->model('Dados/Dadosclie_model'); $this->Dadosclie_model->anexar($this->input->post('idCli'), $this->input->post('descricao'), $validade, $upload_data['file_name'], base_url().'assets/anexos/', 'thumb_'.$upload_data['file_name'], realpath('./assets/anexos/')); } } else { $success[] = $upload_data; $this->load->model('Dados/Dadosclie_model'); $this->Dadosclie_model->anexar($this->input->post('idCli'), $this->input->post('descricao'), $validade, $upload_data['file_name'], base_url().'assets/anexos/', '', realpath('./assets/anexos/')); } } } if (count($error) > 0) { echo json_encode(array('result'=> false, 'mensagem' => 'Nenhum arquivo foi anexado.')); } else { echo json_encode(array('result'=> true, 'mensagem' => 'Arquivo(s) anexado(s) com sucesso .')); } } ?>  
      Grato,
       
      Cesar
    • By ViniciusRamoa
      Oi! Quando eu comecei a estudar php e logica de programação, é que uma das primeiras coisas que precisamos ter é uma noção exata do que queremos fazer, entao, o que eu estou querendo fazer, eu diria que é bem ousado para um iniciante, mas eu estou estudando e meu único foco é criar um de conteudos simples para meu site, será apenas para uso pessoal, nal tenho interesse em vender, mas iria disponibilizar para download , caso alguém queira, ele irá apenas postar conteúdos, apagar, editar e somente isso, não editará banner, ou layout ou qualquer outra coisa. Quero criar um sistema de loguin e dar permissão para apenas quem tiver o "rank 2" será considerado um adm e poderá postar.
      Nesse campo de postagem, terá apenas os campos de:
      Titulo
      Imagem (thumbnail)
      Link da página  (pois será um post clicavel, como um cardbox que ira redirecionar o visitante para a página destinada apenas àquele  conteudo) 
      Descrição 
      Apenas  isso
      Então, eu estou estudando PHP, no início ainda, mas é possivel eu criar tal ferramente em quanto tempo em média com a experiência que vocês ja possuem? 
      E outra, qual caminho devo seguir? Quero apenas criar o gerenciador de conteudo e sistema de loguin, tem algum "caminho" que eu deva seguir? Tenho que focar mais em x area para atingir o que eu quero e nao focar em y area, pois será perda de tempo? Como eu disse, quero apenas criar isso, e futuramente me aprofundar mais
      Então, possui alguma dica, orientação, link ou qualquer coisa que possa me ajudar a pelo menos ver qual caminho seguir, levando em conta que estou estudando por conta propria e nao tenho quem me orientar? Obrigado 
    • By Anderson Maciel
      Boa tarde pessoal,

      Estou quebrando a cabeça para resolver um problema, tenho uma div dinâmica que carrega uma <table> em uma das colunas deveria apresentar o componente Switchery, esta <table> é montada a partir de uma função PHP que faz o select em uma tabela do banco de dados conforme abaixo:
       
      echo '<table class="table table-hover"> <thead> <tr> <th>Nome</th> <th>Agrupamento</th> <th>Ativo</th> </tr> </thead> <tbody>'; foreach($data as $row) { If ($row['ativo'] == 1) { $vativochk = "checked"; } else { $vativochk = ""; } echo '<tr> <td>'.$row['nome'].'</td> <td>'.$row['agrupamento'].'</td> <td><input type="checkbox" name="ativo_grid" class="js-switch" '.$vativochk.' disabled="disabled"></td> </tr>'; } echo '</tbody> </table>'; Aqui está o Ajax que chama e retorna atualizando a DIV:
       
      function atualiza_grid_graficos() { $.ajax({ type: "POST", url: "hubfuncind.php", data: { id_tabindicadores_paineis: $('#id_tabindicadores_paineis').val(), acao: "gridgraficos" }, success: function(data) { $('#conteudo').html(data); } }); } O retorno vem certinho, mas apenas o componente Switchery está vindo desconfigurado, ou seja vem um checkbox normal (html).

      O que é mais incrível é que neste mesmo formulário mais acima tenho este mesmo componente funcionando normalmente, somente dentro da DIV dinâmica é que fica desconfigurado conforme imagem anexa.

      Será que alguém já passou por isso?

    • By egalauber
      Preciso descobrir qual é o nome do arquivo com a extensão.
      Só sei o início do nome:
       
      pasta "anexos".
      nome_do_arquivo_DAQUI_PRA_FRENTE_NAO_SEI_O_RESTO_DO_NOME_NEM_A_EXTENSAO
       
      Com a função glob eu consigo achar o arquivo, mas o nome completo ainda não.
       
       
      $verifica = glob("anexos/nome_do_arquivo_*");
      if($verifica == true){
         // achei o arquivo e agora preciso pegar o nome completo e a extensão
      } else {
            echo "Arquivo não encontrado";
         }
    • By kelvinferraz
      Bom dia Pessoal,
       
      Estou com um problema que talvez muitos já devem ter passado, eu criei um FormRequest de um cadastro que fiz para validar os campos de anexo que vai para o BD. Incluindo a seguinte regra do name anexo_rg
        return [ 
                 'anexo_rg'           => 'mimes:jpeg,png,jpg,pdf|max:2048', 
              ];
       
      O campo não é required, porém ele fica pedindo para inserir um arquivo do tipo que foi criado na regra, ou seja, ele esta forçando um required no anexo, como consigo ignorar quando não possuir anexo?

      OBs: Eu criei um campo hidden para enviar um texto "NÃO POSSUI ANEXO". Antes de eu criar esse FormRequest ele conseguia deixar o anexo vazio, porém não tinha regras e a pessoa conseguia anexar qualquer tipo de arquivo.
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.