Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Relatorio Anual


Rodrigo ASP

Pergunta

Boa noite Pessoal,

Sou novo aqui e tenho uma duvida que esta me tirando o sono.

tenho uma tabela onde tenho todos os lancamentos dos produtos, valores e data que foram lançados

O que preciso fazer:

Montar uma tabela onde na primeira linha terei os 12 meses do ano e na primeira coluna a relacao de cada produto...ate ai tudo bem, o negocio esta sendo popular esta tabela, onde para cada produto tenho que colocar os valores correnspondetes de para cada mes de acordo com a data do lancamento ou deixar zerado se não houver lancamento em algum mes.

Ex.

jan | fev | mar | ...

feijao 0,00 10,00

arroz 5,00 12,00 0,00

To precisando bastante da ajuda de voces.

Qauqluer detalhe a mais que precisarem é so falar.

Espero que tenha conseguido explicar o que preciso.

Estou aceitando qualquer ajuda como exemplos, dicas etc...

Obrigado pela atencao de voces e parabens pelo forum.

Abracos,

Rodrigos

Editado por Rodrigo ASP
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Opa,

Vamos la, uso como banco de dados o Mysql versao 5.5.

Tenho uma tabela onde estao guardados os lancamentos (onde tenho os dados que preciso para montar o relatorio em questão, os dados principais são: produtos, a data de lancamento e os valores, tenho outros campos não muito relevantes) e outras tabelas de produtos, fornecedores. o problema esta em popular a tabela...depois faco um inner join para buscar os codigos dos produtos e fornecedores.

Minha ideia é verificar pela data o mes a que corresponde o lancamento e então joga-lo na tabela e no mes o valor. Tenho produtos que tenho lancamentos o ano inteiro, alguns terão lancamentos em alguns meses ou um durante todo o ano. Os meses que não tenho nada fica zerado.

Na verdade quando não tem nada no mes é que ta pegando mais.

Espero que isso ajude a entender melhor o problema.

Abracos e obrigado pela ajuda,

Editado por Rodrigo ASP
Link para o comentário
Compartilhar em outros sites

  • 0

Fiz um teste aqui no ACCESS e pode te da uma idéia já...

cria uma consulta agrupando pelo mes e ano

GROUP BY [teste produtos].produto, Month([data]), Year([data])
faz a soma dos valores
Sum(teste_vendas.valor) AS Vendas
Um exemplo com duas tabelas teste_produtos [id,produto] e teste_vendas[id,produto,data,valor]
SELECT [teste produtos].id, [teste produtos].produto, Month([data]) AS Mes, Year([data]) AS Ano, Sum(teste_vendas.valor) AS Vendas FROM teste_vendas INNER JOIN [teste produtos ] ON teste_vendas.produto = [teste produtos].id
GROUP BY [teste produtos].id, [teste produtos].produto, Month([data]), Year([data])

Link para o comentário
Compartilhar em outros sites

  • 0

Bareta,

O select não é o problema, estou encontrando dificuldade para popular a tabela.

já consigo preencher a tabela quando o produto tem valores em todos os meses do ano, mas quando o produto tem um registro so no mes de fevereiro por exemplo e os outros meses tem que ficar zerado é que pega...ai que ta o meu problema.

Ex.:

produto/mes | jan | fev |mar | abr |

arroz ...........| 1,2 | 3,0 | 4,0 | 8,0

feijao ...........| 0,0 | 2,0 | 0,0 | 0,0

colocar o valor no mes de fev e deixar os outros zerados que ta pegando.

Vlw

Editado por Rodrigo ASP
Link para o comentário
Compartilhar em outros sites

  • 0

certo, fiz um rascunho aqui... da uma melhorada e uma testada ai que deve funcionar

response.write "<table border=1><tr><td>Produto</td>"
for i=1 to 12
    response.write "<td>"&i&"</td>"
next
response.write "</tr>"
sql="SELECT [teste produtos].id as produto_id, [teste produtos].produto, Month([data]) AS Mes, Year([data]) AS Ano, Sum(teste_vendas.valor) as valor FROM teste_vendas INNER JOIN [teste produtos] ON teste_vendas.produto = [teste produtos].id GROUP BY [teste produtos].id, [teste produtos].produto, Month([data]), Year([data])"
set rs=conn.execute(sql)
if not rs.eof then
    ini=0
    produto=0
    z=0
    while not rs.eof
        valor=formatnumber(rs("valor"),2)
        mes=rs("mes")
        if rs("produto_id")<>produto then
            if ini>0 and ini<14 then    
                for i=ini to 12
                    response.write "<td>R$ 0,00</td>"
                next
                response.write "</tr><tr>"
            end if            
            response.write "<td>"&rs("produto")&"</td>"
            produto=rs("produto_id")                
            ini=1
        end if
        if cint(mes) > cint(ini) then    
            for i=ini to mes-1
                response.write "<td>R$ 0,00</td>"
            next     
            ini=mes+1
            response.write "<td>R$ "&valor&"</td>"
        else    
            response.write "<td>R$ "&valor&"</td>"
            ini=ini+1
        end if    
    rs.movenext
    wend    
    if ini<14 then
        for i=ini to 12
            response.write "<td>R$ 0,00</td>"
        next
        response.write "</tr>"    
    end if
end if
rs.close
set rs=nothing    
response.write "</table>"

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,8k
×
×
  • Criar Novo...