[R] Case ne fonctionne plus après un retour sur boucle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

[R] Case ne fonctionne plus après un retour sur boucle

#1

Message par tekserver »

Bonjour le forum,

Depuis quelques semaines je me suis lancé dans un projet de script pour la gestion de ma diet, je n'ai pas beaucoup de temps libre mais dès que je peux, je me met le nez dedans :roll:
Mes connaissances sont très limité, mais j'arrive à me débrouiller grâce à ce forum et le forum US, en prenant des idées et des bout de codes à droite à gauche. Actuellement je suis à 20% de mon script et je rencontre déjà un problème que je n'arrive pas à résoudre.

Au lancement du script tout fonctionne correctement, mais quand je clique sur le lien "Journée en cours" puis que je clique sur le bouton "AddBdd" que je remplis les champs afin de valider en cliquant sur "OK" ma fenêtre se ferme correctement et je retourne bien sur ma boucle "While 1" (ligne 213) cependant toute la partie "Case $aPanel[4]" (ligne 261 à 282) ne fonctionne pas. Ce qui est étonnant c'est que les autres "Case $aPanel[1]" & "Case $aPanel[2]" eux fonctionnent.

Je vous prie de bien vouloir être indulgent avec moi, car je sais que mon script c'est "Bagdad" et qu'il risque de rendre aveugle les puristes de l'Autoit :) Je prends aussi tous conseils pour l'optimisation de ce dernier :roll:

Le script:
► Afficher le texte
Dans l'attente de votre aide, je vous remercie d'avance,
Cordialement
Modifié en dernier par tekserver le dim. 09 août 2015 11:34, modifié 1 fois.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#2

Message par TopXm »

Hello,

Tu as un commentaire qui s'est glissé donc normal ;)

Code : Tout sélectionner

        Case $aLink[1], $aLink[2], $aLink[3];, $aLink[4]
Il te faut enlever ton point-virgule (je n'ai pas testé le code)

EDIT Oups j'ai dit une bêtise ! J'avais pas tout lu !!! Faites comme si je n'étais pas passé :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#3

Message par jchd »

Je n'ai pas trop regardé ce qui peut poser problème avec la GUI mais je trouve le schéma de ta base assez étrange (plusieurs tables ayant les mêmes colonnes).

Ton INSERT dans settings à l'init est invalide (xxx --> 'xxx'). Tu devrais aussi définir des types dans tes tables : lipides, glucides, protéines c'est du texte ou du numérique ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#4

Message par tekserver »

Bonsoir,
le schéma de ta base assez étrange
oui c'est vrai, en faite j'ai une base principale (bdd_aliments) uniquement pour les aliments, une base pour le suivi jours par jours (bdd_jours), une base pour les aliments favoris (bdd_repas), et une pour le paramétrage (setting), je peux effectivement virer l'autre, elle me servira pas, je voulais en effet parser à coup de regex le site www.les-calories.c*m/calories.ht*l pour alimenter ma base, mais trop complexe pour le moment.
Ton INSERT dans settings à l'init est invalide (xxx --> 'xxx'). Tu devrais aussi définir des types dans tes tables : lipides, glucides, protéines c'est du texte ou du numérique ?
Oui j'avoue j'ai modifié par des simple "0" car effectivement dans ces fields ça sera que tu numérique. Je dois définir explicitement le type pour du numérique ?

Merci à vous ++
Cordialement.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#5

Message par jchd »

SQLite est très permissif quant au typage. En fait, il utilise le typage dynamique, basé sur l'affinité. Lire la doc pour les détails.

On peut donc parfaitement insérer n'importe quel type dans toute colonne, sauf integer primary key, clé étrangère ou clause check portant explicitement sur le type. Par contre il vaut mieux savoir exactement ce qu'on fait si on veut alors éviter les mauvaises surprises qui peuvent avoir des conséquences allant de désagréables à désastreuses.

Si je comprends un peu le sujet, tu veux disposer de plusieurs tables :
o) une table aliments qui décrit les compositions (Gl, Li, Pr) par quantité donnée (au passage tu pourrais stocker ici la valeur calorique),
o) une table jours qui enregistre ce que tu as mangé par jour
o) une table "repas" dont je ne perçois pas trop l'utilité. Si tu veux noter tes aliments favoris, pourquoi ne pas mettre une colonne "Note" dans la table aliments qui te premettrait de noter un aliment de 0 à 20 en fonction de tes goûts, une autre colonne avec le prix par unité pour mieux affiner ton budget, etc.
o) une table lcc dont au sujet d'icelle je pige ketchi
o) une table setting contenant ... (???) des valeurs cible pour jours ON ou OFF (si oui, cette sémantique est à éclaircir) ?

Tes tables jours, repas, lcc devraient employer une clé étrangère vers la table aliments.

Je te fais un MP avec un squelette chargé avec quelques valeurs. Etudie-le avec un gestionnaire SQLite tel SQLite Expert en version freeware.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#6

Message par tekserver »

Bonsoir,

Merci pour ton MP et tes bon conseils.
Je vais, dès que je serai débloqué sur mon problème de GUI repenser toute ma base et faire un typage à l'init comme sur ton exemple. Merci.

Cordialement.
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#7

Message par tekserver »

Bonjour le forum,

Je suis toujours bloqué sur ce maudit "Case $aPanel[4]" ligne 260 qui ne veut plus répondre après le retour sur boucle.
J'ai beau chercher .... :? Je suis sure que c'est un petit détail que je ne vois pas.
Si une âme charitable veut bien vouloir m'aider :P

En vous remerciant ,
Cordialement.
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

Re: [..] Case ne fonctionne plus après un retour sur boucle

#8

Message par tekserver »

Bonjour le forum,

Juste un petit UP :(
J'aimerai comprendre pourquoi ça ne fonctionne pas, svp une petite aide.
Merci.
tekserver
Niveau 3
Niveau 3
Messages : 37
Enregistré le : lun. 24 févr. 2014 11:36
Status : Hors ligne

Re: [R] Case ne fonctionne plus après un retour sur boucle

#9

Message par tekserver »

Bonjour le forum,

J'ai trouvé d'ou venait la coquille:

Code : Tout sélectionner

Func _zAddBdd()
GUISetState(@SW_DISABLE)
et remplacant pas ceci:

Code : Tout sélectionner

Func _zAddBdd()
GUISetState(@SW_DISABLE, $hMainGUI)
Mais il n’empêche que cela ne m'explique pas pourquoi il y avait que la partie "Case $aPanel[4]" qui ne fonctionnait pas.

++
Répondre