Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

asp.net

Pode parecer SQL, mas não é

Recommended Posts

Tenho o resultado da busca abaixo

 

0036 00000000000006806107 28/4/2004

0036 00000000000006806221 27/4/2004

0036 00000000000006825818 27/4/2004

0036 00000000000006843648 27/4/2004

0036 00000000000006846082 27/4/2004

0036 00000000000006848215 27/4/2004

0036 00000000000006871984 27/4/2004

0036 00000000000006873995 4/5/2004

0036 00000000000006874229 4/5/2004

0036 00000000000006874304 4/5/2004

0036 00000000000006874368 4/5/2004

0036 00000000000006878571 27/4/2004

0036 00000000000006894868 4/5/2004

0036 00000000000006919885 4/5/2004

0036 00000000000006931949 4/5/2004

0036 00000000000006932221 4/5/2004

0036 00000000000006976445 4/5/2004

0036 00000000000006979968 4/5/2004

0036 00000000000006982608 4/5/2004

0036 00000000000006987353 4/5/2004

0036 00000000000007008420 27/4/2004

0036 00000000000007020361 4/5/2004

0036 00000000000007055012 4/5/2004

0036 00000000000007093961 4/5/2004

0036 00000000000007095862 4/5/2004

0036 00000000000007104741 4/5/2004

 

AQUI TEM QUE VIR UMA LINHA COM O SUBTOTAL DA AGENCIA 0036

0037 00000000000006603380 27/5/2004

 

Não consigo fazer o subtotal no SQL, vou ter que usar uma estrutura em ASP mesmo para poder somar este valor, depois de somar o valor da agencia 0036 vou ter que somar o subtotal da agencia 0037, 0037 e assim até a ultima agencia e ainda dar o total geral, como fazer isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito um contador no seu laço de escrita.

 

Ficaria +/- assim:

Agencia = RS("CampoAgencia")

Contador = 0

While not RS.EOF

If Agencia = RS("CampoAgencia") Then

Contador = Contador + RS("CampoValor")

Else

Response.Write Contador

Contador = RS("CampoValor")

End If

Response.Write 'valores

RS.MoveNext

If Not RS.EOF Then Agencia = RS("CampoAgencia")

Wend

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gastão, você poderia então me ajudar com o SQL, porque eu tenho que mostrar todos os chamados das agencias, os subtotais de cada agencia, o total geral do dia, agrupados por número de chamados. O SQl que eu fiz está ai abaixo.Select chamados.unidade as agencia, fechamento.codigo as codigo, fechamento.dtconferencia as data_conferencia, fechamento.dtfatura as data_fatura, Sum(Convert(numeric(10,2),fechamento.valortotal)/100) as valor_total, fechamento.deslocamento as delocamento, fechamento.quantidade as quantidadefrom fechamento inner join chamados on fechamento.codigo = chamados.codigoInner join agencias on agencias.codigo = chamados.unidadewhere (fechamento.valortotal is not null) and (fechamento.valortotal <>" ") and (fechamento.codigo is not null) and (fechamento.dtconferencia is not null) and (fechamento.dtconferencia <>" ") and (fechamento.dtfatura is not null) and (fechamento.dtfatura <> " ")group by chamados.unidade, fechamento.codigo, fechamento.dtconferencia, fechamento.dtfatura, fechamento.deslocamento, fechamento.quantidadeorder by chamados.unidadeBom se realmente você puder me ajudar seria muito bom mesmo até como forma de conhecimento mesmo.P.S Se você estiver pensando em usar o comando COMPUTE do SQL, não rola não que eu já tentei por aqui mesmo e não deu em nada porque no caso ele repete algumas ocorrencias de registros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow cara...é meio sinistro fazer assim...num to com mto tempo aqui....tipo..eu nao uso inner join .... pra fazer manero tem q estar mto por dentro do q rola...e eu nem por fora eu to ainda....ainda mais q nunca usei o sql 7.0 ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom estou fazendo assim para tentar gerar o somatório por agencias.

 

While not Satec.eof

if agencia = Satec("agencia") or agencia="" then

total_agencia = Ccur(total_agencia)+Ccur(total) 'Verificando se o registro atual é igual ao anterior para só ai somar o valor

else

response.write("<tr class='Style5'><td colspan='8' bgcolor='#ffffff'>TOTAL DA AGENCIA "&agencia&" </td><td class='style5' bgcolor='#ffffff'>"&total_agencia&"</td></tr>") 'Quando o registro atual for diferente ele exibe o resultado na tela e zera os contadores agencia e total_agencia

total_agencia = 0

agencia=""

end if

 

...

...

...

...

...

...

...

...

 

agencia = Satec("agencia") 'Passando o valor do registro atual para a variavel agencia

satec.movenext

wend

 

Estou chegando neste resultado dai abaixo.

 

Imagem Postada

 

Como pode-se perceber (linhas vermelhas) nos subtotais ele não soma a última linha de cada registro. Por exemplo a agencia 7753 o sibtotal dela correto é 1197,20 e como pode ser visto o resultado atual é exatamente 1197,20 - 81,20.

Ainda ocorre um problema que no caso da agencia ter apenas uma ocorrencia de chamado ele não efetua a soma e ainda sempre a útlima agência do relatório fica sem subtotal pois ele não exibe. Onde se encontra o problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim para solucionar o problema While not Satec.eof if Isnull(Satec("delocamento")) then deslocamento = 0 else deslocamento = Satec("delocamento") end if if IsNull(Satec("quantidade")) then quantidade = 0 else quantidade = Satec("quantidade") end if deslocamento = (deslocamento*quantidade) 'CALCULANDO O DESLOCAMENTO Total = FormatNumber(Ccur(Satec("valor_total"))+Ccur(deslocamento)) 'CALCULANDO O TOTAL DO CHAMADO if agencia = Satec("agencia") or agencia ="" then 'VERIFICANDO SE A VARAIÁVEL AGENCIA É IGUAL A AGENCIA ATUAL total_agencia = Ccur(total_agencia) + Ccur(total) else response.write("<tr class='Style5' bgcolor='#C1DDCD'><td colspan='8'>TOTAL DA AGENCIA "&agencia&" </td><td class='style5' align='center'>"&FormatNumber(total_agencia,2)&"</td></tr>") total_agencia = Satec("valor_total") 'agencia="" end if Response.Write("<tr align=center bgcolor='#ffffff' class='style1'>") Response.Write("<TD>"&Right(Satec("codigo"),10)&"</TD>") 'EXIBINDO O NUMERO DO CHAMADO Response.write("<TD>"&Satec("agencia")&"</td>") 'EXIBINDO O NUMERO DA AGENCIA response.Write("<TD>"&Left(Satec("data_fatura"),10)&"</td>") 'EXIBINDO A DATA DA FATURA response.Write("<td>"&FormatNumber(deslocamento,2)&"</td>") 'EXIBINDO O DESLOCAMENTO Response.write("<TD>"&formatNumber(Satec("valor_total"),2)&"</td>") 'EXIBINDO O VALOR TOTAL Response.write("<TD>0,00</td>") Response.write("<TD>0,00</td>") Response.write("<TD>"&Satec("data_conferencia")&"</td>") 'EXIBINDO A DATA DA CONFERENCIA Response.write("<TD>"&total&"</td>") 'EXIBINDO O TOTAL DO CHAMADO Response.Write("</tr>") agencia = Satec("agencia") 'PASSANDO O PARAMETRO DA AGENCIA PARA A VARIAVEL satec.movenext wendQue foi praticamento o que o amigo Salgado postou, com um simples detalhe que é exatamente a passagem de parâmetro para a vairável agencia que tem que fica dentro do while...wend mas antes do MoveNext.Valeu galera pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.