Tableau à 2 dimensions

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Tableau à 2 dimensions

Messagepar ngi » 10 Fév 2010 à 13:55

Bonjour,

J'ai un formulaire dans lequel se trouvent 2 champs multivalué. L'un contenant un libelle et l'autre le code correspondant. J'ai un bouton ajouter qui devrait permettre d'ajouter une nouvelle entrée et de trier les deux listes (Le tri s'effectue sur le libellé mais il faut trier l'autre liste également pour que le code soit toujours associé au bon libellé).

Je n'arrive pas à m'en sortir avec les tableaux à deux dimensions. Quelqu'un pourrait il me sortir de ce problème ? Nottament pour le redimensionnement du tableau (et pour le tri par la suite).

Bien entendu la liste n'est pas fixe en nombre d'entrée et peut varier (car il y aura aussi un bouton modifier et supprimer).

J'espere avoir ete clair.

Merci d'avance

Ngi
Dernière édition par ngi le 12 Fév 2010 à 15:03, édité 1 fois.
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar Michael DELIQUE » 10 Fév 2010 à 14:02

salut

pour le redimensionnement des tableaux a plusieurs dimensions, tu ne peut l faire que sur la derniere dimension.

ou alors calculé avant la taille de ton tableau

via un truc du genre

dim tableau () as string

calcul dimension

redim tableau (0 to i, o to j)

là ça marche

pour le tri d'un tableau a plusieurs dimensions je n'ai jamais vu de code le faisant

tu trouvera ici des functions de tri => http://forum.dominoarea.org/fonctions-de-tris-f55.html

mais uniquement pour des tableaux a 1 dimension.

donc soit tu fais une fonction de tri pour un tableau a plusieurs dimension, soit tu concatene tes dimension pour faire un tableau a une dimension facilement triable
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar nemrod93 » 10 Fév 2010 à 14:04

Salut

Personnellement, plutôt que de me prendre la tête avec ce type de problème,
je créerais un formulaire avec deux champs (dans ton cas), les vues qui le font bien et hop notes fait le travail à ta place (pour les tri)
Avatar de l’utilisateur
nemrod93
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 378
Inscrit(e) le : 04 Déc 2008 à 10:26
Localisation : Saint Malo

Messagepar ngi » 10 Fév 2010 à 14:10

Le problème c'est que ces champs ne seront pas affichés dans une vue mais uniquement dans le formulaire (ce sont des paramètres) donc mes champs doivent etre triés l'un par rapport à l'autre
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar Michael DELIQUE » 10 Fév 2010 à 14:15

tu peut pas t'en sortir avec @sort ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ngi » 10 Fév 2010 à 14:21

je ne pense pas pouvoir trier une liste par rapport à une autre avec @Sort mais peut etre que je me trompe
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar Michael DELIQUE » 10 Fév 2010 à 14:23

non mais tu peut trié tes 2 listes
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar ngi » 10 Fév 2010 à 14:26

oui mais si je trie mes deux listes, elle ne seront pas triées l'une par rapport à l'autre, non ? @Sort n'est pas capable de faire ca
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar nemrod93 » 10 Fév 2010 à 14:27

Ce que je voulais dire, c'est d'afficher dans les champs des formulaires des dbcolumn de vues index
Avatar de l’utilisateur
nemrod93
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 378
Inscrit(e) le : 04 Déc 2008 à 10:26
Localisation : Saint Malo

Messagepar LSong » 11 Fév 2010 à 10:51

perso je ferais une seul liste en concatenant mes deux champs

genre
Lib1-Val1:Lib2-Val2 etc

trie et reconstructuion des deux champs
évidement c'est faisable en scripte mais en formule je sais pas trop
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar ngi » 11 Fév 2010 à 11:54

Bonjour, et merci pour votre aide. Je suis passé par plusieurs tables, une non triée, une des codes non triées . Tri de la table des libellés puis tri de la table des codes par rapport à la table des libellés. Ca fait quelques traitement mais ca fonctionne nikel.
Je vais quand meme me pencher sur la table unique avec la concatenation des deux valeurs. Ca allégera le code.

Cordialement,
ngi
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar LSong » 11 Fév 2010 à 15:39

@sort(champ1+champ2) dans des champs multivalué donne bien ce qu'il faut
par contre je vois pas comment separer les deux en formule
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar ngi » 12 Fév 2010 à 15:03

Bonjour à tous,

J'ai créer une table à deux dimensions
table(1,0) ="Valeur 1"
table(1,1)="Code 1"
table(2,0)="Valeur 2"
table(2,1)="Code 2"
table(3,0)="AAA"
table(3,1)="ZE"
etc....

Puis j'ai adapté une fonction de tri bien connue pour trier ma liste de valeur et mes codes (par rapport à mes libellés).

Voici la fonction :
Sub Sort(array)
n=Ubound(array)+1
For I=1 To (n-1)
J=I
Do While J>=1
If Ucase(array(J,0))<Ucase(array(J-1,0)) Then
A=array(J,0)
A1=array(J-1,0)
AC=array(J,1)
AC1=array(J-1,1)

array(J,0)=A1
array(J-1,0)=A
array(J,1)=AC1
array(J-1,1)=AC
J=J-1
Else
Exit Do
End If
Loop
Next
End Sub


J'obtiens donc

AAA ZE
Valeur 1 Code 1
Valeur 2 Code 2

Cordialement,

ngi
ngi
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 156
Inscrit(e) le : 01 Sep 2005 à 10:02
Localisation : Paris

Messagepar roubech » 16 Fév 2010 à 09:15

j'arrive un peu tard, mais perso je serai parti dans le même sens que LSong

bouton Add
tListe := ChampLib + "#" + ChampVal;
tListe := tListe : ( NewLib + "#" + NewVal);
tListe := @Sort(tListe );
FIELD ChampLib := @Left( tListe; "#" );
FIELD ChampVal := @Right( tListe; "#" );

bouton Edit
prompter ChampLib pour sélectionner la ligne à modifier
prompter pour saisir la nouvelle valeur
faire un Replace dans tListe de Lib + "#" + OldVal par Lib + "#" + NewVal
puis Sort

bouton supprimer
faire le replace par chaine vide puis un trim derrière
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar roubech » 16 Fév 2010 à 09:16

sinon, en LS, t'as pas essayé de travailler avec des list au lieu des array ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement

cron