Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    Controllare data inserita

    Buana sera a tutti ho un Jdatachoser (com.toedter.calendar.JDateChooser)


    Ho bisogno di essere sicuro che non venga digitato male la data ho provato a cercare sulle Api per vedere se c'è un metodo dedicato per farlo ma non sono riuscito a trovarlo ho provato a farmi restituire il tipo di stringa e a controllarla con un if ma niente mi da sempre data corretta

    codice:
     try{
                      
                         String sql = "SELECT * FROM Buste WHERE (operatore = ?) AND (data BETWEEN ? AND ?)";
                          pst=conn.prepareStatement(sql);
                          pst.setString(1, combo_op.getSelectedItem().toString());
                          
                          pst.setString(2,((JTextField)data_da.getDateEditor().getUiComponent()).getText());
                            String datada = data_da.getDateFormatString();
                          if (datada == "dd-MM-yyyy"){
                              System.out.println("data corretta");
                          }else
                               System.out.println("data non corretta"); 
                          pst.setString(3,((JTextField)data_a.getDateEditor().getUiComponent()).getText());
                          rs=pst.executeQuery();
                          tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                          pst.close();
                          rs.close();
                
    
                          sv.somma_Colonna_tabella(tabella_busta, 2, txt_costo);
                          sv.somma_Colonna_tabella(tabella_busta, 3, txt_pVendita);
                          
                          float gLordo = (Float.valueOf(txt_pVendita.getText()) - Float.valueOf(txt_costo.getText()));
                          txt_guaLordo.setText(String.valueOf(gLordo));
                
                        try{ 
                            
                          float gNetto = Float.valueOf(txt_guaLordo.getText()) - Float.valueOf(txt_compOp.getText());
                          
                          txt_guaNetto.setText(String.valueOf(gNetto));
                          
                        }catch(Exception   e){
                        JOptionPane.showMessageDialog(null, "Inserire il compenso operatore");
                        }
                          
                       }catch(SQLException | NumberFormatException  e){
                       
                           JOptionPane.showMessageDialog(null,e);
                     }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Le stringhe non si confrontano con == ma con equals. E comunque non va bene un controllo del genere, devi usare un formatter.

    edit

    catch(SQLException | NumberFormatException e) non ha alcun senso, non puoi mettere in OR le eccezioni
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    allora ho trovato il metodo che controlla è isValid()



    pero ho dei problemini

    se metto un if solo mi fa il controllo e funziona,pero quando vado a correggere la data mi da sempre errore e mi apre il pannello con il messaggio inserire la data corretta.....


    se metto il doppio if mi passa subito all'else e apre il pannello messaggio.

    codice:
     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
                    try{
                      
                         String sql = "SELECT * FROM Buste WHERE (operatore = ?) AND (data BETWEEN ? AND ?)";
                          pst=conn.prepareStatement(sql);
                          pst.setString(1, combo_op.getSelectedItem().toString());
                         
                          pst.setString(2,((JTextField)data_da.getDateEditor().getUiComponent()).getText());
                          pst.setString(3,( (JTextField)data_a.getDateEditor().getUiComponent()).getText());
                         
                          if(data_da.isValid())
                          if(data_a.isValid())
        
                          {
                         
                          rs=pst.executeQuery();
                          tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                         
    
                          sv.somma_Colonna_tabella(tabella_busta, 2, txt_costo);
                          sv.somma_Colonna_tabella(tabella_busta, 3, txt_pVendita);
                          
                          float gLordo = (Float.valueOf(txt_pVendita.getText()) - Float.valueOf(txt_costo.getText()));
                          txt_guaLordo.setText(String.valueOf(gLordo));
                
                         
                          
                          }else{
                              JOptionPane.showMessageDialog(null, "Inserire formato data corretto gg-mm-aaaa");
                              
                              
                              
                          }
                              
                          
                        try{ 
                            
                          float gNetto = Float.valueOf(txt_guaLordo.getText()) - Float.valueOf(txt_compOp.getText());
                          
                          txt_guaNetto.setText(String.valueOf(gNetto));
                          
                        }catch(Exception   e){
                        JOptionPane.showMessageDialog(null, "Inserire il compenso operatore");
                        }
                          
                       }catch(Exception  e){
                       
                           JOptionPane.showMessageDialog(null,e);
                     }
                     
            
            
        }

  4. #4

    Moderazione

    Le discussioni relative a Java non sono trattate qui, ma nell'apposita sottosezione.

    Provvedo a spostare il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ho provato anche cosi ma mi controlla solo la prima condizione la seconda no,e anche dopo se correggo l'immissione data mi da sempre errore

    codice:
     if(data_da.isValid()| data_a.isValid())
                          
        
                          {
                         
                          rs=pst.executeQuery();
                          tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                         
    
                          sv.somma_Colonna_tabella(tabella_busta, 2, txt_costo);
                          sv.somma_Colonna_tabella(tabella_busta, 3, txt_pVendita);
                          
                          float gLordo = (Float.valueOf(txt_pVendita.getText()) - Float.valueOf(txt_costo.getText()));
                          txt_guaLordo.setText(String.valueOf(gLordo));
                
                         
                          
                          }else{
                              JOptionPane.showMessageDialog(null, "Inserire formato data corretto gg-mm-aaaa");
                              
                              
                              
                          }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nio74
    codice:
     if(data_da.isValid()| data_a.isValid())
    Quel isValid() non centra nulla con le date! JDateChooser è-un java.awt.Component e isValid è appunto di Component e riguarda il layout:

    (dal javadoc di Component)
    Determines whether this component is valid. A component is valid when it is correctly sized and positioned within its parent container and all its children are also valid.

    Se usi JDateChooser, prendi la data con:
    public java.util.Date getDate()

    che dovrebbe essere "corretta" (al massimo potrebbe essere null se magari non è selezionata ... verifica sul javadoc di JCalendar).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Alex'87
    catch(SQLException | NumberFormatException e) non ha alcun senso, non puoi mettere in OR le eccezioni
    Da Java 7 sì: http://www.oracle.com/technetwork/ar...ns-486908.html (l'Example 2).

    Piuttosto, nell'ultimo post, vedo che l'utente ha usato il single-pipe per fare l'or. L'OR logico si fa con il doppio pipe... il singolo pipe è un operatore bit a bit che ha un significato ben diverso e non si avvale della short-circuit validation, rendendo quindi il codice (in quel preciso caso) più inefficiente.

    @Nio74: studiati la differenza fra l'OR logico ( || ) e l'operatore bit a bit ( | ). Non sono esattamente equivalenti dal punto di vista semantico. Oltretutto, come ha correttamente precisato andbin, quel isValid() non c'entra nulla con ciò che vuoi fare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da LeleFT
    Da Java 7 sì: http://www.oracle.com/technetwork/ar...ns-486908.html (l'Example 2).


    Interessante, non lo sapevo
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Mi sto perdendo ho fatto cosi
    codice:
    String datada = ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                         
                         SimpleDateFormat format = new SimpleDateFormat ("dd-MM-yyyy");
       
                          format.parse(datada);
                         
                         
                          pst.setString(2,datada);
                          
                          String dataa = ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                          
                          format.parse(dataa);
                          
                          pst.setString(3,dataa);

    allora se lascio tutti e due i parse non funziona niente,se invece lascio solo il primo mi cotrolla giorno e mese ma l'anno se lo metto sbagliato non mi da nessun errore.

    Mi fate un esempio

    grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Allora ho aggiunto format.setLenient(false);

    e funziona molto meglio i giorni e il mese li controlla però l'anno se lo mett per esmpio"20155"

    Me lo accetta lo stesso

    codice:
    try{  
                             format.setLenient(false);
                             format.parse(datada);
                         
                         
                          pst.setString(2,datada);
                          
                          String dataa = ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                           format.parse(dataa);
                          pst.setString(3,dataa);
                          
                          rs=pst.executeQuery();
                          tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                         
    
                          sv.somma_Colonna_tabella(tabella_busta, 2, txt_costo);
                          sv.somma_Colonna_tabella(tabella_busta, 3, txt_pVendita);
                          
                          float gLordo = (Float.valueOf(txt_pVendita.getText()) - Float.valueOf(txt_costo.getText()));
                          txt_guaLordo.setText(String.valueOf(gLordo));
                
                         
                         }catch(ParseException e) {   
                             JOptionPane.showMessageDialog(null, "Inserire formato data corretto gg-mm-aaaa");
                             
                             }
                          
                        try{ 
                            
                          float gNetto = Float.valueOf(txt_guaLordo.getText()) - Float.valueOf(txt_compOp.getText());
                          
                          txt_guaNetto.setText(String.valueOf(gNetto));
                          
                        }catch(Exception   e){
                        JOptionPane.showMessageDialog(null, "Inserire il compenso operatore");
                        }
                          
                       }catch(Exception   e){
                       
                           JOptionPane.showMessageDialog(null,e);
                     }
                     
            
            
        }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.