Ir para conteúdo

POWERED BY:

Arquivado

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

kascav

[Resolvido] Retornar soma de coluna access por número de pessoas

Recommended Posts

Após muito pesquisar peço ajuda para resolver a soma dos valores das diárias por tipo de quarto em determinada data passada pelo formulário. O campo resposta deveria retornar com esta soma mas retorna sempre com o primeiro valor e se repete várias vezes. O campo total retorna com o valor das diárias vezes o número de quartos e tipo de quartos e eu quero somente a soma. O código está abaixo e depois dele vou colocar como ele retorna. Muito grata.

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
entrada  = request.form("entrada") 
saida  = trim(request.form("saida"))
ndiarias = trim(request.form("diarias")) 
dias = trim(request.form("dias"))
adultos = trim(request.form("adultos"))
criancas = trim(request.form("criancas"))
bebes = trim(request.form("bebes"))
quartos = trim(request.form("quartos"))
jantar = trim(request.form("jantar"))
msg = replace(preferencias, chr(13), "<br>")
hospedes = CInt(adultos) + CInt(criancas)

Dim galeria
Dim galeria_cmd
Dim galeria_numRows

Set galeria_cmd = Server.CreateObject ("ADODB.Command")
galeria_cmd.ActiveConnection = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=E:\home\pousadadosanjos1\dados\hospedes.accdb"

galeria_cmd.CommandText = "SELECT * FROM tarifadiachale WHERE Data BETWEEN #" & entrada & "# and #" & saida & "#;"


galeria_cmd.Prepared = true


Set galeria = galeria_cmd.Execute
galeria_numRows = 0

Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
galeria_numRows = galeria_numRows + Repeat1__numRows

tipo= galeria("Tipo")
adl1 = galeria("adl1")
adl2 = galeria("adl2")
adl3 = galeria("adl3")
adl4 = galeria("adl4")
adl5 = galeria("adl5")
adl6 = galeria("adl6")
mindias = galeria("mindias")
data= galeria("data")
periodo = galeria("periodo")
acomodacao = galeria("acomodacao")
maximopessoas = galeria("Max pessoas")
'disp= galeria("disp")
refeicao = galeria("refeicao")
IF hospedes = 1 then diaria = adl1 end if
if adultos = 2 then diaria = adl2 end if
if hospedes = 3 then diaria = adl3 end if
if hospedes = 4 then diaria = adl4 end if
if hospedes = 5 then diaria = adl5 end if
if hospedes = 6 then diaria = adl6 end if
%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-utf8">
<style type="text/css">
body{background-color:#FFFFFF;padding:0px;;overflow:auto;text-align:left;}
#tudo {width:790px;margin:0 auto;top:0;	}
</style>
</head>
<body>
<div id="tudo">
           <table border="0" align="left" cellpadding="0">
            <form id='form1' name='form1' method='POST' action='recupera2.asp'>
             <!--DWLayoutTable-->
             <tr><td>
             <%
If ndiarias > mindias then
response.write "O mínimo de diárias para o período é "&mindias&".<br>"
end if
If maximopessoas < hospedes then
response.write "O número máximo de pessoas nesta acomodação é de " &maximopessoas& ". Utilize mais quartos ou escolha outra acomodação."
end if
'If quartos > 1 then
'response.write "Calcule o valor de um quarto por vez."
'end if
'if disp = n then
'response.write "Não temos mais disponibilidade neste tipo de acomodação."
'end if
If jantar = sim then
diaria = diaria + (refeicao*adultos) + ((refeicao*criancas)/2)
end if
if ndiarias = 3 and periodo = "alta" then
diaria = diaria*0.9
end if
if ndiarias >3 and < 5 and periodo = "baixa" then
diaria = diaria*0.9
end if
%>
             </td></tr>
             <tr>
               <td width="145"height="22" class="style3" valign="bottom">Entrada:</td>
               <td width="145" align="left"><span class="style3"><%=entrada%></span></td>
               <td width="145"><span class="style3">Saída:</span></td>
               <td width="145"><span class="style3"><%=saida%></span></td>
             </tr>
             <tr>
           <td><span class="style3">Mínimo de diárias:</span></td>
           <td><span class="style3"><%=mindias%></span></td>
               <td width="145"><span class="style3">Total de diárias:</span></td>
               <td><span class="style3"><%=ndiarias%></span></td>
             </tr>
             <tr>
               <td style="vertical-align:text-top"><span class="style3">Dias:</span></td>
               <td colspan="3" style=" vertical-align:middle"><span class="style3"><%=dias%></span></td>
             </tr>
             <tr>
               <td><span class="style3">Adultos:</span></td>
               <td><span class="style3"><%=adultos%></span></td>
               <td><span class="style3">Bebês:</span></td>
               <td><span class="style3"><%=bebes%></span></td>
             </tr>
          <tr>
           	<td style="vertical-align:text-top"><span class="style3">Crianças:</span></td>
           	<td><span class="style3"><%=criancas%></span></td>
           <td><span class="style3">Total de Hóspedes:</span></td>
           <td><span class="style3"><%=hospedes%></span></td>
         </tr>
           <tr>
           <!--	<td style="vertical-align:text-top"><span class="style3">Nº de quartos:</span></td>
           	<td><span class="style3"><%'=quartos%></span></td> -->
           <td><span class="style3">Jantar incluso:</span></td>
           <td><span class="style3"><%=jantar%></span></td>
         </tr>
         <tr><td colspan="4"> </td></tr>

<% 
dim sumdiaria
sumdiaria = 0
While ((Repeat1__numRows <> 0) AND (NOT galeria.EOF))
sumdiaria=sumdiaria +(Cint(diaria))
viadoc = sumdiaria*0.9
avista = sumdiaria*0.85
resposta = "<tr><td class='label'><input name='botao' type='radio' value='"&diaria&"' /></td><td colspan='3'>Tipo de Acomodação:"&tipo&"<br>Valor total das diárias:<br>R$ "&sumdiaria&" para pagamento via cartões de crédito e débito<br>  R$" &viadoc& " para pagamento via doc e cheque ou dinheiro<br>R$"&avista&" para pagamento à vista, na reserva<br>Máximo de pessoas:"&maximopessoas&"<br>Acomodação:"&acomodacao&"</td></tr>"
response.write resposta
total = total + 1

Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
galeria.MoveNext()
Wend
Total = Total + sumdiaria
response.write "<tr><td colspan='4'><br>"&total&"</td></tr>" 
%>
<tr><td colspan="4">
                 <a href="javascript:history.go(-1)" class="style2"></a>
                 <input name="Submit" type="submit" value="Calcular valores das diárias"/>
                 <input name="envia" type="hidden" id="envia" value="sim" />
                 <input type="hidden" name="MM_insert" value="form1" />
	</td></tr>  
</form>
</table>
</div>

<%
galeria.Close
Set galeria = Nothing
%>
</body>
</html>

 

O código retorna com:

O mínimo de diárias para o período é 2.

O número máximo de pessoas nesta acomodação é de . Utilize mais quartos ou escolha outra acomodação.

Entrada: 19/12/2012 Saída: 20/12/2012

Mínimo de diárias: 2 Total de diárias: 1

Dias: 19/12/2012,20/12/2012

Adultos: 2 Bebês: 0

Crianças: 0 Total de Hóspedes: 2

Jantar incluso: nao

 

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 336 para pagamento via cartões de crédito e débito

R$302,4 para pagamento via doc e cheque ou dinheiro

R$285,6 para pagamento à vista, na reserva

Máximo de pessoas:

Acomodação:

 

 

 

Sendo que ele precisa retornar em resposta, de acordo com os dados do banco:

Tipo de Acomodação:Suíte

Valor total das diárias:

R$ 672 para pagamento via cartões de crédito e débito

R$604,8 para pagamento via doc e cheque ou dinheiro

R$571,20 para pagamento à vista, na reserva

Máximo de pessoas:4

Acomodação: Pomar, Hortensias e Pedras

 

 

Tipo de Acomodação:Chale

Valor total das diárias:

R$ 780,00 para pagamento via cartões de crédito e débito

R$702,00 para pagamento via doc e cheque ou dinheiro

R$663,00 para pagamento à vista, na reserva

Máximo de pessoas: 3

Acomodação: Platanos, Cabana e Palafita

 

Tipo de Acomodação:Casa Histórica

Valor total das diárias:

R$ 1452,00 para pagamento via cartões de crédito e débito

R$1306,80 para pagamento via doc e cheque ou dinheiro

R$1234,20 para pagamento à vista, na reserva

Máximo de pessoas:<br>Acomodação: Casa Histórica

 

Por favor, me ajudem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a função SUM do SQL agrupando pelo tipo de dados que quiser. fica mais fácil e rápido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

já tentei, assim

galeria_cmd.CommandText = "SELECT SUM(adl1) AS adl1, SUM(adl2) AS adl2, SUM(adl3) AS adl3, SUM(adl4) AS adl4, SUM(adl5) AS adl5, SUM(adl6) AS adl6, SUM(adlad) AS adlad, tipo As tipo FROM tarifadia BETWEEN #" & entrada & "# and #" & saida & "#;"

e não deu certo mesmo assim

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.