Gambas France BETA


Pas de compte ? Incription

DataView sélection ?

Ce sujet est résolu.

1
AuteurMessages
valaquarus#1 Posté le 22/4/2024 à 16:22:04
-- Unus Ex Altera --Bonjour,
dans la série Comment,
Comment, après une sélection de plusieurs rangées ( Row) dans un DataView, détruire toutes les rangées exceptées celles sélectionnées?
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
linuxos#2 Posté le 22/4/2024 à 20:46:53
Un peu de sel, de poivre et la crevette sera... valaquarus,

Pas sûr de bien comprendre ta question, mais disons que ce que tu souhaites, c'est de sélectionner des enregistrements (ligne) et dès lors de supprimer toutes les autres (non sélectionnées).

Je dirais une requette SQL du genre : Supprimer tous les enregistrements de la table dont l'ID ne correspond pas aux lignes selectionnées:

DELETE FROM <ma table> WHERE id not in (3,4,6,8,9);

(3,4,6,8,9) --> Ici la liste des 'id' des lignes sélectionnées


Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#3 Posté le 23/4/2024 à 11:21:33
-- Unus Ex Altera --Bonjour Linuos,
pas facile de raisonner à l'envers mais tu m'a montré la voie,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 sont dé-sélectionnées
DataView1.View.Rows.SelectAll '<--------------------------------------------------' toutes les rangées 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.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Patrick#4 Posté le 23/4/2024 à 16:25:13
Bonjour,
Il y a tellement de possibilités dans le langage SQL que j'ai préféré me passer des datasource, j'avais le sentiment d'être bridé. En effet les combinaisons possibles sont quasiment infinies avec le sql et avec une rapidité d’exécution ... J'en suis toujours bluffé.
valaquarus#5 Posté le 23/4/2024 à 17:18:33
-- Unus Ex Altera --Bonsoir Patrick,
oui, je suis d'accord avec toi sur sql, on moins on sait ce qu'on fait alors qu'avec les objets tout prêts, du style dataView c'est toujours un peu ambigu car on ne sais pas exactement ce que fait le contrôle et souvent il faut trifouiller plusieurs fois avant de réussir ce qu'on veut.
Ici, je voulais instamment, utiliser ce DataView pour apprentissage.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
linuxos#6 Posté le 23/4/2024 à 21:43:54
Un peu de sel, de poivre et la crevette sera... varaquarus,

Je confirme 'FOR EACH i NOT IN copie' ne fonctionne pas en Gambas.

FOR EACH va enumérer tous ce qui ce trouve dans la SOURCE => indiqué par IN <source>, donc techniquement, il ne peut pas exclure (NOT) tout ce qui est dans la source, il ne resterait RIEN.

Dans d'autre langage mais pas ici.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#7 Posté le 24/4/2024 à 08:34:04
-- Unus Ex Altera --Bonjour Linuxos,
oui, c'est pourquoi je disais : raisonner à l'envers.
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
1