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

WinDev Discussion :

Operateur AS c# en WL


Sujet :

WinDev

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut Operateur AS c# en WL
    Bonjour à tous,

    J'essaie de convertir du code c# en WL et je bloque sur un opérateur AS.


    Voici la documentation :

    Nom : 2016-12-19_12-03-42.png
Affichages : 479
Taille : 111,3 Ko


    Voici mon code et tout les essaies que j'ai fait pour essayer de passer la classe en rreference.

    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
    consumerKey est une chaîne = gclQuickbookOnline:Get_ConsumerKey()
    consumerSecret est une chaîne = gclQuickbookOnline:Get_ConsumerSecret()
    accessToken est une chaîne= gclQuickbookOnline:get_AccessToken()
    accessTokenSecret est une chaîne= gclQuickbookOnline:get_AccessTokenSecret()
    sRealmId est une chaîne= gclQuickbookOnline:get_realmId()
    sAppToken est une chaîne = gclQuickbookOnline:Get_AppToken()
     
     
    clOAuthRequestValidator est un OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret)
    clContext est un ServiceContext(sAppToken,sRealmId,IntuitServicesType.QBO,clOAuthRequestValidator)
    clService est un DataService(clContext)
    clCustomer est un Customer
    //pclTest est un T dynamique
     
    //pclTest = allouer un t
     
    //Mandatory Field
    clCustomer.set_GivenName("Gabriel")
    clCustomer.set_Title("Mr,")
    clCustomer = clService.add(clCustomer)
     
    //ADD
    //clResCust est un customer
    //clCustomer = clservice.add(clCustomer)
    //clCustomer<-clService.add(clCustomer)
    //clServAdd est un DataService(clContext)<-clCustomer
    //clCustomer<-clService.add(clCustomer)

    Je reçois toujours l'erreur sur la méthode Add() :

    Nom : 2016-12-19_12-08-55.png
Affichages : 516
Taille : 90,1 Ko


    Si quelqu'un serait comment, ça m'aiderais énormément, je bloque déjà depuis 1 semaine sur ça.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 068
    Points : 9 509
    Points
    9 509
    Par défaut
    hello,
    le problème c'est que la méthode Add de la classe DataService est de type générique :
    Add<T>
    Adds an entity under the specified realm. The realm must be set in the context.
    Quelle version de windev as-tu ? il me semble que les génériques dotnet avaient été intégrés dans une version récente de windev. (moi je n'ai que la version 16).
    Sinon il y a un moyen de contournement en créant un assemblage pipotesque c# avec le type exact passé dans windev voir ici

    Ami calmant, J.P

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Salut JP,

    Merci pour ta réponse. J'utilise Windev 20.

    Je vais lire attentivement le post, j’espère bientôt trouver la solution.

    Je te tiens au courant.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 068
    Points : 9 509
    Points
    9 509
    Par défaut
    hello,
    apparemment c'est à partir de la version 21 que les génériques sont traités dans Windev :
    Versions 21 et supérieures
    Génériques :
    La syntaxe à utiliser pour instancier un générique est la suivante :
    <Nom de l'objet> est "<Nom du générique><<Type concret>>"
    Exemple d'instanciation d'un générique :
    MaListe est "List<CMonObjet>"
    Versions 21 et supérieures
    Méthodes génériques :
    La syntaxe à utiliser pour appeler une méthode générique est la suivante :
    <Nom de l'objet>."<Nom de la méthode générique><<Type concret>>"(<paramètres>)
    Exemple d'appel d'une méthode générique :
    // Prototype de la méthode générique CloneListe de la classe CClone
    // CloneListe(List<T>)
    // ...
    MaListe est "List<int>"la
    // ...
    clClone est CClone
    MaListeCopie est "List<int>" <- clClone."CloneListe<int>"(MaListe)
    Versions 21 et supérieures
    Méthodes d'extension :
    Les méthodes d'extension peuvent être appelées de la même manière que les méthodes de l'objet.
    Lorsque c'est possible, les types WLangage sont implicitement convertis en types .Net.
    Exemple :
    clChaineDotNet est "String" dynamique
    sChaineWL est une chaîne = "chaîne"
    clChaineDotNet = sChaineWL
    En ce qui concerne la solution de contournement du lien que j'ai mis plus haut, c'est plus complexe dans ton cas car c'est pour une méthode de classe et pas un type. Tu peux essayer de créer une nouvelle classe derivée de DataService où la méthode Add est définie pour le type Customer comme ceci par exemple en C# :
    Code c# : 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
    using System;
    using System.Collections.Generic;
    using Intuit.Ipp.Core;
    using Intuit.Ipp.DataService;
    using Intuit.Ipp.Data;
    namespace WindevHelper
    {	
    	public class MyDataService : DataService {
     
    		public MyDataService(ServiceContext serviceContext) : base(serviceContext){	}
     
    		public Customer Add(Customer customer) {
    		return	base.Add(customer) ;
    		}		
    	}		
    }

    En pièce jointe l'assemblage généré à partir de ce code. J'utilise SharpDevelop pour compiler et générer l'assemblage. SharpDevelop est beaucoup plus léger et plus rapide que le mastodonte visual studio et il est gratuit).
    Inclure l'assemblage dans son projet .
    Et voici comme l'utiliser par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    consumerSecret est une chaîne = "fofo"
    accessToken est une chaîne= "pipopipo"
    accessTokenSecret est une chaîne= "lesecret"
    sRealmId est une chaîne= "12"
    sAppToken est une chaîne = "hiz"
    clOAuthRequestValidator est un OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret)
    clContext est un ServiceContext(sAppToken,sRealmId,IntuitServicesType.QBO,clOAuthRequestValidator)
    clService est un MyDataService(clContext)
    clCustomer est un Customer
    clCustomer.set_GivenName("Gabriel")
    clCustomer.set_Title("Mr,")
    clCustomer =  clService.Add(clCustomer)
    Je ne suis pas du tout sur que cela fonctionne mais tu peux quand même essayer. Sinon tu peux tenter de voir si
    les génériques fonctionnent sur un autre PC (Express et version officielle ne font pas bon ménage sur le même PC) avec windev Express 21 installé.

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Bonjour,

    Merci beaucoup d'avoir pris le temps de faire ce code pour moi

    J'ai inclu ta Dll dans mes assemblages et ajuster le code pour ceci :

    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
     
    clOAuthRequestValidator est un OAuthRequestValidator(sAccessToken, sAccessTokenSecret, sConsumerKey, sConsumerSecret);
    clContext est un ServiceContext(sAppToken,sRealmId,IntuitServicesType.QBO,clOAuthRequestValidator)
    clService est un MyDataService(clContext)
    clCustomer est un Customer
    clCustomer.set_GivenName("Gabriel")
    clCustomer.set_Title("Mr,")
    clException est un 'Exception'
     
     
    QUAND EXCEPTION DANS
    	clCustomerAnswer est un Customer <- clService.Add(clCustomer)
    FAIRE
    sChaine est une chaîne = clException.get_Message()
    Info(ExceptionInfo() + RC + sChaine)
    FIN

    J'obtenais un erreur pour le RequestValidator, mais c'était les mauvais paramètre. Maintenant ça passe.

    Lors du MyDataService.Add, je reçoit maintenant un nouveau type d'erreur.

    Nom : 2016-12-21_23-40-25.png
Affichages : 449
Taille : 15,6 Ko

    Le surlignée est l'exception renvoyé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sChaine est une chaîne = clException.get_Message()

    Je vais continuer à faire des recherches de mon coté.

    Merci encore,

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 068
    Points : 9 509
    Points
    9 509
    Par défaut
    hello,
    pour voir si cela vient de ma dll, il faudrait que tu puisses essayer ton code dans la version windev express mobile 21 où normalement tu peux directement utiliser la méthode Add de dataService donc sans passer par ma classe dérivée. Attention il faut mieux installer la version windev express sur un PC où il n' y a pas de version officielle de windev installée.
    Ami calmant, J.P

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Re ,

    Donc, MAJ, j'obtient une réponse :

    Nom : 2016-12-22_00-02-57.png
Affichages : 462
Taille : 158,4 Ko


    Lorsque je change le nom et refait un test, je reçoie un ID qui s'incrémente à chaque essaie. Si je laisse le même nom, j'obtient là même erreur.

    J'imagine que ça fonctionne quelque part, par contre, je ne voie pas mon Client dans mon Sandbox de QuickBook Online.

    Reste à voir pourquoi..

    J'arrive au bout

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

Discussions similaires

  1. redirection operateur flue >> appel system
    Par philippe V dans le forum MFC
    Réponses: 9
    Dernier message: 16/03/2005, 18h01
  2. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09
  3. operateur de condition
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/12/2004, 15h56
  4. [langage] opérateur booleen
    Par louisis dans le forum Langage
    Réponses: 4
    Dernier message: 30/06/2004, 16h12
  5. [langage] l'operateur tr///
    Par March' dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2003, 21h57

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