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 :

Adaptation de code


Sujet :

VB.NET

  1. #1
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut Adaptation de code
    Bonjour,

    je doit adapter un programme vb en .net seulement je ne comprend pas cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function Deduire_bic(i_compte_deb3 As String) As String
      With BICrs
         ...
         If Not .EOF Then
            Deduire_bic = ![libelle_Bic]
         End If
      End With
    On fait un appel récursif à la fonction, cela j'ai bien comprit mais ce que je ne comprend pas c'est la partie en vb il accepte mais pas en .NET. Pourquoi ? Et si vous pouviez m'expliquer ce que cela signifie ?

    Je vous remercie !

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    ![libelle_Bic] veut dire "l'inverse" de [libelle_Bic].
    Ça na pas de sens car il s'agit d'une chaîne de caractère. Quel est l'inverse d'une chaîne de caractères ?

    Dans le cas d'un booléen, c'est possible.
    Il faut peut-être transformer [libelle_Bic] en booléen.


    erf... en c#, pas en VB.net

  3. #3
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    et les [] ne servent a rien de spécial ?
    C'est surtout cela qui me chifonne un peu beaucoup ?

    Et maintenant que tu le soulignes, c'est vrai que l'inverse d'une chaîne de caractère c'est un peu ambigu.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut

    Ce serait pas un code prit sur Access et non en VB6 ?

    Philippe

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour
    Bizarre
    c'est du vb6 ou vb.net ?
    Si tu dois fournir un parametre à la fonction Deduire_bic non ?

    Deduire_bic = ![libelle_Bic] ?

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    [] permet d'utiliser un mot clé en tant que nom d'une classe, d'une variable ou autre : http://msdn.microsoft.com/en-us/library/hwx24eb6.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim colors = [Enum].GetValues(GetType(Colors))
    Sans les [] Enum designe le mot clé, avec [] il designe la classe Enum

    Dans ton cas ça ne semble pas vraiment utile.

  7. #7
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    Oui le code vient bel et bien de VB6.
    Après la fonction complète est comme 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
    17
     
    Public Function Deduire_bic(ByVal i_compte_deb3 As String) As String
            With BICrs
                'If .State = adStateOpen Then .Close()
                If .State = ConnectionState.Open Then .Close()
     
                .CursorLocation = CursorLocationEnum.adUseServer 'adUseServer
                .Open("BIC", cnn, CursorTypeEnum.adOpenKeyset, LockTypeEnum.adLockOptimistic, CommandTypeEnum.adCmdTableDirect)
                .Index = "Code_Bic"
                'TODO : modif array
                .Seek(Array(i_compte_deb3), SeekEnum.adSeekFirstEQ)
                If Not .EOF Then
                    Deduire_bic = ![libelle_Bic]
                End If
            End With
     
        End Function
    Me reste cette histoire dans le if à réglé. Le pire c'est que "libelle_Bic" n’apparaît qu'a cet endroit dans le programme (je veux dire aucune déclaration, rien, et cela me pertube car je n'ai pas de classe libelle_Bic. En fait le seul endroit ou cela apparait est à cet endroit [et aussi libelle_Bic n'est pas un mot clef ])



    EDIT : ce champ libelle_Bic est dans une table de Access. Donc il faut que je regarde en .net comment faire au lieu de ![libelle_Bic] ?

  8. #8
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    Ok pour moi pouvoir accéder au champs concerner je doit faire de cette manière en vb.net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Deduire_bic = .Fields.Item("libelle_Bic").Value

  9. #9
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Remettons un peu d'ordre dans tout ça

    Non, il n'y a pas d'appel récursif à la fonction ; on peut renvoyer le résultat de la fonction en l'assignant à la "variable implicite portant le même nom que la fonction" c'est équivalent au VB.Net Return ![libelle_Bic] (même si les 2 sont possibles en VB.Net de toute façon)

    Non ! ne sert pas à inverser un booléen en VB(.Net ou pas) pour cela on utilise Not ; ce ! correspond à l'opérateur d'accès aux éléments d'une collection en version raccourcie et existe aussi (par forcément de manière identiquement similaire) en VB.Net voir ici

    pour l'usage des [] meziantou a tout résumé et elles sont a priori inutiles dans le cas qui nous concerne

    Je ne suis pas certain de savoir pourquoi !libelle_Bic ne fonctionne pas directement et me balance "Overload resolution failed because no accessible 'Fields' accepts this number of arguments." alors que .Fields!libelle_Bic ne pose aucun problème ; ma supposition c'est que Fields est défini comme propriété en lecture seule renvoyant une collection alors que Fields.Item représente un indexeur en lecture seule ;probablement que ça pose pas de souci l'un ou l'autre en VB mais pour VB.Net ça semble être un problème ou quelque chose dans ce goût là.

    Après, (comme tu l'as posté durant ma rédaction de ce post ) je pense qu'il faut mieux rester sur une syntaxe classique (il n'y a qu'à voir le nombre de personnes qui connaissent l'existence de ! ) mais tu peux tout de même la raccourcir un peu en utilisant la notation indexeur VB.Net (qui doit probablement aussi exister en VB au passage) mais pas utiliser avec un With vu qu'on a besoin de l'objet pour démarrer) Return BICrs("libelle_Bic")

  10. #10
    Invité
    Invité(e)
    Par défaut
    Salut,

    Oups pas vu le lien donné par Sehnsucht.
    Message supprimé en conséquence.
    Dernière modification par Invité ; 01/12/2014 à 21h12.

  11. #11
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    Merci Sehnsucht pour les petites précisions

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

Discussions similaires

  1. [Oracle] [PL/SQL] Adapter un code VB
    Par LoulouFifi dans le forum Oracle
    Réponses: 1
    Dernier message: 20/07/2006, 16h11
  2. Réponses: 7
    Dernier message: 24/03/2006, 09h25
  3. [débutant] Pb adaptation de code VBA
    Par delphineleclerc1 dans le forum Access
    Réponses: 9
    Dernier message: 28/02/2006, 12h58
  4. Réponses: 22
    Dernier message: 06/10/2005, 10h53
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

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