Java - Problema al grabar datos (grilla)

 
Vista:
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema al grabar datos (grilla)

Publicado por Hector (63 intervenciones) el 08/08/2022 17:52:16
Hola amigos del foro, esperando que todos se encuentren muy bien de salud, he aquí de nuevo molestando tengo un problema al grabar una grilla a su respectiva tabla de datos, llevo desde el viernes tratando de solucionarlo y no me funciona, a continuación les presento el método paso a paso. 1.- lo primero escojo el número de la orden de compra y este trae los datos ya grabados con anterioridad.

private void cmbordenActionPerformed(java.awt.event.ActionEvent evt) {
if (cmborden.getSelectedItem() != null) {
List<String[]> datos = MyQuery.getInstance().executeQuery("select N_Compra,Nombre_Proveedor,Rut_Proveedor,Direccion_Proveedor,Contacto_Proveedor from orden_compra where N_Compra = ? and activo = 1", cmborden.getSelectedItem().toString());
if (datos != null && !datos.isEmpty()) {
datos.forEach(d -> {
txtorden.setText(d[0]);
txtnombre.setText(d[1]);
txtrut.setText(d[2]);
txtdireccion.setText(d[3]);
txtcontacto.setText(d[4]);
mostrardatos(txtorden.getText());
contar();
sumarep.setEnabled(true);
sumarep.requestFocus();
});
}
}
}
si la orden se encuentra se dirige a mostrardatos.

public void mostrardatos(String Valor) {
List<String[]> l = Valor.isEmpty()
? MyQuery.getInstance().executeQuery("select ID,N_Filas,Cant_Repuestos,Repuestos,Valor_Repuestos,Patente_Vehiculo,N_Compra,Activo from orden_compra1")
: MyQuery.getInstance().executeQuery("select ID,N_Filas,Cant_Repuestos,Repuestos,Valor_Repuestos,Patente_Vehiculo,N_Compra,Activo from orden_compra1 where N_Compra = ?", Valor);
String[] columns = {
"ID",
"Nº Filas",
"Cant.",
"Repuestos",
"Valor",
"Patente",
"N° Compra",
"Activo"
};
String[][] data = new String[l.size()][columns.length];
for (int i = 0; i < l.size(); i++) {
data[i] = l.get(i);
}
DefaultTableModel dtm = new DefaultTableModel(data, columns);
tblDatos.setModel(dtm);
tblDatos.getColumnModel().getColumn(1).setPreferredWidth(25);
tblDatos.getColumnModel().getColumn(2).setPreferredWidth(15);
tblDatos.getColumnModel().getColumn(3).setPreferredWidth(210);
tblDatos.getColumnModel().getColumn(4).setPreferredWidth(50);
TableColumn columna = tblDatos.getColumnModel().getColumn(0);
TableColumn columna1 = tblDatos.getColumnModel().getColumn(5);
TableColumn columna2 = tblDatos.getColumnModel().getColumn(6);
TableColumn columna3 = tblDatos.getColumnModel().getColumn(7);
columna.setMaxWidth(0);
columna.setMinWidth(0);
columna.setPreferredWidth(0);
columna1.setMaxWidth(0);
columna1.setMinWidth(0);
columna1.setPreferredWidth(0);
columna2.setMaxWidth(0);
columna2.setMinWidth(0);
columna2.setPreferredWidth(0);
columna3.setMaxWidth(0);
columna3.setMinWidth(0);
columna3.setPreferredWidth(0);
tblDatos.doLayout();
}
posteriormente sumo la columna de totales (valor).

private void sumarepActionPerformed(java.awt.event.ActionEvent evt) {
txtneto.setText("0");
int ta = tblDatos.getRowCount();
int c = 0;
do {
try {
int f = c++;
int n1 = Integer.parseInt(tblDatos.getValueAt(f, 4).toString());
String nu = txtneto.getText();
int nu2 = Integer.parseInt(nu);
long re1 = n1 + nu2;
txtneto.setText(String.valueOf(re1));
Double subtotal = Double.parseDouble(txtneto.getText());
Long iva = Math.round(subtotal * PORCENTAJE_IVA);
Long total = Math.round(subtotal + iva);
txtiva.setText(iva.toString());
txttotal.setText(total.toString());
} catch (Exception e) {

}
} while (c < ta);
sumarep.setEnabled(false);
if (cmdmodificar.equals(true)) {
cmdgrabar.setEnabled(false);
cmdeliminar.setEnabled(true);
} else {
cmdgrabar.setEnabled(true);
cmdeliminar.setEnabled(false);
}
}
luego me dirijo al botón grabar:

private void cmdgrabarActionPerformed(java.awt.event.ActionEvent evt) {
String[] params = {
txtnumero.getText().trim(),
txtorden.getText().trim(),
txtfecha.getText().trim(),
txtmes.getText().trim(),
txtaño.getText().trim(),
txtcredito.getText().trim(),
txtnombre.getText().trim(),
txtrut.getText().trim(),
txtdireccion.getText().trim(),
txtcontacto.getText().trim(),
txtneto.getText().trim(),
txtiva.getText().trim(),
txttotal.getText().trim(),
txtusuario.getText().trim(),
Label1.getText().trim(),
txtgrabar.getText().trim(),
txtmodificar1.getText().trim(),
txteliminar1.getText().trim(),
txtactivo.getText().trim(),};
MyQuery.getInstance().executeStatement("insert into Orden_Compra2 values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", params);
modelOrden.addElement(txtnumero.getText().trim());
grabar();
int d = 1;
Double val = Double.parseDouble(txtitem.getText());
if (val > d) {
grabar1();
}
JOptionPane.showMessageDialog(null, "Datos Grabados Satisfactoriamente");
limpiar();
}
y se dirige a grabar1, donde esta el error:

public void grabar1() {
DefaultTableModel dtm = (DefaultTableModel) tblDatos.getModel();
if (dtm.getRowCount() > 0) {
String sql = "INSERT INTO orden_compra3 (ID,N_Filas,Cant_Repuestos,Repuestos,Valor_Repuestos,Patente_Vehiculo,N_Compra,Activo) VALUES(?,?,?,?,?,?,?,?)";
for (int i = 0; i < dtm.getRowCount(); i++) {
String[] params = new String[dtm.getColumnCount()];
for (int j = 0; j < params.length; j++) {
params[j] = dtm.getValueAt(i, j).toString();
}
MyQuery.getInstance().executeStatement(sql, params);
}
} else {
JOptionPane.showMessageDialog(null, "no corresponde");
}
}
no entra al proceso de grabar ya que el dtm me indica valor 0 y se dirige al mensaje que no corresponde, no corresponde ya que anteriormente ya traje los datos y existen datos en la grilla, favor de ayudarme como puedo solucionar este proceso por ultimo obligar al dtm colocar el valor de 1 para que pueda ingresar, porque este proceso de grabar la grilla siempre posee datos, desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder