Domanda Risolto Ciclo for insert and update con condizione in excel

robot

Utente Bronze
31 Agosto 2017
37
12
4
34
Ultima modifica da un moderatore:
Visto che in excel ho sempre una lista dei valori di tipo stringa.
Se nella lista esiste id e targa fammi update, se non esiste id e targa fammi la insert. Secondo voi va bene quello che ho fatto? che cosa bisogna aggiustare?

Java:
for (i = 0; i < 280; i++) {

// Se il valore NON E' NULL: ID E TARGA FACCIO L'UPDATE

if ((listaIdVeicolo.get(i) != null || listaIdVeicolo.get(i).isEmpty() == true)

&& (lista_targa.get(i) != null || lista_targa.get(i).isEmpty()) == true) {

System.out.print("UPDATE veicolo" + " set" + " veicolo.data_fine_validita = " + "'"

+ lista_data_fine_validita.get(i) + "'" + "," + " veicolo.data_inizo_validita = " + "'"

+ lista_data_inizio_validita.get(i) + "'" + "," + " veicolo.classe_euro = " + "'"

+ lista_classe_euro.get(i) + "'" + "," + " veicolo.tipo_di_possesso= " + "'"

+ lista_tipo_di_possesso.get(i) + "'" + " where veicolo.id = " + "'"

+ listaIdVeicolo.get(i) + "'" + " and" + " veicolo.targa = " + "'" + lista_targa.get(i)

+ "'" + ";\n");



fw.write("UPDATE veicolo" + " set" + " veicolo.data_fine_validita = " + "'"

+ lista_data_fine_validita.get(i) + "'" + "," + " veicolo.data_inizo_validita = " + "'"

+ lista_data_inizio_validita.get(i) + "'" + "," + " veicolo.classe_euro = " + "'"

+ lista_classe_euro.get(i) + "'" + "," + " veicolo.tipo_di_possesso= " + "'"

+ lista_tipo_di_possesso.get(i) + "'" + " where veicolo.id = " + "'"

+ listaIdVeicolo.get(i) + "'" + " and" + " veicolo.targa = " + "'" + lista_targa.get(i)

+ "'" + ";\n");

}

else {

System.out.print(

"insert into veicolo (create_date,modified_date,uuid, classe_euro, codice_cliente_originario,contratto,data_fine_validita,data_inizio_validita, disponibilita,nazione,targa,tipo_di_possesso, id_anagrafica) "

+ "VALUES (" + "'" + timestamp + "'" + "," + "'" + timestamp + "'" + "," + "'"

+ listaveicoloUuid.get(i) + "'" + "," + "'" + lista_classe_euro.get(i) + "'"

+ "," + "'" + listaCodiceClienteOriginario.get(i) + "'" + "," + "'"

+ listaContratto.get(i) + "'" + "," + "'"

+ lista_data_fine_validita.get(i).toString() + "'" + "," + "'"

+ lista_data_inizio_validita.get(i).toString() + "'" + "," + "'"

+ listadisponibilita.get(i) + "'" + "," + "'" + listaNazione.get(i) + "'" + ","

+ "'" + lista_targa.get(i) + "'" + "," + "'" + lista_tipo_di_possesso.get(i)

+ "'" + "," + "'" + listaAnagrafica.get(i) + "'" + ")" + ";\n");



fw.write(

"insert into veicolo (create_date,modified_date,uuid, classe_euro, codice_cliente_originario,contratto,data_fine_validita,data_inizio_validita, disponibilita,nazione,targa,tipo_di_possesso, id_anagrafica) "

+ "VALUES (" + "'" + timestamp + "'" + "," + "'" + timestamp + "'" + "," + "'"

+ listaveicoloUuid.get(i) + "'" + "," + "'" + lista_classe_euro.get(i) + "'"

+ "," + "'" + listaCodiceClienteOriginario.get(i) + "'" + "," + "'"

+ listaContratto.get(i) + "'" + "," + "'"

+ lista_data_fine_validita.get(i).toString() + "'" + "," + "'"

+ lista_data_inizio_validita.get(i).toString() + "'" + "," + "'"

+ listadisponibilita.get(i) + "'" + "," + "'" + listaNazione.get(i) + "'" + ","

+ "'" + lista_targa.get(i) + "'" + "," + "'" + lista_tipo_di_possesso.get(i)

+ "'" + "," + "'" + listaAnagrafica.get(i) + "'" + ")" + ";\n");



}



}
 
Non si capisce nulla.
Puoi modificare il messaggio indentando il codice e inserendolo nell'argomentazione "CODE"?
 
Non capisco il senso di questo controllo:
Java:
(listaIdVeicolo.get(i) != null || listaIdVeicolo.get(i).isEmpty() == true)

Se non è vuota O se è vuota?
 
Non capisco il senso di questo controllo:
Java:
(listaIdVeicolo.get(i) != null || listaIdVeicolo.get(i).isEmpty() == true)

Se non è vuota O se è vuota?
Codice:
public void confrontaTarghe() throws IOException {

        VeicoloDb veicoloDb = new VeicoloDb();
        Spinelli spinelli = new Spinelli();
        int i, y;

        // Se la Targa e ID veicolo sono uguali Aggiungi ID nella Nuova colonna
        for (i = 0, y = 0; i < 280; i++, y++) {
            if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(y))) {
                System.out.println(
                        spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(y)
                                + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                // Scrivi nella riga i
                row = sheet.getRow(i);

                // Scrivi nella colonna AC indice 28
                cell = row.createCell(28);

                // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                FileOutputStream fos = new FileOutputStream(filePath);

                // Scrivi nel file
                wb.write(fos);

                // Chiudi il file
                fos.close();
                System.out.println("OK");

            }
        }
    }

lo rifatto è funziona
 
  • Mi piace
Reazioni: Hope
Ultima modifica:
Codice:
public void confrontaTarghe() throws IOException {

        VeicoloDb veicoloDb = new VeicoloDb();
        Spinelli spinelli = new Spinelli();
        int i, y;

        // Se la Targa e ID veicolo sono uguali Aggiungi ID nella Nuova colonna
        for (i = 0, y = 0; i < 280; i++, y++) {
            if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(y))) {
                System.out.println(
                        spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(y)
                                + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                // Scrivi nella riga i
                row = sheet.getRow(i);

                // Scrivi nella colonna AC indice 28
                cell = row.createCell(28);

                // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                FileOutputStream fos = new FileOutputStream(filePath);

                // Scrivi nel file
                wb.write(fos);

                // Chiudi il file
                fos.close();
                System.out.println("OK");

            }
        }
    }

lo rifatto è funziona

Però se provo in questo gli indici sballano come mai?
Codice:
public void confrontaTarghe() throws IOException {

        VeicoloDb veicoloDb = new VeicoloDb();
        Spinelli spinelli = new Spinelli();
        int i;

        // Se la Targa e ID veicolo sono uguali Aggiungi ID nella Nuova colonna
        for (i = 0; i < veicoloDb.getListCelltarga().size(); i++) {
            if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(i))) {
                System.out.println(
                        spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(i)
                                + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                // Scrivi nella riga i
                row = sheet.getRow(i);

                // Scrivi nella colonna AC indice 28
                cell = row.createCell(28);

                // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                FileOutputStream fos = new FileOutputStream(filePath);

                // Scrivi nel file
                wb.write(fos);

                // Chiudi il file
                fos.close();
                System.out.println("OK");

            }
        }
    }
Messaggio unito automaticamente:

Però se provo in questo gli indici sballano come mai?
Codice:
public void confrontaTarghe() throws IOException {

        VeicoloDb veicoloDb = new VeicoloDb();
        Spinelli spinelli = new Spinelli();
        int i;

        // Se la Targa e ID veicolo sono uguali Aggiungi ID nella Nuova colonna
        for (i = 0; i < veicoloDb.getListCelltarga().size(); i++) {
            if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(i))) {
                System.out.println(
                        spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(i)
                                + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                // Scrivi nella riga i
                row = sheet.getRow(i);

                // Scrivi nella colonna AC indice 28
                cell = row.createCell(28);

                // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                FileOutputStream fos = new FileOutputStream(filePath);

                // Scrivi nel file
                wb.write(fos);

                // Chiudi il file
                fos.close();
                System.out.println("OK");

            }
        }
    }

Questo è il metodo che vado a chiamare, ho provato a chiamare singolarmente è funziona.

Codice:
// Lista targa
    public ArrayList<String> getListCelltarga() {
        for (int rowIndex = 1; rowIndex < 281; rowIndex++) {
            currentRow = dataTypeSheet.getRow(rowIndex);
            cell_targa = currentRow.getCell(11); // Cella L
            targa.add(cell_targa.getStringCellValue());
        }
        return targa;
    }

Quando vado a provare non restituisce nessuna targa come mai?
Messaggio unito automaticamente:

Però se provo in questo gli indici sballano come mai?
Codice:
public void confrontaTarghe() throws IOException {

        VeicoloDb veicoloDb = new VeicoloDb();
        Spinelli spinelli = new Spinelli();
        int i;

        // Se la Targa e ID veicolo sono uguali Aggiungi ID nella Nuova colonna
        for (i = 0; i < veicoloDb.getListCelltarga().size(); i++) {
            if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(i))) {
                System.out.println(
                        spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(i)
                                + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                // Scrivi nella riga i
                row = sheet.getRow(i);

                // Scrivi nella colonna AC indice 28
                cell = row.createCell(28);

                // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                FileOutputStream fos = new FileOutputStream(filePath);

                // Scrivi nel file
                wb.write(fos);

                // Chiudi il file
                fos.close();
                System.out.println("OK");

            }
        }
    }
Messaggio unito automaticamente:



Questo è il metodo che vado a chiamare, ho provato a chiamare singolarmente è funziona.

Codice:
// Lista targa
    public ArrayList<String> getListCelltarga() {
        for (int rowIndex = 1; rowIndex < 281; rowIndex++) {
            currentRow = dataTypeSheet.getRow(rowIndex);
            cell_targa = currentRow.getCell(11); // Cella L
            targa.add(cell_targa.getStringCellValue());
        }
        return targa;
    }

Quando vado a provare non restituisce nessuna targa come mai?

L'ho fatto in questo modo, ma non mi verifica che le targhe sono uguali, come mai?

Codice:
for (i = 0; i < 280; i++) {
            for (int j = 0; j < 280; j++) {
                if (spinelli.getListCellveicoli_targa().get(i).equals(veicoloDb.getListCelltarga().get(j))) {
                    System.out.println(
                            spinelli.getListCellveicoli_targa().get(i) + " =  " + veicoloDb.getListCelltarga().get(i)
                                    + " --> " + i + " --> " + spinelli.getListCellveicoli_id().get(i));

                    // Scrivi nella riga i
                    row = sheet.getRow(i);

                    // Scrivi nella colonna AC indice 28
                    cell = row.createCell(28);

                    // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                    sheet.getRow(i).createCell(28).setCellValue(spinelli.getListCellveicoli_id().get(i));

                    FileOutputStream fos = new FileOutputStream(filePath);

                    // Scrivi nel file
                    wb.write(fos);

                    // Chiudi il file
                    fos.close();
                    System.out.println("OK");

                }
                
                
            }
        
        }