Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Relatorio Anual


Rodrigo ASP

Question

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

Edited by Rodrigo ASP
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

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

Edited by Rodrigo ASP
Link to comment
Share on other 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 to comment
Share on other 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

Edited by Rodrigo ASP
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...