Como agrupar campos en una consulta

Me gustaría agrupar un campo en una consulta y además ordenarlo por fecha.

Mi problema es que cuando realizo la consulta de dos tablas una llamada meses con los campos (numeromes, mes) y la otra lugar con los campos (mes, año, nº factura, concepto importe, id) cuando realizo la consulta lo que quiero es agrupar por mes y ordenar por numero de mes. Hasta aquí todo bien pero el problema viene cuando en la siguiente consulta quiero sacar las facturas del mes seleccionado en el cual no sale nada.

1 respuesta

Respuesta
1

Lo siento pero no te sigo cuando hablas de "en la siguiente consulta...".

Si puedes copia el SQL de la primera y segunda consulta para ver exactamente que quieres hacer y lo que te sucede. Indica también el tipo de datos de los campos numeromes y mes.

Por cierto, no se si tienes algún otro motivo, pero si la tabla meses la tienes solo por tener las equivalencias entre nombre del mes y su número no es necesaria realmente, ya que teniendo uno de ambos datos siempre puedes obtener el otro por medio de las funciones MonthName (devuleve el nombre del mes al pasarle un numero del 1 al 12) y Month (lo contrario al pasarle una fecha...). Por el mismo motivo no es necesario tener ambos campos en una misma tabla.

Cordiales saludos.

El código es el siguiente:

<%@language="vbscript"%>
<% option explicit
   response.buffer %>
 <html>
  <head>
   <title>contabilidad de gastos</title>
    <style type="text/css" media="print">
    #imprime {display:none}
    </style>
    <center>
     <font color=blue size=+5>
      <b>informe de gastos</b>
     </font>
    </center>
  </head><hr><br>
   <center>
    <body bgcolor="#f3e2a3">
     <table border=0>
      <tr>
       <td>
        <% dim m,a,conex,rs,sqltext
         m=request.form("mes")
         a=request.form("ano")
         set conex=server.createobject("adodb.connection")
         conex.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("./bd/contabilidad.mdb")%>
        <table align=center border=0>
         <tr>
          <td>
           <font size=+3><b>consulta</b>
           </font>
          </td>
         </tr>
        </table><br>
        <% set rs=server.createobject("adodb.recordset")
         sqltext="select ano, n_factura, lugar.mes, meses.numeromes from meses inner join lugar on meses.mes = lugar.mes where ano='"&a&"' group by lugar.mes, ano, n_factura, meses.numeromes  order by  meses.numeromes;"
         set rs=conex.execute(sqltext)
         if not rs.eof then %> 
        <table align=center border=1>
         <tr><%do while not rs.eof%>
          <th align=center width="120" bgcolor="#00aaaa">
           <font size=+3>a&ntilde;o
           </font>
          </th>
          <td align=center width="120">
           <font size=+3><%response.write rs("ano")%>
           </font>
          </td>
         </tr>
        </table><br><br>
        <table align=center border=1>
         <tr>
          <th colspan="2" bgcolor="#00aaaa">
           <font size=+2>mes
           </font>
          </th>
         </tr>
         <tr><%do while not rs.eof%>
          <td width="120" align=center>
           <%response.write rs(("mes"))%>
          </td>
          <td align=center>
           <button type="submit"  style="width:auto;height:36px;font-size:10pt;background:#c0c0c0;border-radius:8px;" onclick="location.href='editar5.asp?action=editar5&mes=<%= rs("n_factura")%>'">
            <img src='editar3.png' align='absmiddle' hspace='4'/>consultar
           </button>
          </td>
         </tr><% rs.movenext
           loop %>
        </table><br>
        <table align=center cellspacing="4" cellpadding="8" border=0>
         <tr>
          <td>
           <button type="submit" id="imprime" style="width:auto;height:36px;font-size:10pt;background:#c0c0c0;border-radius:8px; "onclick="location.href='mensual.html'">
            <img src="ok.png" align="absmiddle" hspace='4'/> aceptar
           </button>
          </td>
         </tr>
        </table> 
          <% loop
           end if
           rs.close
           conex.close
           set rs=nothing
           set conex=nothing %>   
       </td>
      </tr>
     </table>
    </body>
   </center>
 </html>
El código del resultado es
<%@language="vbscript"%>
<% option explicit %>
<html>
 <head>
  <title>contabilidad</title>
        <table align=center width=40% bgcolor=#f1f1f1 cellpadding="0" cellspacing="0" border=3>
   <tr align=center>
    <td>
        <font color=black size=+5 face="verdana">
             gastos
                </font>
                </td>
            </tr>
  </table><p>
 </head><hr>
 <body>
  <table align=center border=0>
   <tr>
    <td>
     <% dim conex,sqltext,rs,m,a
      a=request.form("ano")
      m=request.form("mes")
      set conex=server.createobject("adodb.connection")
      conex.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath ("./bd/contabilidad.mdb")%>
     <table align=center cellspacing="6" cellpadding="2" border=0>
      <tr align=center>
       <td align=left><font color=blue size=+3 face="verdana"><u>datos obtenidos</u></font>
       </td>
      </tr>
     </table><br>
     <% set rs=server.createobject("adodb.recordset")
      sqltext="select * from lugar where n_factura='"&request("mes")&"' ;"
      set rs=conex.execute(sqltext)
      if not rs.eof then %>
     <table align=center border=1>
      <tr><%do while not rs.eof%>
       <th width="100" bgcolor="#00ccdde">
        <font size=+2>a&#209;o
        </font>
       </th>
       <td width="140" align=center>
        <font size=+2><%response.write rs("ano")%>
        </font>
       </td>
      </tr>
      <tr>
       <th bgcolor="#00ccdde">
        <font size=+2>mes
        </font>
       </th>
       <td align=center>
        <font size=+2><%response.write rs("mes")%>
        </font>
       </td>
      </tr>
     </table><br>
     <table align=center border=1 >
      <tr align=center bgcolor="#00ccdd">
       <th width="150">n&#186; factura
       </th>
       <th width="140">concepto
       </th>
       <th width="100">importe
       </th>
      </tr>
      <tr><% do while not rs.eof %>
       <td align=center><%response.write rs("n_factura")%>
       </td>
       <td align=center><%response.write ucase(rs("concepto"))%>
       </td>
       <td align=center><%response.write formatnumber(rs("importe"),2)%> &#8364;
       </td>
      </tr>
     </table><br>
     <table align=right border=1>
      <% set conex=server.createobject("adodb.connection")
       conex.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("./bd/contabilidad.mdb") 
       set rs=server.createobject("adodb.recordset")
       sqltext="select sum(importe) as total from lugar where n_factura='"&request("mes")&"' ;"
       rs.open sqltext,conex,1 %>
      <tr>
       <td align=center width="100" bgcolor="#ff2222">
        <font size=+2>total
        </font>
       </td>
       <td align=center width="100">
        <font size=+2><%response.write formatnumber(rs("total"),2)%> &#8364;
        </font>
       </td>
      </tr><% rs.movenext
        loop %>   
     </table><br><br><br>
    <form method="get" action="mensual.html" >
     <table align=center cellspacing="6" cellpadding="2" border=0>
      <tr>
       <td>
        <button type="submit" style="width:auto;height:36px;font-size:10pt;background:#c0c0c0;border-radius:8px; "onclick="location.href='mensual.html'">
         <img src="ok.png" align="absmiddle" hspace='4'/> aceptar
        </button>
       </td>
      </tr>
     </table><br>
     <% loop
      end if
      conex.close
      set conex=nothing %>
    </form>
    </td>
   </tr>
  </table>
 </body>    
</html>

El problema que existe es que todo depende de las facturas y necesitaria una ayuda de como realizarlo.

Un saludo

¡Gracias! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas