Witam,
mam problem którego nie potrafię rozwiązać a mianowicie chce zrobić tak, że mam pewne dane w tabeli i chce je z edytować. Problem polega na tym, że jak klikam zatwierdź edycję to z każdym kliknięciem dodaje mi jeden dodatkowy zbędny wiersz. I tak kiedy edytuje dane(wiersz) trzeci raz to po kliknieciu zatwierdz edycje dodaje mi 3 wiersze z takimi samymi danymi po czwartym kliknięciu 4 itd. Prosze o porady i wskazówki może ktoś się domyśla dlaczego tak się dzieje.
Proces edycji wygląda mniej więcej tak:
->sprawdzam czy dane uległy zmianie jeśli tak to wcześniejsze dane zmieniają status na archiwalne a nowe są zapisywane
napisałem takie funkcje:
do sprawdzenia czy uległy zmianie
private boolean sprawdzenieZmianFormularzAdres(){
String numDomu = Integer.toString(klient.getNumerDomu());
//String stat = Integer.toString(klient.getStatus());
if(klient.getPelnaNazwa().equals(super.tfPelnaNazwa.getText())==false){return false;}
else if(klient.getNipSformatowany().equals(super.tfNipSformatowany.getText())==false){return false;}
//else if(klient.getNip().equals(tfNip.getText())==false){return false;}
else if(klient.getMisato().equals(super.tfMiasto.getText())==false){return false;}
else if(klient.getPoczta().equals(super.tfPoczta.getText())==false){return false;}
else if(klient.getKodPocztowy().equals(super.tfKodPocztowy.getText())==false){return false;}
else if(klient.getUlica().equals(super.tfUlica.getText())==false){return false;}
else if(numDomu.equals(super.tfNumerDomu.getText())==false){return false;}
else if(klient.getNumerLokalu().equals(super.tfNumerLokalu.getText())==false){return false;}
//else if(stat.equals(super.tfStatus.getText())==false){return false;}
return true;
}
do zmiany statusu starych danych:
private void updateStatus(){
int id=oknoGlowne.getWartoscId();
String zapytanieUpdateStatus = "UPDATE DANE_KLIENTA SET status='1' where id_klienta='"+id+"'and status='0'";
try {
Statement st = lacznosc.polaczenie.createStatement();
st.execute(zapytanieUpdateStatus);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
oraz do zapisania danych po edycji:
private void dodanieZmienionychDanychAdresowych(){
int id=oknoGlowne.getWartoscId();
int numDomu=Integer.parseInt(super.tfNumerDomu.getText());
String zapytanieDodaniaPoEdycji="INSERT INTO DANE_KLIENTA(PELNA_NAZWA, SFORMATOWANY_NIP, NIP, MIASTO, POCZTA, KOD_POCZTOWY, ULICA, NUMER_ULICY, NUMER_DOMU, STATUS,ID_KLIENTA) " +
"VALUES('"+tfPelnaNazwa.getText()+
"','"+tfNipSformatowany.getText()+
"','"+niesformatowanyNip(tfNipSformatowany.getText())+
"','"+tfMiasto.getText()+
"','"+tfPoczta.getText()+
"','"+tfKodPocztowy.getText()+
"','"+tfUlica.getText()+
"','"+numDomu+
"','"+tfNumerLokalu.getText()+
"','"+0+
"','"+id+"')";
try {
Statement st = lacznosc.polaczenie.createStatement();
st.execute(zapytanieDodaniaPoEdycji);
st.close();
} catch (SQLException wyjatek) {
System.out.println("Wyjatek dane klienta "+wyjatek);
}
}
i na koniec:
if(klik.getSource()==buttonOK){
if((sprawdzenieZmianFormularzaTele()==true) && (sprawdzenieZmianFormularzAdres()==true) ){
new Komunikat("Nie wprowadzono zadnych zmian");
}else if(sprawdzenieZmianFormularzaTele()==false){
updateKlienta();
oknoGlowne.model.zeruj();
oknoGlowne.pokazDane();
setVisible(false);
}
else if(sprawdzenieZmianFormularzAdres()==false){
updateStatus();
dodanieZmienionychDanychAdresowych();
setVisible(false);
}