Le raisonnement est simplement inversé :
- On effectue une copie de la sélection de rangées, que l'on veut conserver
- On dé-sélectionne toutes les rangées déjà sélectionnées
- On sélectionne toutes les rangées du DataView
- On dé-sélectionne celles qui font partie de la copie
- On efface toutes les rangées résiduelles encore sélectionnées
- On sauvegarde la base
Le DataView étant réglé en Mode Multiple :
1
| DataView1.Mode = Select.Multiple
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| PUBLIC SUB btnErase2_Click() '<------------------------------------------------------' effacement sauf sélection
DIM i AS INTEGER, copie AS Integer[] IF DataView1.View.Rows.Selection.Count = 0 THEN RETURN '<-----------' s'il n'y a pas de sélection retour sinon il y a effacement de tout
copie = DataView1.View.Rows.Selection.Copy() '<----------------------------' copie de la sélection
ME.Mouse = Mouse.Wait DataView1.View.Rows.UnSelectAll '<-----------------------------------------------' toutes les rangées de la sélection sont dé-sélectionnées DataView1.View.Rows.SelectAll '<--------------------------------------------------' toutes les rangées du tableau sont sélectionnées
FOR EACH i IN copie DataView1.View.Rows.UnSelect(i) '<--------------------------------------------' les rangées qui sont dans la copie sont dé-sélectionnées NEXT
DataView1.Remove '<------------------------------------------------------------------' on efface les rangées résiduelles
DataSource1.Save '<-------------------------------------------------------------------' on sauvegarde dans la base DataSource1.Update Affich() ME.Mouse = Mouse.Default
END
|
Un commentaire :
1
| FOR EACH i NOT IN copie
|
envoie une erreur de syntaxe, ce qui impose de raisonner à l'envers.
====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
La Documentation :
====================