Originariamente inviato da DvdDelphi
Volevo fare una cancellazione del record ma mi sono accorto che ho delle relazioni del database.
Posto il codice:

codice:
procedure TForm3.AQ1BeforeDelete(DataSet: TDataSet); 
begin    
AQ1.SQL.Clear;   
AQ1.SQL.Add('DELETE FROM Studenti '+               
'WHERE studenti.IdClaFk = '+numId_Classe+' ');   
AQ1.Open;   
AQ1.First;   
end;
Il problema è che non riesce a trovare l'IDClaFk, come faccio a passarglielo?
Io sono un nabbone lo ammetto, studio l'ambiente Embarcadero (delphi per la precisione) da un paio di annetti, dunque sono ancora un novellino, forse per questo non riesco a capire cosa vuoi fare.
Come puoi mettere nel before delete di AQ1, che deve essere una TADOQuery, una delete su se stessa ?? altro particolare, quando usi un comando di delete, insert e update non puoi dire al componente "dataset" di aprirsi perchè il suo recordresult sarà null in quanto l'istruzione (delete in questo caso) non porta indietro niente, ma dovrai usare il comando Execute, poi .... hai fatto una open su un dataset senza controllare che sia chiuso, hai chiamato il metodo first, il quale è inutile in quanto il "puntatore a record" del dataset è già al primo record

Per una semplice cancellazione ti basta il comado <dataset>.delete, poi nell'evento OnBeforeDelete del dataset in questione fai i controlli cancellando eventuali record figli (in altre tabelle) tenuti insieme da FK o relazioni varie.

N.