[ Miloš Baić @ 11.03.2006. 14:29 ] @
Imam tabelu sa licima. Kad isfiltriram određeno lice u gridu se prikaže vrednost njegovih kolona. Kako bi mogao obrisati samo lice koje je isfiltrirano pomoću SQL-a i ADOQuery-ja?
Znači, kod koji briše lice SQL upitom?! Ali samo isfiltrirano lice?!
Drugo, da li će taj kod koji navedete, ako navedete, moći i da izbriše dva, tri reda istovremeno. Kad recimo za SQL upit izbaci lica čije ime počinje na "M" i tad na DBGrid-u ,omogućim opciju MultiSelect, i on izbriše samo selektovana lica?!
Nadam se da čete razumeti moje pitanje...
[ Miloš Baić @ 12.03.2006. 13:49 ] @
Kad isfiltriram podatak sa ADOTable kod za brisanje je, meni dovoljan:
Code:
ADOTable1.Delete;


U SQL-u to otprilike ide ovako:
Code:
DELETE FROM Naziv_Tabele
WHERE Naziv_Kolone =  'Neka_Vrednost';


A meni treba da isfiltriran podatak u DBGrid-u izbrišem koristeći ADOQuery u Delphi - ju?! Pokušao sam i preko pretrage foruma, ali nisam našao nešto slično. Znači, treba izbrisati jedan isfiltriran red u DBGrid-u?
Nešto tipa:
Code:
ADOQuery.Close;
ADOQuery.SQL.Clear;

ADOQuery.SQL.Add('DELETE FROM Osoba ');
ADOQuery.SQL.Add('WHERE ???');
ADOQuery.Open;


Help if you can?!

P.S. probao sam u HELP-u da vidim ali nisam skontao...

[Ovu poruku je menjao loshmiscg dana 12.03.2006. u 14:53 GMT+1]
[ Srki_82 @ 13.03.2006. 07:28 ] @
Umesto ADOQuery.Open napisi ADOQuery.ExecSQL. Mozda ti to pomogne.
[ badam @ 13.03.2006. 10:41 ] @
Nisam siguran da sam dobro razumeo pitanje, ali evo kako ga ja vidim:

Code:

  for i:=0 to DBGrid1.SelectedRows.Count-1 do
  begin
    DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Append('Delete from Tabela where Kolona='''+DBGrid1.DataSource.DataSet.Fields[0].AsString+'''');
    ADOQuery1.ExecSql
  end;