Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Classe movimentazione funzionante in parte

    Salve ho una classe movimentazione che servirebbe come inserimento o prelevamento di pezzi in semplice gestionale che sto facendo per scopi didattici ....
    La classe funziona ma non funzionano i controlli se la classe viene lasciata vuota....

    codice:
    import java.awt.EventQueue;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.text.ParseException;
    
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.border.EmptyBorder;
    import javax.swing.text.MaskFormatter;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    
    public class Movimentazione extends JFrame {
    
    	private JPanel contentPane;
    	private JTextField locazione;
    	private JTextField aumenta;
    	private JTextField diminuisci;
    	private int au,dim,cod,numRighe,idtemp;
    	private MaskFormatter formato,formato1;
    	private JFormattedTextField codice;
    	private String loc;
    	private ResultSet rstloc;
    	private boolean test=true;  //per eseguire le operazioni successive
    
    	//metodo per eseguire controllo del codice
    	
    	public boolean controllacodice(){
    		
    		
    		boolean codicecont=false;
    		
    		
    			// mi connetto al db e prelevo i valori
    		    try {
    			   	ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
    			   	ResultSet rst = myDb.query("select * from materiale where Codice='"+cod+"';");
    				
    				// recupera il numero di righe del RestultSet
    	            rst.last();
    	            numRighe = rst.getRow();
    	            rst.first();
    	            //System.out.println(numRighe+"codice");      // x il controllo se ci sono dati
    	            
    	            // riposiziona il cursore di ResultSet all'inizio
    	            
    	            if (numRighe<1){
    	            	JOptionPane.showMessageDialog(Movimentazione.this,"codice non presente nel database");
    	            	codicecont=false;
    	            	test=false;
    	            }
    	            else{
    	            	codicecont=true;
    	            }
    	                        	
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}  
    		
    		//	System.out.println(codicecont);	   //per vedere come ritorna codicecont    
    	    return codicecont;
    	}
    	
    	//metodo per controllare se il codice è già presente in una determinata locazione
    	
    	public boolean codiceinlocazione(){
    		
    		
    		boolean codiceinlocazione=false;
    		
    		
    			try{
    		 	ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
    			rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
    			
    			// recupera il numero di righe del RestultSet
    	        rstloc.last();
    	        numRighe = rstloc.getRow();
    	        idtemp =rstloc.getInt("id");
    	        rstloc.first();
    	        System.out.println(numRighe+"inlocazione");//controllo se ci sono dati
    	        
    	        // riposiziona il cursore di ResultSet all'inizio
    	        
    	        if (numRighe<1){
    	        	JOptionPane.showMessageDialog(null,"Codice non presente nella locazione");
    	        	codiceinlocazione=false;
    	        	test=false;
    	        }
    	        else if(numRighe>1){
    	        	JOptionPane.showMessageDialog(null,"problema al database");
    	        	codiceinlocazione=false;
    	        }
    	        else{
    	        	codiceinlocazione=true;
    	        }
    	                    	
    			} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			}   
    		
    		return codiceinlocazione;
    	}
    	
    	
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Movimentazione frame = new Movimentazione();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Movimentazione() {
    		setTitle("Movimentazione pezzi");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JLabel lblInserisciIlCodice = new JLabel("Inserisci il codice");
    		lblInserisciIlCodice.setBounds(52, 63, 155, 15);
    		contentPane.add(lblInserisciIlCodice);
    		
    		JLabel lblInserisciLaLocazione = new JLabel("Inserisci la locazione(loc A1=A01 ecc)");
    		lblInserisciLaLocazione.setBounds(52, 98, 264, 15);
    		contentPane.add(lblInserisciLaLocazione);
    		
    		JLabel lblInserisciLaQuantit = new JLabel("Inserisci n. pezzi");
    		lblInserisciLaQuantit.setBounds(52, 157, 155, 15);
    		contentPane.add(lblInserisciLaQuantit);
    		
    		try {
    				formato =new MaskFormatter("########");
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		try {
    			formato1 =new MaskFormatter("U##");
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            
    		codice = new JFormattedTextField(formato);
    		codice.setBounds(258, 61, 114, 19);
    		contentPane.add(codice);
    	
    		
    		locazione = new JFormattedTextField(formato1);
    		locazione.setBounds(334, 96, 38, 19);
    		contentPane.add(locazione);
    		
    		aumenta = new JTextField();
    		aumenta.setColumns(10);
    		aumenta.setBounds(258, 155, 114, 19);
    		contentPane.add(aumenta);
    		
    		
    		JLabel lblEliminaNPezzi = new JLabel("Elimina n. pezzi");
    		lblEliminaNPezzi.setBounds(52, 194, 155, 15);
    		contentPane.add(lblEliminaNPezzi);
    		
    		diminuisci = new JTextField();
    		diminuisci.setColumns(10);
    		diminuisci.setBounds(258, 186, 114, 19);
    		contentPane.add(diminuisci);
    		
    		// bottone e listener
    		
    		JButton btnEsegui = new JButton("Esegui");
    		btnEsegui.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				String temp="        ";                  // prendo una stringa vuota di 8 caratteri (come il formatter) 
    				                                         // per controllare che codice non sia vuoto
    				
    				String temp1="   ";                      // prendo una stringa vuota di 3 caratteri (come il formatter)
                                                             // per controllare che locazione non sia vuoto
    				
    				
    				
    				if(codice.getText().equals(temp) || locazione.getText().equals(temp1)){
    					JOptionPane.showMessageDialog(null, "Inserisci il codice e la locazione");
    					test=false;
    				}
    				else{
    					String codic=codice.getText();   // prendo la stringa di codice
    					cod=Integer.parseInt(codic);     // la trasformo in un numero
    					
    					loc=locazione.getText(); //prendo la stringa da locazione
    					test=true;
    				}
    				
    				String temp2=""   ;                   // stringa per il controllo dei campi aumenta e diminuisci
    				
    				
    				System.out.println(test);
    				if(aumenta.getText().equals(temp2) && diminuisci.getText().equals(temp2) && test){
    					JOptionPane.showMessageDialog(null, "Inserisci un valore");
    					test=false;
    				}
    				
    				if(aumenta.getText().equals(temp2) && test){
    					test=false;
    				}
    				else{
    					String aument=aumenta.getText(); // prendo la stringa di aumenta
    					au=Integer.parseInt(aument);     // la trasformo in un numero  
    					test=true;
    				}
    				if(diminuisci.getText().equals(temp2)&& test){
    					test=false;
    				}
    				else{
    					String diminuisc=diminuisci.getText(); // prendo la stringa di diminuisci
    					dim=Integer.parseInt(diminuisc);	   // la trasformo in un numero  
    					
    					test=true;
    				}
    				
    				if(au>0 && dim>0 && test){                    //controllo che i campi aumenta e diminuisci non siano pieni insieme    
    					JOptionPane.showMessageDialog(Movimentazione.this,"Non puoi inserire e togliere pezzi contemporaneamente");
    					test=false;
    				}
    				
    			
    				System.out.println(controllacodice()+" "+codiceinlocazione());  //controllo dei metodi
    				
    				if(codiceinlocazione() && controllacodice() ){
    					try {	
    						ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
    					
    						Connection con = myDb.getConnessione();
    						
    						rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
    						rstloc.last();
    						Statement dati = con.createStatement();  // si crea un oggetto Statement
    						
    						String sql="";
    						rstloc.first();
    						if(au>0){
    							
    							int npezzi=rstloc.getInt("Quantità");
    							int npezziagg=npezzi+au;
    							sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
    							System.out.println(sql);
    							Movimentazione.this.dispose();
    							dati.executeUpdate(sql);// si esegue l'operazione di insert
    						
    						    dati.close();// si chiude lo Statement 
    						
    						    con.close();//si chiude la connessione
    												
    						}
    						
    						if(dim>0){
    							
    							int npezzi=rstloc.getInt("Quantità");
    							int npezziagg=npezzi-dim;
    							sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
    							System.out.println(sql);
    							Movimentazione.this.dispose();
    							dati.executeUpdate(sql);// si esegue l'operazione di insert
    						
    						    dati.close();// si chiude lo Statement 
    						
    						    con.close();//si chiude la connessione
    												
    						}
    					} catch (SQLException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					} catch (Exception e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    					
    				}
    			}
    		});
    		btnEsegui.setBounds(255, 233, 117, 25);
    		contentPane.add(btnEsegui);
    		
    		
    		
    	}
    }
    Il test(boolean) dovrebbe fermare l'applicazione via via che i campi non sono selezionati o incorretti , invece da un errore :

    falseException in thread "AWT-EventQueue-0"
    java.lang.NumberFormatException: For input string: ""
    etc.etc.

  2. #2
    riesci a postare il lo stacktrace?
    altrimenti si fà più fatica a trovare l'errore, mentre li ti dice subito dove si trova il problema.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    codice:
    falseException in thread "AWT-EventQueue-0" 
    java.lang.NumberFormatException: For input string: ""
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Integer.parseInt(Integer.java:504)
    	at java.lang.Integer.parseInt(Integer.java:527)
    	at Movimentazione$2.actionPerformed(Movimentazione.java:236)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    	at java.awt.Component.processMouseEvent(Component.java:6505)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    	at java.awt.Component.processEvent(Component.java:6270)
    	at java.awt.Container.processEvent(Container.java:2229)
    	at java.awt.Component.dispatchEventImpl(Component.java:4861)
    	at java.awt.Container.dispatchEventImpl(Container.java:2287)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    	at java.awt.Container.dispatchEventImpl(Container.java:2273)
    	at java.awt.Window.dispatchEventImpl(Window.java:2719)
    	at java.awt.Component.dispatchEvent(Component.java:4687)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    	at java.awt.EventQueue.access$200(EventQueue.java:103)
    	at java.awt.EventQueue$3.run(EventQueue.java:682)
    	at java.awt.EventQueue$3.run(EventQueue.java:680)
    	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:696)
    	at java.awt.EventQueue$4.run(EventQueue.java:694)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

  4. #4
    Beh in verità il textfield "Aumenta" contiene una stringa (vuota) e tu vuoi trasformarlo in un numero e questo scatena un'eccezione.

    Ciao,
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    NO lo ltrasforma solo se non è vuoto:

    primo perchè
    aumenta.getText().equals(temp2)=false
    poi test avendo lasciati i campi vuoti è false

    quindi non dovrebbe entrare nell'else....
    codice:
    	if(aumenta.getText().equals(temp2) && test){
    					test=false;
    	}
    	else{
    	String aument=aumenta.getText(); // prendo la stringa di aumenta
    					au=Integer.parseInt(aument);     // la trasformo in un numero  
    					test=true;

  6. #6
    Quindi
    alla luce di quello che dici e del codice sottoriportato:

    aumenta.getText().equals(temp2)=false
    poi test avendo lasciati i campi vuoti è false


    quindi:
    semmai non entra nell'if ma nell'else ci entrerà sicuramente...
    se gli if sono falsi il sistema entrerà sempre nell'else...atrimenti devi fare un else if con conseguente condizione di test

    codice:
    if(aumenta.getText().equals(temp2) && test){
    					test=false;
    	}
    	else{
    	String aument=aumenta.getText(); // prendo la stringa di aumenta
    					au=Integer.parseInt(aument);     // la trasformo in un numero  
    					test=true;
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.