Page 1 sur 1
Tableau à 2 dimensions

Publié:
10 Fév 2010 à 13:55
par ngi
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

Publié:
10 Fév 2010 à 14:02
par Michael DELIQUE
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

Publié:
10 Fév 2010 à 14:04
par nemrod93
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)

Publié:
10 Fév 2010 à 14:10
par ngi
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

Publié:
10 Fév 2010 à 14:15
par Michael DELIQUE
tu peut pas t'en sortir avec @sort ?

Publié:
10 Fév 2010 à 14:21
par ngi
je ne pense pas pouvoir trier une liste par rapport à une autre avec @Sort mais peut etre que je me trompe

Publié:
10 Fév 2010 à 14:23
par Michael DELIQUE
non mais tu peut trié tes 2 listes

Publié:
10 Fév 2010 à 14:26
par ngi
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

Publié:
10 Fév 2010 à 14:27
par nemrod93
Ce que je voulais dire, c'est d'afficher dans les champs des formulaires des dbcolumn de vues index

Publié:
11 Fév 2010 à 10:51
par LSong
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

Publié:
11 Fév 2010 à 11:54
par ngi
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

Publié:
11 Fév 2010 à 15:39
par LSong
@sort(champ1+champ2) dans des champs multivalué donne bien ce qu'il faut
par contre je vois pas comment separer les deux en formule

Publié:
12 Fév 2010 à 15:03
par ngi
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

Publié:
16 Fév 2010 à 09:15
par roubech
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

Publié:
16 Fév 2010 à 09:16
par roubech
sinon, en LS, t'as pas essayé de travailler avec des list au lieu des array ?