Programación General > Java
Resulset
(1/1)
OscarJavier:
--- Código: Text --- sql = "SELECT * FROM Productos WHERE nombreAlmacen="+"'"+x1+"'"; rs = stmt.executeQuery(sql); sql1 = "SELECT * FROM InventarioFisico WHERE nombreAlmacen="+"'"+x1+"'"; rs1 = stmt1.executeQuery(sql1); try { sql = "SELECT * FROM Productos WHERE nombreAlmacen="+"'"+x1+"'"; rs = stmt.executeQuery(sql); sql1 = "SELECT * FROM InventarioFisico WHERE nombreAlmacen="+"'"+x1+"'"; rs1 = stmt1.executeQuery(sql1); jTextArea1.append(" Teorico"+"\tFisico"+"\tUlt.Costo"+"\tDiferencia"+"\tValor.Dif"+"\tConc"+"\tReferencia"+"\tDescripción"); jTextArea1.append("\n"); while(rs.next() && rs1.next()) { w = rs.getString("nombreAlmacen"); b = rs.getInt("cantidad"); int l = b; c1 = c1 + b; c = rs.getInt("preciopublico"); d = rs.getInt("preciocompra"); e = rs1.getInt("cantidad"); int m = e; c2 = c2 + e; int t = (e-b); //if(t!=0) //{ g = rs1.getInt("preciocompra"); jTextArea1.append("\n "+l+"\t"+m+"\t"+c+"\t"+t+"\t"+(c*t)); if(t>=0) { jTextArea1.append("\tS"); p = p + t; s = s + (c*t); } else { jTextArea1.append("\tF"); q = q + t; r = r + (c*t); } jTextArea1.append("\t"+rs1.getString("producto")+"\t"+rs1.getString("descripcion")); //} } rs.close(); rs1.close(); jTextArea1.append("\n\n\n "+dia+"/"+mes+"/"+año); 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); jTextArea9.append(""+x1); q = p = s = r = c1 = c2 = 0; x1 = ""; } catch (SQLException e) { //jTextArea2.append("\nError ejecutando SQL " + e.getMessage()); } }
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:
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
Navegación
Ir a la versión completa