[R] Créer des variables automatiquement dans un programme

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Andhu
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 09 avr. 2009 09:53
Status : Hors ligne

[R] Créer des variables automatiquement dans un programme

#1

Message par Andhu »

Bonjour,

Etant débutant sous AutoIt, je me permets de vous poser une petite question:
Est-il possible de dire à un programme de créer des variables tout seul?

Je m'explique:
J'ai un fichier .csv comportant 3 colonnes:
- Catégorie Article
- Code Article
- Valeur Article

Mon but est de trier dans un nouveau fichier excel, le tableau précédent.
Dans l'idée je dois trier par Catégorie d'articles, calculer le nombre d'articles existant pour chaque catégorie et établir la valeur totale des articles d'une même catégorie.

Le problème, c'est que les catégories varient d'un mois à l'autre, certaines peuvent disparaîtrent et d'autres se créer.
C'est pourquoi je vous demande, est-il possible avec du code de créer une variable à chaque fois que mon programme rencontre une nouvelle catégorie?

Dans l'attente de vos réponses...
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [...] Créer des variables automatiquement dans un programme

#2

Message par GaRydelaMer »

Bonjour

un truc vite fait, pour ouvrir et faire les calculs

Fichiers "c:\un dossier avec des fichiers csv\zz.csv"

Code : Tout sélectionner

Catégorie Article;Code Article;Valeur Article
zz;1;10
aa;5;14
bb;9;11
aa;6;15
bb;8;1
 
Il te faut créer un fichier "c:\un dossier avec des fichiers csv\Schema.ini"

Code : Tout sélectionner

[zz.csv]
ColNameHeader=True
Format=Delimited(;)
MaxScanRows=0
CharacterSet=ANSI
Col1="CATÉGORIE ARTICLE"  Char
Col2="CODE ARTICLE" Long
Col3="VALEUR ARTICLE" long
 
Ensuite une fois fait ca, avec les possibilité du SQL:

Code : Tout sélectionner

Local $oConn = ObjCreate("ADODB.Connection")
With $oConn
    .ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=csv;Dbq=c:\un dossier avec des fichiers csv\;"
    .Open
EndWith

Local $_oRS = ObjCreate("ADODB.Recordset")
Local $sql = "SELECT [Catégorie Article], Count([Code Article]) AS Nb, Sum([Valeur Article]) AS Somme " & _
        "FROM zz.csv " & _
        "GROUP BY [Catégorie Article] " & _
        "ORDER BY [Catégorie Article]"
$_oRS.Open($sql, $oConn, 3, 3)

While Not $_oRS.EOF
    Local $cat = $_oRS.Fields(0).Value
    Local $nb = $_oRS.Fields(1).Value
    Local $somme = $_oRS.Fields(2).Value
        
    ConsoleWrite($cat & " " & $nb & " " & $somme & @LF)
    $_oRS.MoveNext
WEnd
 
Résultat dans la console:

Code : Tout sélectionner

aa 2 29
bb 2 12
zz 1 10
 
catégorie "aa", 2 articles, somme des 2 articles 29
catégorie "bb", 2 articles, somme des 2 articles 12
catégorie "zz", 1 articles, somme des 1 articles 10
Andhu
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 09 avr. 2009 09:53
Status : Hors ligne

Re: [...] Créer des variables automatiquement dans un programme

#3

Message par Andhu »

Merci pour ton aide.
Cependant, malgré le fait que j'ai bien suivi tes instructions, j'ai un message d'erreur:
Line -1:
Error: The requested action with this object has failed


J'ai du faire quelque chose de travers je pense...
Le code avec la requête SQL, il fallait le mettre dans un fichier au3 n'est-ce pas?

Merci encore pour ton aide.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [...] Créer des variables automatiquement dans un programme

#4

Message par GaRydelaMer »

Bonjour

Oui tu mets la dernière partie dans un fichier au3.

Il te faut modifier la ligne:
.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=csv;Dbq=c:\un dossier avec des fichiers csv\;"

Mets le dossier ou se trouve ton fichier CVS.
Andhu
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 09 avr. 2009 09:53
Status : Hors ligne

Re: [...] Créer des variables automatiquement dans un programme

#5

Message par Andhu »

J'avais modifié le chemin t'inquiètes. J'ai tout placé dans un dossier à la racine comme tu m'as dit et maintenant quand je lance le .exe, rien ne se passe... Le bon côté des choses c'est qu'il n'y a plus d'erreurs au moins xd
En réalité il semble qu'il se lance puis 1 seconde plus tard se coupe. J'arrive à voir dans le gestionnaire de tâches Windows le script.exe qui apparait puis disparait :s
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [...] Créer des variables automatiquement dans un programme

#6

Message par GaRydelaMer »

Bonjour

pour voir le résultat depuis Scite, au lieu de faire F7 ou ctrl+F7 (compiler le programme cad créer le .exe), fais simplement F5 tu auras les résultat dans la console de scite, ou remplce consolewrite() par un msgbox().

Chris
Répondre