Código:
aqui todo bien , despues hago una consulta sql a mi base y en base a los resultados comienzo a popular el modelo de la tabla de la siguiente manera//declaro el modelo
DefaultTableModel ModeloVenta;
//declaro mi arreglo que seran los registros que se iran agregando a mi modelo de tabla
String [] RegistroDetalle = new String [9];
//al iniciar la clase arranco la declaracion del modelo y lo asigno a un jtable
String [] TitulosDetalle = {"ID","ARTICULO","DESCRIPCION","VARIEDAD","TALLA","BARCODE","PRECIO","CANTIDAD","TOTAL"};
ModeloDetalleVenta = new DefaultTableModel(null,TitulosDetalle);
tblDetalleVenta.setModel(ModeloDetalleVenta);
Código:
despues de agregar el registro debo correr una rutina para totalizar los contenidos de la tabla con el siguiente metodopublic void BuscarCodigo()throws SQLException{
ConexionMySQL ConexionMysql = new ConexionMySQL();
Connection cn = ConexionMysql.Conectar();
try{
Statement stCodigo = cn.createStatement();
ResultSet rsCodigo = stCodigo.executeQuery("select t1.id_art,t1.articulo,t1.descripcion,t2.variedad,t3.talla,t3.barcode,t4.precio_local from articulos as t1 left outer join variedades as t2 on t1.id_var = t2.id left outer join bc_articulos as t3 on t1.id_art = t3.id_art left outer join listaprecios_local as t4 on t1.id_art = t4.id_art where t3.barcode = '" + Barcode + "'");
if(!rsCodigo.next() && rsCodigo.getRow()==0){
JOptionPane.showMessageDialog(null,"Articulo no registrado");
txtCodigo.setText("");
txtCodigo.requestFocus();
}else{
rsCodigo.beforeFirst();
while(rsCodigo.next()){
RegistroDetalle [0] = rsCodigo.getString("ID_ART");
RegistroDetalle [1] = rsCodigo.getString("ARTICULO");
RegistroDetalle [2] = rsCodigo.getString("DESCRIPCION");
RegistroDetalle [3] = rsCodigo.getString("VARIEDAD");
RegistroDetalle [4] = rsCodigo.getString("TALLA");
RegistroDetalle [5] = rsCodigo.getString("BARCODE");
if(rsCodigo.getString("PRECIO_LOCAL")== null){
RegistroDetalle [6] = "0";
RegistroDetalle [8] = "0";
}else{
RegistroDetalle [6] = rsCodigo.getString("PRECIO_LOCAL");
RegistroDetalle [8] = rsCodigo.getString("PRECIO_LOCAL");
}
RegistroDetalle [7] = "1";
}
ModeloDetalleVenta.addRow(RegistroDetalle);
TotalesVenta();
txtCodigo.setText("");
txtCodigo.requestFocus();
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
Código:
public void TotalesVenta(){
int Filas;
TotalArticulos = 0;
ImporteTotal = 0;
Subtotal = 0;
Iva = 0;
Filas = tblDetalleVenta.getRowCount();
for(int iVentas = 0;iVentas < Filas ;iVentas++){
TotalArticulos = TotalArticulos + Integer.parseInt((String)ModeloDetalleVenta.getValueAt(iVentas,7));
ImporteTotal = ImporteTotal + Double.parseDouble((String)ModeloDetalleVenta.getValueAt(iVentas,8));
}
Subtotal = ImporteTotal / (1 + TasaIva);
Iva = ImporteTotal - Subtotal;
lblSubtotal.setText(df.format(Subtotal));
lblIva.setText(df.format(Iva));
lblImporteTotal.setText(df.format(ImporteTotal));
lblTotalArticulos.setText(String.valueOf(TotalArticulos));
}
todo funciona bien hasta que hago una funcion para modificar el precio , despues de ejecutarlo , no me totaliza como lo estaba haciendo y me tira un error
Código:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String at jsantiago_pv.VentasMostrador.TotalesVenta(VentasMostrador.java:432) at jsantiago_pv.VentasMostrador.txtNuevoPrecioActionPerformed(VentasMostrador.java:1527) at jsantiago_pv.VentasMostrador.access$400(VentasMostrador.java:35) at jsantiago_pv.VentasMostrador$5.actionPerformed(VentasMostrador.java:907) at javax.swing.JTextField.fireActionPerformed(JTextField.java:508) at javax.swing.JTextField.postActionEvent(JTextField.java:721) at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661) at javax.swing.JComponent.processKeyBinding(JComponent.java:2879) at javax.swing.JComponent.processKeyBindings(JComponent.java:2926) at javax.swing.JComponent.processKeyEvent(JComponent.java:2842) at java.awt.Component.processEvent(Component.java:6281) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1908) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:752) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1017) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:717) at java.awt.Component.dispatchEventImpl(Component.java:4730) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
el codigo de la rutina para cambiar el valor del precio y total de mi tabla es la siguiente
Código:
no se si me pudieran ayudar en como solucionar el error que me tira , que al parecer es cuando recibe normamente la funcion un string y al momento de parsearlo a double me detiene la funcion , como asignar los valores de cantidad y total del modelo sin que me envie el error estare muy agradecido de verdad , de antemano aprecio el tiempo se tomaron para leer mi problema y espero su ayuda
private void txtNuevoPrecioActionPerformed(java.awt.event.ActionEvent evt) {
int Art = tblDetalleVenta.getSelectedRow();
int Cant;
Double Total;
ModeloDetalleVenta = (DefaultTableModel)tblDetalleVenta.getModel();
ModeloDetalleVenta.setValueAt(Double.parseDouble(txtNuevoPrecio.getText()), Art,6);
Cant = Integer.parseInt((String)ModeloDetalleVenta.getValueAt(Art,7));
Total = Double.parseDouble(txtNuevoPrecio.getText()) * Cant;
ModeloDetalleVenta.setValueAt(Total,Art,8);
CambioPrecioForm.dispose();
txtNuevoPrecio.setText("");
TotalesVenta();
// TODO add your handling code here:
}


