Mam pewien problem z aktualizacją pola w bazie danych. W Visual Studio stworzyłem apkę bazo-danową w C++, gdzie można dodawać urządzenia wraz z podaniem informacji o nich (nazwa, nr seryjny, właściciel). Żeby wybrać właściciela danego urządzenia należy go wybrać z listy dostępnych podmiotów. Po wybraniu podmiotu klika się na "Przypisz podmiot do urządzenia" i wtedy nazwa podmiotu pokazuje się w textBoxie.
Do tego momentu wszystko działa ok. Wybieram podmiot, jego nazwa się pojawia i mogę dodać takie urządzenie do bazy. Problem się pojawia kiedy próbuję zaktualizować dane już istniejącego urządzenia. Tzn. Jeżeli próbowałbym zmienić "właściciela" poprzez wpisanie z klawiatury to wszystko działa prawidłowo. Z kolei jeśli próbuję poprzez wciśnięcie przycisku do którego wpisałem następujący kod:
tbUWlasciciel->Text = tbPNazwa->Text;
To po kliknięciu na "modyfikuj" nic się nie dzieje. Żeby było jasne o co mi chodzi nagrałem, krótki film na którym widać o co chodzi. Link poniżej:
FILM
Kod do przycisku modyfikuj poniżej:
private: System::Void btnUModyfikuj_Click(System::Object^ sender, System::EventArgs^ e) {
if (tbUNazwa->Text->Length < 3 || tbUSeryjny->Text->Length < 3 || tbUWlasciciel->Text->Length < 3 || cbUTyp->Text->Length < 3 || cbUSerwisant->Text->Length < 3){
MessageBox::Show("Uzupełnij brakujące dane !");
}
else{
MySqlConnection^ laczBaze = gcnew MySqlConnection(konfiguracja);
MySqlCommand^ polecenie = laczBaze->CreateCommand();
MySqlTransaction^ transakcja;
laczBaze->Open();
transakcja = laczBaze->BeginTransaction(IsolationLevel::ReadCommitted); //odczyt zatwierdzonych danych
polecenie->Connection = laczBaze;
polecenie->Transaction = transakcja;
if (rbUNaprawa->Checked == true) kategoria = "naprawa";
if (rbUPrzeglad->Checked == true) kategoria = "przegląd";
if (rbUusluga->Checked == true) kategoria = "usługa";
try{
polecenie->CommandText = "UPDATE urzadzenie SET nazwa='" + tbUNazwa->Text + "', nr_seryjny='" + tbUSeryjny->Text + "', wlasciciel='"+ tbUWlasciciel->Text +"',typ='" + cbUTyp->Text + "',serwisant='" + cbUSerwisant->Text + "', kategoria='" + kategoria + "', opis='"+rtbUOpis->Text+"' WHERE urzadzenie_id="+id_rekordu+" ";
polecenie->ExecuteNonQuery();
transakcja->Commit(); // rozpoczecie transakcji mysql
}
catch (Exception^ komunikat){
MessageBox::Show(komunikat->Message);
transakcja->Rollback(); //cofanie transakcji
}
laczBaze->Close();
}
pokaz_siatke();
}