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 :

Déclaration variable fixe [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut Déclaration variable fixe
    bonjour à tous,

    J'ai crée un module "connexion" qui intègre plusieurs Public Sub.
    Ces différents public sub sont appelés par mes forms en fonction de la connexion que je dois établir.
    J'ai lu les différentes possibilités pour déclarer les variables (private, public, etc...).
    Mais je bute sur un truc ou bien je l'ai zappé. J'ai bien réussi à déclarer en public certaines variables que j'utilise dans plusieurs Sub.
    Mais j'aimerais créer de la même manière une variable fixe qui contiendrait par exemple un chemin d'accès en string mais qui serait connu quel que soit le sub intégré à ce même module que j’appellerais.

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Bonjour,

    Je crois que ce que tu cherche est ce que l'on appelle une variable static (shared en vb de mémoire il me semble).

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re,

    J'ai essayé en mettant en haut de mon module ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Shared adressereseau As String = "\\test\reseau\adresse\"
    La réponse est :

    Erreur 1 Les variables des modules ne peuvent pas être déclarées 'Shared'

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Les Modules en VB.NET sont l'équivalent des classes Static en C#, et par défaut tout y est Static (Shared).

    Peut-être que la solution serait de la déclarer avec un niveau d'accessibilité Friend.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re,

    Je vais tester dès que je peux avec la propriété friend.

  6. #6
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Au temps pour moi, c'est une spécification de visual basic et n'ayant pas codé en vb depuis .... 10 ans, je ne le savais pas (XD)

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour mafiosi

    Une variable "fixe" c'est quoi pour toi? si c'est une variable qui ne change pas durant toute la duree de l'appli .... c'est un const qu'il faut et que tu declare avec la portee Public .Ils n'ont rien laisse pour nous.....
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Module Module1
        Public Const adressereseau As String = "\\test\reseau\adresse\"
    End Module
    bon code................

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Hello,

    Fixe veut dire que la seule fois ou j'aurais à la changer est lorsque l'adresse réseau changerait un jour.

    Dans mon projet, j'utilise environ 6 BD que j'appelle en fonction du form utilisé.
    Au lieu d'aller modifier un chemin d'accès à une bd dans plusieurs form, j'ai crée ce module connection afin de n'avoir à modifier le chemin d'accès qu'une fois (le nom des bd restant inchangées). Ensuite dans mon form, j'appelle le sub de ce module correspondant à la connexion que je veux utiliser.

    Dans un sub de ce module, j'affecte à une variable le chemin absolu. Avant, par exemple, j'avais à chaque fois (en gros) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public sub connection1
    base = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "
    base1 = "\\test\reseau\adresse\base1.mbd"
    end sub
    public sub connection2
    base = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "
    base2 = "\\test\reseau\adresse\base2.mbd"
    end sub
    Avec cette nouvelle variable cheminreseau, cela donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public sub connection1
    base = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "
    base1 = cheminreseau & "base1.mbd"
    end sub
    public sub connection2
    base = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "
    base2 = cheminreseau & "base2.mbd"
    end sub
    Ensuite dans un de mes form, j'aurais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call connection1()
    Dim connectionString1 As String = base & base1
     Me.Table1dataAdapter = New OleDbDataAdapter(selectCommand, connectionString1)
    Voilà pour l'histoire .....
    J'en profite pour poser une autre question concernant le dernier extrait de code que j'ai mis. Si un jour, mon chemin d'accès comprend un espace, est-ce que cela va quand même fonctionner ? Car de mes vieux souvenir de Batchs DOS, VBA, il fallait mettre les quotes lorsque le chemin d'accès avait un espace.... Si tel est le cas je pense que la dernière variable en string (connectionString1) risque de partir en sucette .....

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Ok dans ce cas nous avons fait fausse route

    Il est plus adapté d'utiliser les ConnectionStrings du fichier app.config. Lorsque ton chemin réseau changera, il te suffira de mettre à jour le app.config, cela t'évitera de devoir recompiler et redéployer ton soft.

    A rajouter dans le fichier app.config :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <configuration>
      <connectionStrings>
        <add name="Base1" 
             connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\test\reseau\adresse\base1.mbd;User Id=admin;Password=admin;"/>
        <add name="Base2" 
             connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\test\reseau\adresse\base2.mbd;User Id=admin;Password=admin;"/>
      </connectionStrings>
    </configuration>
    Ensuite dans ton code il te suffit de faire appel au ConfigurationManager afin de récupérer tes connections strings. Voici un exemple pour récupérer Base1 :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    ConString As String = ConfigurationManager.ConnectionStrings("Base1").ConnectionString
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Re,

    Merci pour ta suggestion, je ne connaissais pas du tout celà.

    Lorsque ton chemin réseau changera, il te suffira de mettre à jour le app.config, cela t'évitera de devoir recompiler et redéployer ton soft.
    Je ne peux pas déployer mon outil pour des problèmes de droits d'administration sur certains PC. Pour l'instant, à chaque modif, je crée un autoextractible que je mets sur le disque réseau et informe les utilisateurs qu'une mise à jour est disponible (7/8 personnes). L'autoextractible remplace automatiquement le .exe sur le poste qui l'aura exécuté. Je ne sais pas si ce que tu me suggère peut s'appliquer dans mon cas particulier

  11. #11
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    En fait ton application se compose (en gros) de 2 fichiers :
    - l'exécutable (*.exe)
    - le fichier de configuration (app.config)

    Actuellement, ton package d'installation contient tout le temps ces 2 fichiers (au minimum).

    Si tu mets ta connection string dans le code, tu devras toujours inclure les 2 fichiers sus-mentionnés dans ton package d'installation.

    Avec la méthode que je te propose, il te suffira de mettre à jour le app.config. Donc tu pourras n'inclure dans ton package d'installation que ce fichier de configuration (= déploiement plus léger).

    Lorsque tes utilisateurs installeront le package d'installation, ce dernier ira automatiquement remplacer le app.config sur leur poste. Et lorsque le logiciel sera relancé, il prendra automatiquement en compte ta nouvelle connection string.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Ah ok
    Moi pour l'instant, dans mon archive autoextractible, je ne mettais que le .exe (issu de "Générer") que je récupère dans le bin\release et mes dll que j'ai besoin.
    Je n'ai jamais pris avec le app.config

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Bonjour,

    Petit message pour vous remercier de votre aide . Problème résolu grâce à vos suggestions.

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

Discussions similaires

  1. [Runtime] Récupération d'une variable fixée dans un .bat
    Par seiryujay dans le forum API standards et tierces
    Réponses: 18
    Dernier message: 16/10/2006, 17h57
  2. Question déclaration variable
    Par inthemix dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/10/2006, 16h04
  3. variable / fixe
    Par malmzi2007 dans le forum Zope
    Réponses: 17
    Dernier message: 21/07/2006, 17h58
  4. Réponses: 12
    Dernier message: 03/04/2006, 19h08
  5. erreur déclaration variables
    Par bobic dans le forum ASP
    Réponses: 4
    Dernier message: 13/09/2005, 10h11

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