Ovo je tvoj kod koji ne radi:
Code:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Upit = "DELETE FROM Relacija WHERE IDT1 in (SELECT IDTabela1 from Tabela1 WHERE IDTabela1 LIKE '%"+DBEdit1->Text+"%') AND IDT2 in (select IDTabela2 from Tabela2 WHERE IDTabela2 LIKE '%" + Edit2->Text+ "%')";
ADOQuery1->SQL->Add( Upit );
ADOQuery1->ExecSQL();
UVEK u fazi testiranja, pre izvrsenja upita stavi neki ShowMessage(), koji ce ti pokazati kako glasi upit i eventualno gde je greska.
Dakle, umesto:
Code:
ADOQuery1->ExecSQL();
... stavi:
Code:
// ADOQuery1->ExecSQL(); // komentar, ne izvrsava se
ShowMessage( Upit );
Videces da uvek dobijas PRAZAN DBEdit1->Text.
Code:
... IDTabela1 LIKE '%%' ...
... sto znaci da se SVE uzima u obzir, a ne ono sto ocekujes.
DBEdit->Text je prazan jer PRVO zatvaras upit (ADOQuery1->Close();) a zatim pokusavas da pristupis elementu tog zatvorenog upita (DBEdit1->Text).
Dakle, pre zatvaranja treba da ZAPAMTIS sta da prosledis u upit:
Code:
AnsiString STA_BRISEM = DBEdit1->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Upit = "DELETE FROM Relacija WHERE IDT1 in (SELECT IDTabela1 from Tabela1 WHERE IDTabela1 LIKE '%"+STA_BRISEM+"%') AND IDT2 in (select IDTabela2 from Tabela2 WHERE IDTabela2 LIKE '%" + Edit2->Text+ "%')";
ADOQuery1->SQL->Add( Upit );
ADOQuery1->ExecSQL();