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 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    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

  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