PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → acces tableaux
acces tableaux
Started by cedric, Mar., 30 2006 1:25 PM - 7 replies
Posted on March, 30 2006 - 1:25 PM
Bonjour a tous!

Voila j'ai cette erreur lorsque j execute ma fenetre:
Erreur à la ligne 24 du traitement Clic sur BTN_OK.
La dimension 1 du tableau possède 10 élément(s) et vous tentez d'accéder à l'élément 11.

voici mon code:
j est un entier = 1
TANTQUE ((tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j] <> SAIS_MDP) OU j<=i)
j++
FIN

( ici " i " vaut 2, il est calculé plus haut dans mon prog. )

déclaration de mes tableaux:
tabVar_pseudo est un tableau fixe de 10 chaînes
tabVar_mdp est un tableau fixe de 10 chaînes

merci d'avance.
Posted on March, 30 2006 - 4:43 PM
salut

faudrait-il pas remplacer 'OU j<=i' par 'ET j<=i' ?

car tantque la condition 'tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j]' est vrai il boucle et arrivé à la 11ième occurrence ben ca plante

sinon il faut faire :

TANTQUE j<11 _ET_ ((tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j] <> SAIS_MDP) OU j<=i)
j++
FIN

surtout mettre bien '_ET_' et non pas 'ET'
Posted on March, 30 2006 - 4:43 PM
Dans sa contribution <442ceb23$1@news.pcsoft.fr>, boucherc@info.iut-amiens.fr racontait :

Bonjour a tous!

Voila j'ai cette erreur lorsque j execute ma fenetre:
Erreur à la ligne 24 du traitement Clic sur BTN_OK.
La dimension 1 du tableau possède 10 élément(s) et vous tentez d'accéder à l'élément 11.

voici mon code:
j est un entier = 1
TANTQUE ((tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j] <> SAIS_MDP) OU j<=i)
j++
FIN

( ici " i " vaut 2, il est calculé plus haut dans mon prog. )

déclaration de mes tableaux:
tabVar_pseudo est un tableau fixe de 10 chaînes
tabVar_mdp est un tableau fixe de 10 chaînes

merci d'avance.


Bonjour,
Je pense que tu t'es légèrement trompé sur les conditions de ton TANTQUE car dans ton code tu continues a boucler si UNE seule des deux conditions est vraie
Dans ton cas, si j > i, tu continues quand meme a boucler car les pseudo et mdp saisis sont différents de ceux du tableau (le couple de valeurs saisies n'existent pas dans le tableau)

Il faudrait plutot écrire :

j est un entier = 1
TANTQUE ((tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j] <> SAIS_MDP) ET j<=i)
j++
FIN

--
Lionel

mailto:lionel.breil*NOSPAM*@gmail.com
(retirer *NOSPAM* pour m'écrire)
Posted on March, 30 2006 - 5:05 PM
effectivement maintenant ca passe! merci!

par contre, maintenant si je met un login et un mdp se trouvant dans ma table, il me mon message d'erreur si quelqu'un rentre un mauvais login ou mdp

voici mon code, ca vous sera plus parlant:

CONNEXION est une chaîne
CONNEXION = SQLConnecte("CODIF", "sa", "sa", "CODIF", "hODBC")

REQ est une chaîne = [
SELECT login, mdp FROM Login
]
SQLExec(REQ, "AUTH")
tabVar_pseudo est un tableau fixe de 10 chaînes
tabVar_mdp est un tableau fixe de 10 chaînes
i est un entier = 0

TANTQUE SQLAvance("AUTH") = 0
i++
tabVar_pseudo[i] = SQLLitCol("AUTH",1)
tabVar_mdp[i] = SQLLitCol("AUTH",2)
FIN

j est un entier = 1
TANTQUE ((tabVar_pseudo[j] <> SAIS_PSEUDO ET tabVar_mdp[j] <> SAIS_MDP) ET j<=i)
j++
FIN

SI (tabVar_pseudo[j] = SAIS_PSEUDO ET tabVar_mdp[j] = SAIS_MDP) ALORS
Info(" Bienvenue dans CODIF !")
SINON
Info(" Login et/ou mot de passe erroné(s) !")
FIN

SQLFerme("AUTH")
Posted on March, 30 2006 - 5:29 PM
pourquoi mémoriser tous les login dans un tableau et boucler pour trouver le bon ?

n'est-il pas plus simple de faire

REQ est une chaîne = [
SELECT mdp FROM Login where pseudo='"+sais_pseudo+'"
]
SQLExec(REQ, "AUTH")
sqlpremier("AUTH")
si pas sql.endehors alors
si sqlcol("AUTH",1)=SAIS_MDP alors
info("Bienvenue")
sinon
info("Mot de passe incorrect")
fin
sinon
info("pseudo inconnu")
fin


question subsidiaire : quelle base est connecté à l'appli ?
Posted on March, 30 2006 - 5:57 PM
pourquoi memoriser tout ca dans un tableau?
je ne sais pas! je suis pas un developpeur! je suis un admin rezo en stage qui doit realiser une appli avec un agl que je ne connais pas! d ou mon niveau en prog! lol

c'est une base de données techniques spécifiques aux produits "produit" par mon entreprise
dans laquelle j ai rajouté une table avec des login et des mdp.

sinon ton code me répond 'pseudo inconnu' meme si c est un pseudo de la table login, comme avec mon code d'ailleurs! lol

merci de ton aide!
Posted on March, 30 2006 - 6:24 PM
tu as peut-être des majuscules et des minuscules qui ne correspondent pas
ma question était en fait : quelle type de base ? oracle, sqlserver ....
Posted on March, 30 2006 - 6:51 PM
non j'ai bien regardé aux majuscule ou aux minuscules, ou accents ...

sql server!