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

ASP.NET Discussion :

Problème de visibilité de variable :(


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut Problème de visibilité de variable :(
    Salut,

    J'ai deux pages, une contenant la connexion sql (Dim cn As SqlConnection) et d'autres variables. Mais ces variables ne sont pas écrites dans une classe, c'est juste un fichier standard du genre
    <%
    ...
    Dim cn As SqlConnection = ...
    ...
    %>

    J'inclue cette page un peu partout pour avoir accès à ma base de données quand j'en ai besoin, ça marche impeccablement dans beaucoup de pages.

    Là je viens de créer la deuxième page concernée par ce problème, elle contient un formulaire pour l'upload de fichier. J'ai testé le script "de base" ça fonctionne.
    Là j'essaye d'ajouter mes accès à la bd à l'intérieur.
    Mon problème: lorsque je suis dans le formulaire déclaré ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form enctype="multipart/form-data" runat="server">
    Appel à cn quelque part ici.
    </form>
    Apparemment mon bug vient du fait que je suis dans le form qui est runat="server", c'est comme si c'était un contexte indépendant.
    Je veux bien que ça soit le cas mais... que ça fonctionne au moins! Parce que là mon problème c'est que, si j'utilise cn en dehors du formulaire, j'y arrive. Mais quand il est à l'intérieur, il fait une erreur du type
    Compiler Error Message: BC30451: Name 'cn' is not declared.
    Bref, il m'est impossible d'utiliser ma base de données, et c'est très génant...
    Idem pour le code d'une fonction qui est dans la page d'upload
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script language="VB" runat="server">
    		Sub Upload_Click(source As Object, e As EventArgs)...
    Si j'essaye d'utiliser la connexion dedans, je ne peux pas...

    Ma solution serait à mon avis de re-déclarer la connexion à l'intérieur, mais n'y a t'il pas un moyen de rendre ma connexion visible PARTOUT sur tous mes niveaux, même ceux qui sont inclus dans des procédures et formulaires s'exécutant sur le serveur (runat=server)?

    Je pensais au pire essayer de mettre le fichier de connexion en tant que classe, mais à mon avis ça ne rendrait pas plus visible...

    Bref pour le moment je suis coincé par un problème de visibilité de variable

  2. #2
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Perso pour tout ce qui est connexion à une DB SqlServer, j'ai créé une classe.
    Voici le code :

    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
    Imports System
    Imports System.Data.SqlClient
    Imports System.IO
     
    Public Class Connect
        Dim Chaine As String = System.Configuration.ConfigurationSettings.AppSettings("CS") 'Ma chaîne de connexion est stockée dans le web.config
     
        Public Function SeConnecter() As SqlConnection
            Dim connection As SqlConnection = New SqlConnection(Chaine)
            'Ouverture
            connection.Open()
            Return connection
        End Function
     
    End Class
    Et pour instancier une nouvelle connexion dans ma page .aspx.vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim cnx as new SqlConnection
    cnx = New Connect().SeConnecter
    Et tout cela fonctionne très bien, en faisait un Imports du projet dans lequel cette classe est présente bien sûr.

    J'espère que ça pourra t'aider !

  3. #3
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut
    Et tout cela fonctionne très bien, en faisait un Imports du projet dans lequel cette classe est présente bien sûr.
    J'ai essayé donc j'ai créé un .vb nommé DataBase et contenant le même type de code que tu m'as montré, je l'ai dans un répertoire nommé _include/ , mais la question est, comment importer simplement cette classe? Car là j'ai l'ancienne page de connexion qui va rester la même et utiliser cette classe, mais actuellement je n'arrive pas à trouver l'instruction pour lui dire d'aller chercher cette classe.
    J'ai appelé cette classe "DataBase"
    Et j'ai essayé ça:
    • <% Imports DataBase %>
    • <%@ Imports DataBase %>
    • <%@ Imports "DataBase" %>
    • <%@ Imports "DataBase.vb" %>

    Mais apparemment ça ne fonctionne pas.

    (Pour info j'utilise DreamWeaver donc moi importer une classe dans un projet ça devrait être plus manuel)

  4. #4
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Ah ok !
    En fait quand tu fais un Imports, tu importe un namespace (espace de nom).
    Avec Visual Studio 2005, tu as un dossier MonSite (par exemple) : c'est la solution. A l'intérieur tu as deux dossiers : WebSites, qui contient toutes tes pages (aspx et aspx.vb) et éventuellement les dossiers du site, et Projects, qui contient d'autres dossiers.
    Dans mon cas, dans Projects, j'ai plusieurs dossiers, notemment un dossier "Generique" qui contient ma classe Connect.vb
    Generique est le namespace de Connect.vb
    Donc dans chaque page où j'ai besoin d'une connection à une DB, je met tout en haut de l'aspx.vb la ligne "Imports Generique", et ma classe et ses méthodes sont visibles.

    J'espère que tout ça t'as aidé et que tu arriveras à trouver l'analogie entre DreamWeaver et VS2005 !

    Bon courage en tout cas !

  5. #5
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut
    Merci beaucoup pour ton aide!
    Il y a apparemment une autre solution alternative qui semble fonctionner, c'est d'utiliser des fonctions précédemment importées par un fichier (où je place mes fonctions utiles). Apparemment, il voit les fonctions qu'on a importé, mais pas les variables déclarées avec "Dim" qu'on est sensé avoir importé si on travaille dans des blocs utilisant des scripts runat=server...

  6. #6
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    De rien ^^

    Je suis content de pouvoir apporter une aide, même petite ^^

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

Discussions similaires

  1. Problème de visibilité des variables entre modules
    Par Krys006 dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2011, 14h30
  2. problème de visibilité des variables
    Par elhem dans le forum C#
    Réponses: 3
    Dernier message: 18/08/2009, 22h07
  3. Problème de visibilité des variables globales
    Par imaril dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/04/2008, 02h20
  4. problème de visibilité des variables dans un include
    Par d1g-2-d1g dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2005, 09h35
  5. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55

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