• Domingo 22 de Septiembre de 2024, 01:25

Autor Tema:  Resulset  (Leído 1050 veces)

OscarJavier

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Resulset
« en: Miércoles 1 de Marzo de 2006, 01:19 »
0
Código: Text
  1.  
  2.  
  3. sql = "SELECT * FROM Productos WHERE nombreAlmacen="+"'"+x1+"'";
  4.             rs = stmt.executeQuery(sql);
  5.            
  6.             sql1 = "SELECT * FROM InventarioFisico WHERE nombreAlmacen="+"'"+x1+"'";
  7.             rs1 = stmt1.executeQuery(sql1);
  8.  
  9.  
  10.  
  11. try
  12.   {
  13.             sql = "SELECT * FROM Productos WHERE nombreAlmacen="+"'"+x1+"'";
  14.             rs = stmt.executeQuery(sql);
  15.            
  16.             sql1 = "SELECT * FROM InventarioFisico WHERE nombreAlmacen="+"'"+x1+"'";
  17.             rs1 = stmt1.executeQuery(sql1);
  18.            
  19.             jTextArea1.append("   Teorico"+"\tFisico"+"\tUlt.Costo"+"\tDiferencia"+"\tValor.Dif"+"\tConc"+"\tReferencia"+"\tDescripción");
  20.             jTextArea1.append("\n");
  21.            
  22.             while(rs.next() && rs1.next())
  23.             {
  24.                 w = rs.getString("nombreAlmacen");
  25.                 b = rs.getInt("cantidad");
  26.                 int l = b;
  27.                
  28.                 c1 = c1 + b;
  29.                 c = rs.getInt("preciopublico");
  30.                 d = rs.getInt("preciocompra");                
  31.                 e = rs1.getInt("cantidad");  
  32.                
  33.                 int m = e;  
  34.                
  35.                 c2 = c2 + e;
  36.                 int t = (e-b);
  37.                 //if(t!=0)
  38.                 //{
  39.                     g = rs1.getInt("preciocompra");
  40.                     jTextArea1.append("\n   "+l+"\t"+m+"\t"+c+"\t"+t+"\t"+(c*t));                
  41.                     if(t>=0)
  42.                     {    
  43.                         jTextArea1.append("\tS");
  44.                         p = p + t;
  45.                         s = s + (c*t);
  46.                     }
  47.                     else
  48.                     {
  49.                         jTextArea1.append("\tF");
  50.                         q = q + t;
  51.                         r = r + (c*t);
  52.                     }      
  53.                     jTextArea1.append("\t"+rs1.getString("producto")+"\t"+rs1.getString("descripcion"));
  54.                 //}
  55.             }
  56.             rs.close();
  57.             rs1.close();
  58.             jTextArea1.append("\n\n\n   "+dia+"/"+mes+"/"+año);    
  59.             jTextArea1.append("\n\n\n   Sobrantes"+"\t"+p+"\t\t"+s+"\n   Faltantes"+"\t"+(-q)+"\t\t"+(-r)+"\n   Neto"+"\t"+(p-(-q))+"\t\t"+(s-(-r))+"\n   Fisico"+"\t"+c2+"\n   Existencia"+"\t"+c1);            
  60.             jTextArea9.append(""+x1);              
  61.             q = p = s = r = c1 = c2 = 0;
  62.             x1 = "";
  63.         }
  64.         catch (SQLException e)
  65.   {
  66.             //jTextArea2.append("\nError ejecutando SQL " + e.getMessage());
  67.         }        
  68.     }
  69.  
  70.  


estoy haciendo esta brutalidad,,, cuando cojo los resulset con un while aparte me imprime las cantidades bien....

pero como lo estoy haciendo ahorita un while con los dos resulset me imprime cantidades diferentes a la base como puedo solucionar esto,,, gracias...

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Resulset
« Respuesta #1 en: Miércoles 1 de Marzo de 2006, 10:46 »
0
Buenas...

No entiendo exactamente lo que quieres decir con que te imprime resultados diferentes de la base... ¿qué base?

En principio, te diría que el código es correcto, pero que sólo te imprimirá entradas hasta que se agote uno de los ResultSet (el más pequeño)

Creo que la mejor idea sería que modificases tu código para hacer una sóla llamada a la Base de Datos, obteniendo un solo ResultSet:

SELECT *
FROM Productos prod, InventarioFisico inv
WHERE prod.nombreAlmacen = XXXX
   AND  prod.nombreAlmacen = inv.nombreAlmacen
 
  AND  prod.kkkk = inv. kkkk  
#para todos los campos que puedas unir entre estas dos tablas.


De todas formas... ¿Estás seguro de que la lógica que usas dentro del bucle while doble es la misma que cuando haces dos bucles while? Aunque esté mal el resultado, ¿el número de filas que imprime es el mismo en los dos casos?




Gracias.



Silverfox