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

VB.NET Discussion :

Formule enregistrée en base


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut Formule enregistrée en base
    Bonjour,

    Je travaille sur une application VB 2010 pour laquelle j'ai besoin de calculer des bonus attribués à des clients.
    Pour chaque client, je récupère le (ou les) lien(s) avec les bonus.
    Pour chaque bonus, j'ai une formule de calcul associée.
    par exemple : "(Val1 * 1.2) + (Val2 * 1.3)"

    Val1 et Val2 sont des données de la fiche client.
    Si je remplace Val1 et 2 par leur valeur j'obtient une chaine "(12.2*1.2)+(5.1*1.3)"

    Comment puis-je effectuer réellement le calcul et récupérer le résultat dans une variable ?

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    vu qu'il n'y a plus d'eval toupabo en VB.NET tu te retrouves avec deux solutions (à ma connaissance) :
    - normaliser tes formules (ex. la formule est toujours de forme (v1 *X) +(v2 *Y), alors tu mets X et Y en base),
    - faire un parser qui va lire et interpréter tes formules.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Il existe des dll opensource comme NCalc, qui à l'air d'être éprouvé : http://ncalc.codeplex.com/


    Mais par curiosité, je suis allez voir si il reste des "Eval" toutPAsbo (comme tu dis) en .NET. Et oui, via la Datatable.
    (Après, je laisse les experts évaluer à quel point ce n'est pas beau)


    Si on fait bien sur au préalable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaChaine.Replace("Val1",12.5)
    MaChaine.Replace("Val2",5.1)
     
    Dim result as double = Evaluate(MaChaine)
    Fonctionne, je l'ai tester pour rigoler :

    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
      Private Function Evaluate(ByVal MathExpression As String) As Double
     
            Try
     
                Dim result As Double
     
                Dim dt As New DataTable
                Dim dc As New DataColumn("Eval", result.GetType(), MathExpression)
     
                dt.Columns.Add(dc)
                dt.Rows.Add(0)
     
                result = CType(dt.Rows(0).Item("Eval"), Double)
     
                Return result
     
            Catch ex As Exception
                Return -1
            End Try
     
        End Function
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Points : 333
    Points
    333
    Par défaut
    Merci mactwist69 , c'est exactement ce que je cherchais.

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

Discussions similaires

  1. Recherche d'enregistrements sur base d'une liste
    Par michel baily dans le forum SQL
    Réponses: 4
    Dernier message: 31/08/2006, 09h59
  2. transfert d'enregistrements entre base
    Par le69 dans le forum Requêtes
    Réponses: 6
    Dernier message: 29/06/2006, 23h37
  3. Insérer Enregistrement dans Base de données
    Par TurricanII dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/05/2006, 12h59
  4. Formule excel de base
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/04/2006, 11h49
  5. nbre enregistrements dans base de données
    Par Chonchon dans le forum JDBC
    Réponses: 3
    Dernier message: 09/01/2006, 20h54

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