Newsgroup: it.comp.lang.delphi
Titolo: Problema cancellazione multipla da DBGrid o da DataSet

Salve a tutti, volevo sapere come era possibile eseguire una cancellazione di più record selezionati nella DBGrid. La DBGrid è collegata ad un ADOTable a sua volta collegata ad una tabella in un DB Access.
 
Quest'operazione normalmente può essere svolta dal comando:
"DBGrid.SelectedRows.Delete" che però non funziona su tutte le mie DBGrid! Su tutte ho impostato l'opzione "dgMultiSelect" ma a quanto pare su un paio di DBGrid l'operazione di cancellazione non ha effetto (Mah)! Comunque per ovviare a questo problema, la cancellazione sulle griglie incriminate la faccio da dataset, con l'istruzione: "ADOTable.Delete" che però cancella un solo record! Un altro comando di cancellazione è ADOTable.DeleteRecords() che però non ammette la cancellazione su selezione, ma su tutto il dataset o a limite su tutti i record di un filtro applicato...oltre questi c'è qualche altro comando con il quale posso eseguire questo tipo di eliminazione???
 
Grazie a tutti!
 
P.S. I componenti DBGrid hanno tutte le medesime impostazioni, sto cercando di capire perchè il comando di cancellazione da griglia non funziona su tutte.

 ADOTable.DeleteRecords() che però non ammette la cancellazione su selezione
 
Confusione...
 
dgMultiselect è GUI e non tdataset
Cosa dovrebbe cancellare deleterecords? 
QUALE SELEZIONE? tdataset ha un riferimento al record corrente.
E' la GRIGLIA che ti permette la selezione multipla.
Infatti, se ci fai caso tdataset non ha una property selectedrows xche NON AVREBBE SENSO.
 
 
 
 
 
 
 su tutto il dataset o a limite su tutti i record di un filtro applicato...oltre questi c'è qualche altro comando con il quale posso eseguire questo tipo di eliminazione???
 
Confusione. L'ozpione multiselect è GUI non logica di dataset.
Che poi la Bookmarklist ti da un mano con il metodo
 
Domandina: non e' che qualche tadotable è impostata come readonly?
 
A.


Ciao alberto, grazie per aver risposto e scusami la confusione :D
1) "Non funziona" nel senso, non cancella assolutamente niente! Nessuna eccezione, semplicemente non fa nulla.
2)Ti ho parlato del "dgMultiselect" perchè tra le varie prove fatte ho visto che se impostato a False la cancellazione multipla dei records selezionati nella dbgrid non viene eseguita, ossia come sopra: non cancella nulla.
3)Si hai ragione è la dbgrid che permette la selezione multipla non il dataset, giustamente.
4)Tutte le tadotable non sono readonly.
ad una tadotable ho attaccato una query fatta in access, che è praticamente la copia della tabella originaria solo con l'aggiunta di un campo calcolato. In questa query non sono coinvolte altre tabelle, quindi i campi coinvolti sono tutti della stessa tabella. Può influire sul problema della cancellazione?

Il giorno martedì 13 novembre 2012 17:14:44 UTC+1, Riddick ha scritto:

Alberto non voglio rubarti altro tempo, il problema era un finto problema!
La cancellazione multipla funziona su tutte le griglie! In pratica stavo provando il funzionamento di una diversa TDBgrid, la TDBGridEh. Il problema ho notato che me lo stava dando proprio su quest'altro componente...a differenza della dbgrid di delphi, per selezionare la riga non basta cliccare nella cella del record ma bisogna cliccare sul bordo sinistro della griglia! Io come per la dbgrid cliccavo sulla cella e andavo a cancellare, per questo non succedeva nulla! Quindi ecco risolto l'ARCANO!
Mi scuso ancora per averti fatto perder tempo con una scemenza del genere, grazie del tuo aiuto!