IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Manipuler un objet active X


Sujet :

VBScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut Manipuler un objet active X
    Bonjour , j’essaie sans succés de faire réagir un objet active X .
    Le but du programme est d »envoyer le ticker d’une action située dans un fichier .txt. vers une base de donnée .
    J’aie la solution en Javascript mais je rencontre des difficultés pour la retranscrire en VBscript .

    Donc voici la solution en javascript .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    /*
    ** The data is stored in lines with following format
    ** <ticker>,<full name>,<industry number>
    **
    */
     
    WScript.Echo( "Script Started" );
     
    /* change this line according to your data file name */
    ImportStocks("TEST1.txt");
     
    WScript.Echo( "Finished" );
     
    function ImportStocks( filename )
    {
    	var fso, f, r;
    	var ForReading = 1;
    	var AmiBroker;
    	var fields;
    	var stock;
     
    	/* Create AmiBroker app object */
    	AmiBroker = new ActiveXObject( "Broker.Application" );
     
    	/* ... and file system object */
    	fso = new ActiveXObject( "Scripting.FileSystemObject" );
     
    	/* open ASCII file */
    	f = fso.OpenTextFile( filename, ForReading);
     
    	i = 1;
    	/* read the file line by line */
    	while ( !f.AtEndOfStream )
    	{
    		r =  f.ReadLine();
     
    		/* split the lines using comma as a separator */
    		fields = r.split(","); 
     
    		try
    		{
     
                            /* les symbols sont ajoutés si iln'existent pas */
     
    			stock = AmiBroker.Stocks.Add( fields[ 0 ] ); 	
    			stock.FullName = fields[ 1 ];
    			stock.IndustryID = parseInt( fields[ 2 ] );
    		}
    		catch( e )
    		{
    				WScript.echo( "There is a problem in line no." + i + ".\nThe line looks as follows:\n'" + r + "'\nIt will be skipped and next lines will be processed as normal" );
    		}
     
    		i++;	
    	}
    		AmiBroker.RefreshAll();
     
    }

    Et voici ce que j’aie retranscris en VBscript


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
      Option explicit
     
        Dim fso, f, r   
        Dim fields
        Const ForReading = 1
        dim AmiBroker
    	dim collectiondestock
     
     
    	Set AmiBroker = CreateObject("Broker.Application")
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.OpenTextFile("C:\Documents and Settings\a\Mes documents\TEST1.txt", ForReading)
     
        do While f.AtEndOfStream <> true
     
            r = f.ReadLine()
            'wscript.echo r
            fields = Split(r,",")  ' il fallait faire attention à l'écriture de split  ; decoupes r en petits fields (champs)
    		wscript.echo "La variable " & fields(0) &  " est de type " & typename(fields(0))  'le ticker est de type string
    		'le fichier test1 peut être decouper en 3 colonnes 0 , 1 , 2 avec  la virgule comme séparateur 
     
            collectiondestock = Amibroker.stocks.add (fields(0))
            collectiondestock.FullName = fields( 1 )
            collectiondestock.IndustryID = CInt( fields( 2 ) )
     
    	on error resume next
        loop
     
        Set AmiBroker = Nothing
        Set fso = Nothing
        Set f = Nothing
        Set collectiondestock = Nothing
     
    	AmiBroker.RefreshAll()
    Et je me viande ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     collectiondestock = Amibroker.stocks.add (fields(0))
    Avec le message : « cet objet ne gère pas cette propriété ou cette méthode »

    Voici un lien vers les objets activeX de l’application concernée …

    http://www.amibroker.com/guide/objects.html

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Le fond de mon problème est que je n’arrive pas à stocker ma variable objet

    Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Amibroker.stocks.add fields(0) ' fonctionne correctement
    fonctionne correctement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     collectiondestock =  Amibroker.stocks.add fields(0) ' ne fonctionne pas
    ne fonctionne pas

    Et j’aie besoin de compléter par la suite les informations de l’objet …

    Voici mon nouveau code mieux réagencé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
        Option explicit
     
        dim fso
        set fso = CreateObject("Scripting.FileSystemObject")  	
     
        dim AmiBroker
        Set AmiBroker = CreateObject("Broker.Application")
     
        Const ForReading = 1
     
        Dim f
        Set f = fso.OpenTextFile("C:\Documents and Settings\a\Mes documents\TEST1.txt", ForReading)
     
        Dim r
        Dim fields 
     
        Dim collectiondestock
     
     
        do While f.AtEndOfStream <> true
     
            r = f.ReadLine()
            'wscript.echo r
            fields = Split(r,",")  
      	  wscript.echo "La variable " & fields(0) &  " est de type " & typename(fields(0))  'le ticker est de type string
    	  'le fichier test1 peut être decouper en 3 colonnes 0 , 1 , 2 avec  la virgule comme séparateur 
     
             Amibroker.stocks.add fields(0)
            'collectiondestock.FullName = fields( 1 )
            'collectiondestock.IndustryID = CInt( fields( 2 ) )
     
    	on error resume next
        loop
     
         AmiBroker.RefreshAll() 
     
        Set AmiBroker = Nothing
        Set fso = Nothing 
        Set f = Nothing

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    un coup d'oeil sur le model object http://www.amibroker.com/guide/objects.html#Stocks montre que Stocks est une collection d'objets Stock
    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oMyStock=Amibroker.stocks.add(fields(0))
    à la différence du js qui est un "vrai" langage objet, l'instanciation d'un objet sous vbs se fait par l'instruction Set
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Caramba !Encore la fonction set ...
    Tout baigne à présent .
    Thanks

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/07/2006, 10h35
  2. Réponses: 1
    Dernier message: 22/05/2006, 13h03
  3. Réponses: 13
    Dernier message: 09/05/2006, 16h30
  4. Manipulation d'objet MS-Access (Copie de table, états, form)
    Par Mustard007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 14/02/2006, 21h37
  5. Réponses: 2
    Dernier message: 03/12/2004, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo