Попытка сделать товар доступным для NO и недоступным (не может быть выпущен), если запасы равны 0, но кажется, что товар все еще выпускается - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь сделать предмет доступным для НЕТ и недоступным (не могу выпустить), если запасы равны 0, но кажется, что предмет все еще выдается.

Вот код для выдачи предмета:

String sql = "insert into issueditem(Item_No,Item ID, Item Name, Issued Date, "
           + "Due Date,  Item Number, Stock) values (?,?,?,?,?,?,?)";

try {      
    connect()
    pst = conn.prepareStatement(sql);
    pst.setString(1, txtitemno.getText());
    pst.setString(2, itemid.getText());
    pst.setString(3, itemname.getText());
    pst.setString(4, txtidate.getText());
    pst.setString(5, txtredate.getText());
    pst.setString(6, itemnum.getText());
    pst.setString(7, stock.getText());

    pst.execute();

    JOptionPane.showMessageDialog(null, "Item issued");
    update();

} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
} finally {
    try {
        rs.close();
        pst.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

Вот мой метод обновления запасов и наличия товара, если запасы от 0 до NO

public void update(){ 
    int st = Integer.parseInt(stock.getText()); 
    int q = 1;
    int sup = st - q;
    String s = String.valueOf(sup);
    stock.setText(s);
    try {
        int n = Integer.parseInt(s);
        if (n>=0){
            String val1= itemid.getText();
            String val2 = stock.getText();
            String val3=jt14.getText();
            String sql = "update storageitem set ItemID='"+val1+"', "
                    + "Stock='"+val2+"' where ItemID='"+val1+"'"
                    + "Available= 'NO' where Stock='"+val2+"'";
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Record Updated");
        }else{
            JOptionPane.showMessageDialog(null, "Item is not issued");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }finally{
        try {
            rs.close();
            pst.close();
        } catch (Exception e) {
              JOptionPane.showMessageDialog(null, e);
        }
    }
}

1 Ответ

1 голос
/ 10 марта 2020

Ваш SQL запрос неверен, поэтому, если я правильно понял, вы хотите изменить доступность на 'нет', если ItemId = val1 и если val2 = 0

public void update(){ 
    int st = Integer.parseInt(stock.getText()); 
    int q = 1;
    int sup = st - q;
    stock.setText(sup+"");
    try {
        String val1= itemid.getText();
        String val2 = stock.getText();
        String val3=jt14.getText();
        if (sup>=0 && val2.equals("0")){
            String sql =  "update storageitem set Available = 'NO',  Stock= '"+val2+"'"
            + " where ItemID='"+val1+"' ";
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Record Updated");
        }else{
            JOptionPane.showMessageDialog(null, "Item is not issued");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }finally{
        try {
            rs.close();
            pst.close();
        } catch (Exception e) {
              JOptionPane.showMessageDialog(null, e);
        }
    }
}

вам не нужно конвертировать sup в строковое значение. а в stock.setText() вы можете поместить значение int sup, объединяясь с пустой строкой sup+""
sup = st-q, которая является тем же значением n, поэтому нет необходимости преобразовывать его в Затем переведите строку в int, используйте напрямую sup (только для лучшей производительности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...