[R] Rechercher plusieurs fois une valeur dans un fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
Que fait là l'incrémentation ($i = $i + 1) juste après le FOR extérieur ?
Quel code erreur renvoie _SQLite_GetTable2d ?
Si OK, que donne un _ArrayDisplay de $rows ?
Quel code erreur renvoie _SQLite_GetTable2d ?
Si OK, que donne un _ArrayDisplay de $rows ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
ludoo a écrit :voici le code de la requete :la 2eme requête est identique a par le nom de l'imprimanteCode : Tout sélectionner
Func ReqBD_BE_1() $res = _SQLite_GetTable2d($hDb, "select user as [Utilisateur], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A3') as [Pages A3 imprimées], (select total(pages * copies) from log G where L.user = G.user and g.paper = 'A4') as [Pages A4 imprimées] from log L where printer = "& X($impBE1)&" group by user ;", $rows, $nrows, $ncols) EndFunc
même erreur avecCode : Tout sélectionner
For $i = 0 to $rows - 1
Ludo
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
le _ArrayDisplay de $rows s'affiche correctement avec les bonnes info.
je voudrai sortir de ce array les informations (user, pages a4, pages a3), peut être que la boucle For n'est à utiliser ?
je récupère la variable user pour l'envoyer ds "$aUser = _AD_GetUserGroups($user)" (UDF Active Directory) qui me donne les groupes AD de cet utilisateur.
je voudrai sortir de ce array les informations (user, pages a4, pages a3), peut être que la boucle For n'est à utiliser ?
je récupère la variable user pour l'envoyer ds "$aUser = _AD_GetUserGroups($user)" (UDF Active Directory) qui me donne les groupes AD de cet utilisateur.
Ludo
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
Tu as une incrémentation parasite de $i, juste après ton For extérieur.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
oui le , ce qui permet de passer à la ligne suivante du array , sinon il reste bloqué sur la première.
je tourne en rond dessus
Code : Tout sélectionner
$i = $i +1je tourne en rond dessus
Ludo
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
On passe tous à côté, moi le premier... Enfin, c'est la myopie traditionnelle à l'oeuvre ! ( For $i = 0 To $nrows - 1)
Déclare tes variables locales, passe tes $rows, $nrows en byref et règle aussi le cas de ce $file.
Met ça en tête de tous tes modules principaux, ça t'évitera des heures de grattage de cervelas :
► Afficher le textetext
Met ça en tête de tous tes modules principaux, ça t'évitera des heures de grattage de cervelas :
Code : Tout sélectionner
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
je comprend pas comment passé le resultat $nrows et $rows en byref à la fonction ResBE
puis à l'autre fonction BE,
voici le code ds son intégralité.
merci pour ton aide
pour le $file c une erreur de frappe .
puis à l'autre fonction BE,
voici le code ds son intégralité.
► Afficher le texte
pour le $file c une erreur de frappe .
Ludo
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
J'ai mis les variables de travail là où elles sont pertinentes et aussi passé le nom de l'imprimante BE en cours de traitement. J'ai fait une boucle sur toutes les BE (je n'ai aucune idée si c'est correct pour toi, mais ça te montre comment bien utiliser des variables en argument de fonction(s).
Ah oui, pense à employer OnAutoitExitRegister pour simplifier ton code, ne rien risquer d'oublier et aussi pour simplifier tes traitements d'erreur fatale. Par exemple, tu fais un "Exit" brutal si tel fichier ne peut être ouvert. En théorie, tu devrais invoquer _AD_Close() et _SQLite_Shutdown() avant la ligne Exit. Ces fonctions-là sont souvent optionnelles et ne pas les appeler ne "casse" rien dans une majorité de cas. Mais il n'en va pas toujours ainsi.
Si une erreur grave survient dans une fonction "enfouie" au nième niveau, cette fonction n'est pas censée avoir connaissance du fait que on utilise AD ou SQLite ou quoi que ce soit d'autre dans les couches au-dessus d'elle. Il n'appartient donc pas à une fonction de niveau N de se permettre de bidouiller des resources qui concernent les niveaux N-1, N-2, ... Un bon désign est de remonter cette erreur pour en informer les fonctions de niveau supérieur et ainsi leur donner une chance de fermer proprement fichiers et autres resources en cours d'utilisation. Un tel design est certes idéal mais lourd en pratique. Le mécanisme d'appel automatique de fonctions à la sortie d'AutoIt simplifie partiellement le problème et il ne faut pas se priver de l'utiliser.
Ah oui, pense à employer OnAutoitExitRegister pour simplifier ton code, ne rien risquer d'oublier et aussi pour simplifier tes traitements d'erreur fatale. Par exemple, tu fais un "Exit" brutal si tel fichier ne peut être ouvert. En théorie, tu devrais invoquer _AD_Close() et _SQLite_Shutdown() avant la ligne Exit. Ces fonctions-là sont souvent optionnelles et ne pas les appeler ne "casse" rien dans une majorité de cas. Mais il n'en va pas toujours ainsi.
Si une erreur grave survient dans une fonction "enfouie" au nième niveau, cette fonction n'est pas censée avoir connaissance du fait que on utilise AD ou SQLite ou quoi que ce soit d'autre dans les couches au-dessus d'elle. Il n'appartient donc pas à une fonction de niveau N de se permettre de bidouiller des resources qui concernent les niveaux N-1, N-2, ... Un bon désign est de remonter cette erreur pour en informer les fonctions de niveau supérieur et ainsi leur donner une chance de fermer proprement fichiers et autres resources en cours d'utilisation. Un tel design est certes idéal mais lourd en pratique. Le mécanisme d'appel automatique de fonctions à la sortie d'AutoIt simplifie partiellement le problème et il ne faut pas se priver de l'utiliser.
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
merci pour les explications , sur la fonction ReqBD_BE pourquoi on met 'ByRef $rows, ByRef $nrows' alors qu'il n'existe pas encore ?
l'idéal serait de récupérer l' user du fichier texte , de le passer à la fonction AD ,pour connaitre le groupe , ajouter la fin de chaque ligne le groupe puis de mettre tout cela ds la base sqlite.
merci du temps consacré pour mon probleme.
l'idéal serait de récupérer l' user du fichier texte , de le passer à la fonction AD ,pour connaitre le groupe , ajouter la fin de chaque ligne le groupe puis de mettre tout cela ds la base sqlite.
merci du temps consacré pour mon probleme.
Ludo
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
Byref permet de passer non pas une copie d'une variable, mais une référence à cette variable, dont la fonction appelée peut changer le contenu à loisir (ou pas). Le principe évite de faire des copies de variables potentiellement volumineuses.
Les variables sont déclarées au niveau de la fonction BE() donc elles existent. Peu importe leur contenu (qui existe déjà, du seul fait de leur déclaration) pour la fonction de requête, car celle-ci va en changer le contenu car c'est justement son rôle. Par contre, ta fonction d'exploitation des résultats récupère ce contenu qui est maintenant significatif et agit en conséquence. On pourrait préciser pour celle-ci Const Byref, ce qui empêcherait d'en changer le contenu ou, à tout le moins, indiquerait clairement que ces variables sont "read-only" à ce niveau.
On ne dispose certes pas avec AutoIt de toute la panoplie des nuances que propose un langage plus subtil, mais on a quand même les moyens d'écrire du code propre et essentiellement maintenable, à condition de s'en donner la peine. Dans l'immense majorité des cas d'outils promis à une durée de vie non météoritique (je veux dire par là : prévus pour durer "un certain temps"), cet effort vaut la peine d'être produit et diminue la fragilité ou plutôt, augmente la stabilité et la dure de vie utile de cet outil/programme. D'un point de vue comptable (professionnel) c'est un gros pourcentage du coût global de la chose qui est ainsi économisé, indépendemment du contexte, du langage, etc.
Bien que mon petit doigt me dit qu'en fait, tu récupères la liste des groupes auquels cet utilisateur appartient, et non pas un seul et unique groupe par utilisateur et que c'est là que tu coinces.
Par ailleurs, comment remets-tu à zéro le fichier groupBE.txt ?
Les variables sont déclarées au niveau de la fonction BE() donc elles existent. Peu importe leur contenu (qui existe déjà, du seul fait de leur déclaration) pour la fonction de requête, car celle-ci va en changer le contenu car c'est justement son rôle. Par contre, ta fonction d'exploitation des résultats récupère ce contenu qui est maintenant significatif et agit en conséquence. On pourrait préciser pour celle-ci Const Byref, ce qui empêcherait d'en changer le contenu ou, à tout le moins, indiquerait clairement que ces variables sont "read-only" à ce niveau.
On ne dispose certes pas avec AutoIt de toute la panoplie des nuances que propose un langage plus subtil, mais on a quand même les moyens d'écrire du code propre et essentiellement maintenable, à condition de s'en donner la peine. Dans l'immense majorité des cas d'outils promis à une durée de vie non météoritique (je veux dire par là : prévus pour durer "un certain temps"), cet effort vaut la peine d'être produit et diminue la fragilité ou plutôt, augmente la stabilité et la dure de vie utile de cet outil/programme. D'un point de vue comptable (professionnel) c'est un gros pourcentage du coût global de la chose qui est ainsi économisé, indépendemment du contexte, du langage, etc.
Bien, et ce qui t'empêche de faire ainsi est ... ?l'idéal serait de récupérer l' user du fichier texte , de le passer à la fonction AD ,pour connaitre le groupe , ajouter la fin de chaque ligne le groupe puis de mettre tout cela ds la base sqlite.
Bien que mon petit doigt me dit qu'en fait, tu récupères la liste des groupes auquels cet utilisateur appartient, et non pas un seul et unique groupe par utilisateur et que c'est là que tu coinces.
Par ailleurs, comment remets-tu à zéro le fichier groupBE.txt ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
oui , effectivement je récupère tous les groupes AD dont l'utilisateur fait parti , pour remettre le fichier groupeBE.txt à zéro pas pensé .
je modifie ma stratégie , sortir l'utilisateur du fichier texte , chercher les groupes puis recréer un fichier texte avec toutes les infos et envoyer ds sqlite.
mais je bloque déjà sur le premier , j'arrive bien à lire le fichier texte , à faire le split pour avoir chaque valeur , mais pas à sortir l'utilisateur.
voici le code :
je progresse dans le code mais je voudrai l'améliorer ,
pour résumer je récupère bien les groupes AD dont l'utilisateur fait parti mais par contre je connais pas avance le nombres groupe,
une fois les groupe trouvé , je les insère ds un fichier texte avec d'autre information,
j'ai trouvé une solution mais pas très optimisé
voici le code :
j'ai bien mon nouveau fichier avec les groupesAD , comment les insérer ds Sqlite , à savoir que je connais pas le nombre de groupe.
un champ Sqlite peut avoir plusieurs valeur ?
Dans mon champ GroupeAD , j'ai l"ensemble des groupes , séparé par "|"
maintenant je cherche la requête Sqlite pour chercher sur un seul groupe + copies + pages par user
ex:
je modifie ma stratégie , sortir l'utilisateur du fichier texte , chercher les groupes puis recréer un fichier texte avec toutes les infos et envoyer ds sqlite.
mais je bloque déjà sur le premier , j'arrive bien à lire le fichier texte , à faire le split pour avoir chaque valeur , mais pas à sortir l'utilisateur.
voici le code :
► Afficher le texte
pour résumer je récupère bien les groupes AD dont l'utilisateur fait parti mais par contre je connais pas avance le nombres groupe,
une fois les groupe trouvé , je les insère ds un fichier texte avec d'autre information,
j'ai trouvé une solution mais pas très optimisé
voici le code :
► Afficher le texte
un champ Sqlite peut avoir plusieurs valeur ?
Dans mon champ GroupeAD , j'ai l"ensemble des groupes , séparé par "|"
maintenant je cherche la requête Sqlite pour chercher sur un seul groupe + copies + pages par user
ex:
► Afficher le texte
Ludo
- jchd
- 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: [R] Rechercher plusieurs fois une valeur dans un fichier
Désolé, je ne suis plus en mesure de contribuer ici actuellement (suis, grosso modo, SDF et sans internet).
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
ludoo
- Niveau 4

- Messages : 89
- Enregistré le : lun. 11 août 2008 09:25
- Localisation : Drôme 26
- Status : Hors ligne
Re: [R] Rechercher plusieurs fois une valeur dans un fichier
j'espère que ta situation va s'améliorer , en tout cas merci pour ton aide .
pour la requête j'ai trouvé ça :
pour la requête j'ai trouvé ça :
► Afficher le texte
Ludo
