Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Reducir cantidades con mysql

Estas en el tema de Reducir cantidades con mysql en el foro de Java en Foros del Web. Buen dia amigos, Estoy atorado con una programacion, es la siguiente: Código: try{ miConexion = BD.GetConnection(); Statement stm1 = miConexion.createStatement(); Statement stm2 = miConexion.createStatement(); Statement ...
  #1 (permalink)  
Antiguo 05/11/2014, 18:08
 
Fecha de Ingreso: noviembre-2010
Mensajes: 70
Antigüedad: 13 años, 5 meses
Puntos: 0
Reducir cantidades con mysql

Buen dia amigos,

Estoy atorado con una programacion,
es la siguiente:
Código:
try{
            miConexion = BD.GetConnection();
            Statement stm1 = miConexion.createStatement();
            Statement stm2 = miConexion.createStatement();
            Statement stm3 = miConexion.createStatement();
            Statement stm4 = miConexion.createStatement();

   //Guarda Factura******************
            String sql1 = "INSERT INTO facturacion (Codigo,Fecha,Cliente,CodigoCliente,"
                    +"ValorFacturado,TipoPago,Credito,Abona,Debe,AltaPor) VALUES('"+txtCodigo.getText()+"','"
                    +txtFecha.getText()+"','"+txtNombre.getText()+"','"+txtCodigoCliente.getText()+"','"
                    +txtTotalFin.getText().replace(",","")+"','"+cbTipoPago.getSelectedItem()+"','"
                    +chkCredito.isSelected()+"','"+txtRecibe.getText().replace(",","")+"','"
                    +txtCambio.getText().replace(",","")+"','"+Seguridad.Acceso.UsuarioActivo+"')";
            stm1.execute(sql1);
            
   //Guarda Detalles de factura  *************************
            int FilasTablaDetalle = tDetalles.getRowCount();
            for(int x = 0; x < FilasTablaDetalle; x++){
                stm2.execute("INSERT INTO facturaciondetalle (CodigoFactura,CodigoItem,Descripcion,"
                    + "Cantidad,Unitario,Total) VALUES('"+txtCodigo.getText()+"','"
                    +tD.getValueAt(x, 0)+"','"+tD.getValueAt(x, 1)+"','"+tD.getValueAt(x, 2)+"','"
                    +tD.getValueAt(x, 3).toString().replace(",","")+"','"+tD.getValueAt(x, 4).toString().replace(",","")+"')");
            }
            
   //Reduce Inventario *******************************
            for(int x = 0; x < FilasTablaDetalle; x++){
                String CodigoItem = tD.getValueAt(x,0).toString();
                try (ResultSet rs = stm3.executeQuery("SELECT Cantidades FROM inventario WHERE Codigo = '"+CodigoItem+"'")) {
                    rs.next();
                    long Calcula = rs.getLong("Cantidades") - Long.valueOf(tD.getValueAt(x, 0).toString().replace(",",""));
                    stm4.execute("UPDATE inventario SET Cantidades = '"+Calcula+"' WHERE Codigo = '"
                            +CodigoItem+"'");
                }
            }
            JOptionPane.showMessageDialog(FacturaConfirma, "Guardado");
        }catch(SQLException e){
            BD.ErrorLog = e.getMessage()+" al guardar la factura Fac@0003";
            LogFile.CreaLog();
        }
Lo que hace es
tomar los valores de la factura,
luego toma los detalles de la factura de un jTable,
Luego toma las cantidades junto con los codigos de los articulos en el jTable.

todo bien hasta ahi captura e inserta y actualiza.

Pero, el resultset me suma las cantidades por cada vuelta y me reduce el inventario incrementalmente.
ejemplo.
ingreso tres productos de 1 cantidad cada uno.
al momento de reducir del inventario lo hace asi.

Stock del producto 1 es 1000
Stock del producto 2 es 1000
Stock del producto 3 es 1000

despues de aplicar el UPDATE el estock de los productos queda asi
Stock del producto 1 es 999
Stock del producto 2 es 998
Stock del producto 3 es 997

Espero haberme dado a entender
y que me puedan orientar un poco, Muchas gracias
  #2 (permalink)  
Antiguo 06/11/2014, 01:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Reducir cantidades con mysql

Buenas,

Viendo por encima tu codigo esta claro que la linea conflicitiva es la que calcula la cantidad antes de hacer el update:

Código Java:
Ver original
  1. long Calcula = rs.getLong("Cantidades") - Long.valueOf(tD.getValueAt(x, 0).toString().replace(",",""));

En mi opinion, y sin saber como esta el resto de tu codigo, me da la sensacion de que cuando haces tD.getValueAt(x, 0) estas recuperando la primera columna de cada fila, que se debe corresponder con el ID del producto.
Por tanto, estas restando de el ID en lugar de la cantidad.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 06/11/2014, 06:42
 
Fecha de Ingreso: noviembre-2010
Mensajes: 70
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Reducir cantidades con mysql

Muchas Gracias.
A veces son cosas tan pequeñas que se pasan por alto, tu respuesta es la correcta, hacia referencia al Codigo.

Etiquetas: jtable, mysql, programa, reducir, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.