Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/07/2013, 12:11
evoarte
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
consultas a base de datos en bucle for

Este es el código generado:

Código HTML:
Ver original
  1. <div style="position:relative;z-index:10;width:600px;padding:10px;" id="mostrarprecios" name="mostrarprecios">
  2.  
  3.  <div class="contabla">
  4.   <div class="confila">
  5.    <div class="concelda anchoc">Codigo</div>
  6.    <div class="concelda anchod">Descripción</div>
  7.    <div class="concelda anchop">Precio</div>
  8.    <div class="concelda anchou">Unidad</div>
  9.    <div class="concelda anchoi">&nbsp;</div>
  10.    <div class="concelda anchoa">&nbsp;</div>
  11.  </div>
  12. </div> 
  13.  
  14.  <div class="contabla">
  15.   <div style="background-color: rgb(245, 245, 245);" class="confila" id="9517" onmouseover="javascript:color(this.id,1);" onmouseout="javascript:color(this.id,2);">
  16.    <div class="concelda anchoc">D35AC010</div>
  17.    <div class="concelda anchod">PINTURA PLÁSTICA COLOR</div>
  18.    <div class="concelda anchop">5,38</div>
  19.    <div class="concelda anchou"></div>
  20.    <div class="concelda anchoi">
  21.     <a href="#" onclick="javascript:abrei('ainfo0','aimage0');"><img id="aimage0" src="images/precios/subir.png"></a>
  22.    </div>
  23.    <div class="concelda anchoa">
  24.     <a href="#" onclick="javascript:agregarPartida('D35AC010','PINTURA PLÁSTICA COLOR','5,38','m²');"><img id="apartida0" src="precios/apartida.png"></a>
  25.    </div>
  26.   </div>
  27.  
  28. </div>
  29.  
  30. <div style="display: table-row;" class="ainfo" id="ainfo0">
  31.  
  32.   <a class="derecha" href="#" onclick="javascript:var capaio = document.getElementById('ainfo0');capaio.style.display = 'none';document.getElementById('aimage0').src = 'images/precios/bajar.png';"><img id="aimage0" src="images/precios/cerrar.png"></a>
  33.  
  34.   <span>m². Pintura plástica color lisa PROCOLOR mix o similar en paramentos verticales y horizontales, lavable dos manos, i/lijado y emplastecido.</span>
  35. <br>
  36.  
  37. <div class="contabla">
  38.   <div class="confila">
  39.     <div class="concelda">Elemento</div>
  40.     <div class="concelda">Cantidad</div>
  41.     <div class="concelda">Unidad</div>
  42.     <div class="concelda">Concepto</div>
  43.     <div class="concelda">Precio</div>
  44.     <div class="concelda">Importe</div>
  45.   </div>
  46.   <div class="confila">
  47.     <div class="concelda">U01FZ101</div>
  48.     <div class="concelda">0,06</div>
  49.     <div class="concelda">h</div>
  50.     <div class="concelda">Oficial 1ª pintor</div>
  51.     <div class="concelda">0,00</div>
  52.     <div class="concelda">0,00</div>
  53.   </div>
  54.   <div class="confila">
  55.     <div class="concelda">U01FZ105</div>
  56.     <div class="concelda">0,06</div>
  57.     <div class="concelda">h</div>
  58.     <div class="concelda">Ayudante pintor</div>
  59.     <div class="concelda">0,00</div>
  60.     <div class="concelda">0,00</div>
  61.   </div>
  62.   <div class="confila">
  63.      <div class="concelda">U36CA001</div>
  64.      <div class="concelda">0,50</div>
  65.      <div class="concelda">kg</div>
  66.      <div class="concelda">Pintura plástica mate color Bruguer</div>
  67.      <div class="concelda">0,00</div>
  68.      <div class="concelda">0,00</div>
  69.   </div>
  70.   <div class="confila">
  71.     <div class="concelda">%CI</div>
  72.     <div class="concelda">0,07</div>
  73.     <div class="concelda">%</div>
  74.     <div class="concelda">Costes indirectos..(s/total)</div>
  75.     <div class="concelda">0,00</div>
  76.     <div class="concelda">0,00</div>
  77.   </div>
  78. </div>
  79.  
  80. </div>


con este codigo asp utilizando javascript:

Código ASP:
Ver original
  1. var consulta  = "select TOP 20 c.clave, c.codigo, c.unidad, c.resumen, c.precio, c.fecha, c.tipo, t.texto ";
  2.             consulta += "from precioc AS c INNER JOIN preciot AS t ON c.codigo = t.codigo ";
  3.             consulta += "where c.codigo LIKE \'D_______\' ";
  4.             consulta += "and c.resumen LIKE \'%" + vcolu + "%\' ";
  5.             consulta += "COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI ";
  6.             consulta += "order by c.codigo, c.resumen ASC"
  7.            
  8.         consulSE();             // Ejecutamos la CONSULTA.                                                      //
  9.        
  10.         var respuestas = dato;
  11.             dato       = '';
  12.        
  13.     //  2. Mostramos las respuestas encontradas para la búsqueda realizada.                                 //
  14.  
  15.         if ( !respuestas == 0 || !respuestas == null || !respuestas == undefined || !respuestas == "" || !respuestas == " " )
  16.         {
  17. %>          <div class="contabla">
  18.                 <div class="confila">
  19.                     <div class="concelda anchoc">Codigo</div>
  20.                     <div class="concelda anchod">Descripción</div>
  21.                     <div class="concelda anchop">Precio</div>
  22.                     <div class="concelda anchou">Unidad</div>
  23.                     <div class="concelda anchoi">&nbsp;</div>
  24.                     <div class="concelda anchoa">&nbsp;</div>
  25.                 </div>
  26.             </div> 
  27. <%
  28.             for (i=0;i<respuestas.length;i++)
  29.             {
  30.                 var importela = respuestas[i][4] * 1 * ( 1 + igag + ibee );
  31. %>              <div class="contabla">
  32.                     <div class="confila" id="<%=respuestas[i][0]%>" onMouseOver="javascript:color(this.id,1);" onMouseOut="javascript:color(this.id,2);">
  33.                         <div class="concelda anchoc"><%=respuestas[i][1]%></div>
  34.                         <div class="concelda anchod"><%=respuestas[i][3]%></div>
  35.                         <div class="concelda anchop"><%=formatNumber(importela)%></div>
  36.                         <div class="concelda anchou"><%=respuestas[i][2]%></div>
  37.                         <div class="concelda anchoi">
  38.                             <a href="#" onClick="javascript:abrei('<%='ainfo' + i%>','<%='aimage' + i%>');"><img id="<%='aimage' + i%>" src="http://www.presupueston.com/images/precios/bajar.png" /></a>
  39.                         </div>
  40.                         <div class="concelda anchoa">
  41.                             <a href="#" onClick="javascript:agregarPartida('<%=respuestas[i][1]%>','<%=respuestas[i][3]%>','<%=formatNumber(importela)%>','<%=respuestas[i][2]%>');"><img id="<%='apartida' + i%>" src="http://www.presupueston.com/images/precios/apartida.png" /></a>
  42.                         </div>
  43.                     </div>
  44.                 </div>
  45.  
  46.                 <div class="ainfo" id="<%='ainfo' + i%>">  
  47.                     <a class="derecha" href="#" onClick="javascript:var capaio = document.getElementById('<%='ainfo' + i%>');capaio.style.display = 'none';document.getElementById('<%='aimage' + i%>').src = 'http://www.presupueston.com/images/precios/bajar.png';"><img id="<%='aimage' + i%>" src="http://www.presupueston.com/images/precios/cerrar.png" /></a>
  48.                     <span><%=respuestas[i][7]%></span>
  49.                     <br />
  50. <%
  51.                 var consulta  = "select d.clave, d.codigo, d.concepto, d.rendimiento, c.unidad, c.resumen, c.precio ";
  52.                     consulta += "from preciod AS d INNER JOIN precioc AS c ON d.concepto = c.codigo ";
  53.                     consulta += "where d.codigo = \'" + respuestas[i][1] + "\' ";
  54.                     consulta += "order by d.clave, d.concepto ASC"
  55.            
  56.                 consulSE();             // Ejecutamos la CONSULTA.                                              //
  57.        
  58.                 var epartida = dato;
  59.                     dato     = '';
  60.  
  61.                 if ( !epartida == 0 || !epartida == null || !epartida == undefined || !epartida == "" || !epartida == " " )
  62.                 {
  63. %>                  <div class="contabla">
  64.                             <div class="confila">
  65.                                 <div class="concelda">Elemento</div>
  66.                                 <div class="concelda">Cantidad</div>
  67.                                 <div class="concelda">Unidad</div>
  68.                                 <div class="concelda">Concepto</div>
  69.                                 <div class="concelda">Precio</div>
  70.                                 <div class="concelda">Importe</div>
  71.                             </div>
  72. <%
  73.                     var sucodi   = 0;
  74.                     var eimporte = 0;
  75.                     var eprecio  = 0;
  76.                                    
  77.                     for (j=0;j<epartida.length;j++)
  78.                     {
  79.                         if ( !epartida[j][2] == String("%CI") )
  80.                         {
  81.                             sucodi  += ( epartida[j][3] * epartida[j][6] );
  82.                             eimporte = epartida[j][3] * epartida[j][6];
  83.                             eprecio  = epartida[j][6];
  84.                         }
  85.                         else
  86.                         {
  87.                             eprecio  = sucodi;
  88.                             eimporte = sucodi * epartida[j][3];
  89.                         }
  90.  
  91. %>                          <div class="confila">
  92.                                 <div class="concelda"><%=epartida[j][2]%></div>
  93.                                 <div class="concelda"><%=formatNumber(epartida[j][3])%></div>
  94.                                 <div class="concelda"><%=epartida[j][4]%></div>
  95.                                 <div class="concelda"><%=epartida[j][5]%></div>
  96.                                 <div class="concelda"><%=formatNumber(eprecio)%></div>
  97.                                 <div class="concelda"><%=formatNumber(eimporte)%></div>
  98.                             </div>
  99. <%                 
  100.                     }
  101.                    
  102. %>                  </div>
  103. <%                 
  104.                 }
  105.                 else
  106.                 {
  107. %>                  <p>Esta partida no tiene detalle de elementos de coste</p>
  108. <%
  109.                 }
  110.  
  111. %>              </div>
  112. <%             
  113.             }
  114.         }
  115.         else
  116.         {
  117. %>          No hay partidas que se correspondan con la consulta, utiliza una sola palabra.
  118. <%         
  119.         }

Llevo todo el día dando vueltas y no termino de verlo, pero creo que viendolo con claridad se puede ver al vuelo:

- Por un lado no recorre todos los elementos del primer for, solo el primero elemento.
- Este if no me funciona: if ( !epartida[j][2] == String("%CI") ), cuando debería por que el valor %CI se muestra por pantalla tal cual.

gracias, un saludo.

Última edición por evoarte; 04/07/2013 a las 13:44