Witam forumowiczów!
Mam program, który łączy się z bazą danych w której są dwie tabele "pracownicy" i "godziny". Problem polega z przyciskiem modyfikuj. Gdy chcę zmienić dane np. pracownika czy też godzin przypisanych do tego pracownika to w tabeli pracownicy zostają zmienione dane, ale natomiast w tabeli godziny zostaje dodawany cały czas nowy rekord. Chodzi o to by program modyfikował dany rekord do którego jest przypisany pracownik_id.
Przycisk modyfikuj:
private: System::Void btnPModyfikuj_Click( System::Object ^ sender, System::EventArgs ^ e ) {
// modyfikacja danych uzytkownika
if( txtPImie->Text->Length < 2 || txtPNazwisko->Text->Length < 3 || txtPLogin->Text->Length <= 3 ) {
MessageBox::Show( "Uzupełnij dane!!!" );
}
else {
uzytkownik_typ();
MySqlConnection ^ laczBaze = gcnew MySqlConnection( konfiguracja );
MySqlCommand ^ polecenie = laczBaze->CreateCommand();
MySqlTransaction ^ transakcja;
laczBaze->Open();
transakcja = laczBaze->BeginTransaction( IsolationLevel::ReadCommitted );
polecenie->Connection = laczBaze;
polecenie->Transaction = transakcja;
try {
polecenie->CommandText = "SELECT * FROM godziny WHERE uzytkownik_id = " + id_rekordu + ";";
MySqlDataReader ^ wynik = polecenie->ExecuteReader();
wynik->Close();
polecenie->CommandText = "UPDATE uzytkownik SET imie='" + txtPImie->Text + "', nazwisko='" + txtPNazwisko->Text + "', uzytkownik_nazwa='" + txtPLogin->Text + "', pracownik=" + pracownik_typ + " WHERE uzytkownik_id = " + id_rekordu + ";";
polecenie->ExecuteNonQuery();
if( wynik->HasRows == true && chbPPracownik->Checked == true ) {
polecenie->CommandText = "UPDATE godziny SET pon_od = '" + txtP1p->Text + "', pon_do='" + txtP1k->Text + "', wt_od='" + txtP2p->Text + "', wt_do='" + txtP2k->Text + "', sr_od='" + txtP3p->Text + "', sr_do='" + txtP3k->Text + "', czw_od='" + txtP4p->Text + "', czw_do='" + txtP4k->Text + "', pt_od='" + txtP5p->Text + "', pt_do='" + txtP5k->Text + "', sob_od='" + txtP6p->Text + "', sob_do='" + txtP6k->Text + "' WHERE godziny_id=" + id_rekordu + ", uzytkownik_id=" + id_rekordu + ";";
polecenie->ExecuteNonQuery();
}
else if( chbPPracownik->Checked == true ) {
polecenie->CommandText = "INSERT INTO godziny SET uzytkownik_id=" + id_rekordu + ", pon_od = '" + txtP1p->Text + "', pon_do='" + txtP1k->Text + "', wt_od='" + txtP2p->Text + "', wt_do='" + txtP2k->Text + "', sr_od='" + txtP3p->Text + "', sr_do='" + txtP3k->Text + "', czw_od='" + txtP4p->Text + "', czw_do='" + txtP4k->Text + "', pt_od='" + txtP5p->Text + "', pt_do='" + txtP5k->Text + "', sob_od='" + txtP6p->Text + "', sob_do='" + txtP6k->Text + "';";
polecenie->ExecuteNonQuery();
}
MessageBox::Show( "Dane uzytkownika zostały pomyślnie zmodyfikowne" );
transakcja->Commit();
}
catch( Exception ^ komunikat ) {
MessageBox::Show( komunikat->Message );
transakcja->Rollback();
}
laczBaze->Close();
}
pokaz_siatke();
}