Forums développeurs windev
[Windev 10] Pb d'occurence avec une table memoire - Version imprimable

+- Forums développeurs windev (http://tunidev.net)
+-- Forum : Forums Développeurs WINDEV (http://tunidev.net/Forum-Forums-D%C3%A9veloppeurs-WINDEV)
+--- Forum : Forum Windev 8 & 9 & 10 (http://tunidev.net/Forum-Forum-Windev-8-9-10)
+--- Sujet : [Windev 10] Pb d'occurence avec une table memoire (/Thread-Windev-10-Pb-d-occurence-avec-une-table-memoire)



Pb d'occurence avec une table memoire - Minos - 07-02-2008

Bonjour à tous

J'ai rempli une table memoire avec 30 éléments en lignes.
Qd je supprime quelques éléments de cette table avec TableSupprime, l'occurence ne change pas ( TableOccurence( Table ) identique avant et
après TableSupprime (Table,i) ).

Que puis-je faire pour détruire définitivement ces enregistrements memoire pour qu'il ne soient plus pris en compte dans
le calcul de l'occurence de la table ?

Merci d'avance


- Samifred - 07-02-2008

Voilà une façon de supprimer une ligne dans une table mémoire de 5 colonnes (première cachée)

Code :
//On vérifie si la table contient des données
SI TableOccurrence(Table1) = 0 OU Table1 = -1 ALORS
    Info("La table est vide !")
                RETOUR
FIN
//On vérifie si la ligne est vide
SI Table1[Table1][2] = "" ET Table1[Table1][3] = "" ET Table1[Table1][4] = "" ET Table1[Table1][5] = "" ALORS
    Info("Il n'y à rien à supprimer !  ")
    RETOUR
FIN
//On affiche une fenêtre d'information pour accord
SELON OuiNon("Voulez-vous vraiment supprimer cette ligne ?  ")
    CAS Oui
        //On supprime les données de la ligne sélectionnée
        Table1[Table1][2] = ""
        Table1[Table1][3] = ""
        Table1[Table1][4] = ""
        Table1[Table1][5] = ""
        //On met à jour la table
        i est un entier
        POUR i=Table1 A TableOccurrence(Table1) - 1
            Table1[i][2] = Table1[i+1][2]
            Table1[i][3] = Table1[i+1][3]
            Table1[i][4] = Table1[i+1][4]
            Table1[i][5] = Table1[i+1][5]
        FIN
    CAS Non
        RETOUR    
FIN



- Minos - 07-02-2008

Je sais c'est ce que j'ai fait en mettant des valeur nulle dans les différentes lignes mais meme
qd les lignes sont nulles, les enregistrements dans la table memoire reste bien present.
Peut etre faut il faire un TableAffiche ( table ) ?


- Samifred - 07-02-2008

Tu ais sûre que c'est table mémoire ?


- Minos - 08-02-2008

100% sûr !!


- Tgault - 21-02-2008

Bonsoir,

La fonction TableOccurrence peut s'employer avec un deuxième paramètre optionnel qui peut prendre les valeurs suivantes : toAffiché, toTotal, toVisble, toColonne. L'effet de ce paramètre sera différent selon que l'on a une table fichier ou une table mémoire (voir l'aide pour plus de précisions). En ce qui concerne les tables mémoires, si on veut afficher le nombres de lignes réellement saisies dans la table, il faut employer le paramètre toTotal, mais faites attention : si vous supprimer une ligne en mettant les valeur à rien ("") dans les colonnes, TableOccurrence continuera quand même à la compter. Pour supprimer "proprement" une ligne sélectionnée dans une table mémoire, il faut utiliser :
Code :
TableSupprime(TABLE,TableSelect(TABLE))
Et alors, la fonction TableOccurrence donnera le bon total.

A+