Цель этого - проконсультироваться с двумя компонентами даты. Но потом приходит громоздкая вещь, если можно так сказать.
Во-первых, я делаю запрос, из которого возвращаются данные , который я храню в массиве, и который с теми же данными я использую, чтобы сделать другой запрос, чтобы сделать выбор, я вставляю его в цикл for. Именно здесь будут проводиться многочисленные консультации, и в соответствии с ними я сохраняю их в матрице полученных данных.
Вот моя проблема, потому что нахождение в цикле будет делать необходимые запросы, но я не получаю матрицу для сохранения всех полученных данных, я не говорю, что они плохо их хранят, но находясь в цикле for, матрица получит данные последней итерации, поэтому на матрицу наступают или записываются те же самые предыдущие итерации, что логично, я знаю об этом, но в конце я поняла, что Я закончил делать весь код (извините за мое невежество) .
Я прошу вашей помощи, каким образом вы можете сохранить все данные запросов в соответствии с объемом данных, которые я присоединяю массив-список и которые в конце сохраняются в одной матрице .
Код, который я сделал:
String[] columnasdetalle = {"IDDETCOMPRA", "IDCOMPRA", "IDINSUMO", "NRO FACTURA COMPRA", "INSUMO", "PRECIO", "CANTIDAD"}; // columnas de la tabla
ArrayList<String> nrosfacturas = busquedacompra.NroComprasFechas(fecha1, fecha2); // consulta que despues uso sus datos para las multiples consultas
int reg = busquedacompra.DevolverRegistros("detallescompras"); // cantidad de filas que tendran
Object[][] guardardatos = new Object[reg][columnasdetalle.length]; // length = cantidad de n posiciones que tendran una fila de la matriz
for (int i = 0; i < nrosfacturas.size(); i++) {
Object[][] datos = busquedacompra.MostrarDatosDetallesComprasNroFactura(nrosfacturas.size(), nrosfacturas.get(i)); // esto es un metedo que utilizo para el llenado de la tabla con los datos obtenidos del array
guardardatos = datos;
i++; // incremento para saber si hay mas de un dato del array
while(nrosfacturas.size() > i) { // si hay mas datos, ahora lo condicion de consulta con el ciclo while
datos = busquedacompra.MostrarDatosDetallesComprasNroFactura(nrosfacturas.size(), nrosfacturas.get(i));
guardardatos = datos;
i++;
}
}
datosdetallecompra = guardardatos; // lo guardo en matriz de tipo Object
datosdetalle = new DefaultTableModel(datosdetallecompra, columnasdetalle); // lo guardo en DefaultTableMode
jTable2.setModel(datosdetalle);// finalmente se lo incorpora a la tabla con su datos y sus columnas.
Я объясняю, как получить данные из метода ShowDataDetailsShoppingInvoice ():
Сначала загрузите данные из пакета контроллера следующим методом:
public Object[][] MostrarDatosDetallesComprasNroFactura(int reg,String nrofactura) {
String[] columnas = {"iddetallecompra", "idcompra", "idinsumo", "NroCompra", "descripcion", "Precio", "Cantidad"};
return sql.DatosDetallesComprasVentas(columnas, reg,"select d.iddetallecompra,c.idcompra,i.idinsumo,c.NroCompra,i.descripcion,d.Precio,d.Cantidad from compras c LEFT JOIN detallescompras d on c.idcompra=d.idcompra LEFT JOIN insumos i on i.idinsumo=d.idinsumo where d.activo=1 and c.NroCompra like '%"+nrofactura+"%' order by c.NroCompra desc");
}
Затем я использую метод из класса SQL-инъекций, со следующим методом, который я получаю здесь нужные мне данные (здесь будут понятны данные, которые я использовал из предыдущего метода):
public Object[][] DatosDetallesComprasVentas(String colName[], int reg, String sql) {
Object[][] data = new Object[reg][colName.length];
Object datos[] = new Object[colName.length];
try {
ps = con.conectado().prepareStatement(sql);
res = ps.executeQuery();
int s = 0;
while (res.next()) {
for (int i = 0; i < colName.length; i++) {
datos[i] = res.getObject(colName[i]);
data[s][i] = datos[i];
}
s++;
}
ps.close();
res.close();
} catch (SQLException e) {
e.printStackTrace();
}
return data;
}
Большое спасибо за вашу помощь! У меня есть дни, чтобы я не смог ее решить.
В следующей секции кода
for (int i = 0; i < nrosfacturas.size(); i++) {
Object[][] datos = Busquedacompra.MostrarDatosDetallesComprasNroFactura(nrosfacturas.size(), nrosfacturas.get(i));
guardardatos = datos; // <-- Aca el error, cada vez que ingresa al for borra los datos anteriores
i++;
while(nrosfacturas.size() > i) {
datos = busquedacompra.MostrarDatosDetallesComprasNroFactura(nrosfacturas.size(), nrosfacturas.get(i));
guardardatos = datos; //Aca igual
i++;
}
}
он Был бы должен делать копией array с классом Arrays (Arrays.copyOf или Arrays.copyOfRange) https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
while (i < nrosfacturas.size()) { Object[][] guardardatos = busquedacompra.MostrarDatosDetallesComprasNroFactura(nrosfacturas.size(), nrosfacturas.get(i)); arraynuevo = Arrays.copyOf(guardardatos, nrosfacturas.size()); i++; }
Большое спасибо из-за того, что берет твое время в решении моей проблемы! – Exe Herrera 27.11.2019, 20:32