Portée des variables [Résolu]

thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention - 12 sept. 2008 à 11:58 - Dernière réponse : thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention
- 13 sept. 2008 à 07:08
Bonjour

J'ai un peu de mal avec la portée des variables et j'aimerais que l'on m'éclaire un peu

Je fais un ptit prog qui charge une base Nom + Prenom et qui l'affiche dans un DataGrid.
Comme j'ai besoin d'accéder a ma table depuis plusieurs procédures, je l'ai déclaré en dehors des procédures.
J'ai cru comprendre que c'est comme ca qu'il fallait faire.... (voir bout de code ci dessous)

Ce qui me choque c'est que si je met un point d'arret en debug sur la ligne de déclaration de la table par exemple  (Public Table3 AsNew DataTable)
je constate que chaque fois que je clique sur une ligne de ma datagrid, je passe par ce point d'arret !!!! et franchement je ne comprend pas la raison.

Du coup je me dit que a chaque fois que je clique sur un enregistrement je redéclare ce qui est déjà déjà déclaré ?

Bref j'aimerais bien comprendre, ou alors ce n'est pas comme cela que j'aurais du faire ?

D'avance merci

Partial

Class Default4

Inherits System.Web.UI.Page

Public Data3
As
New DataSet()

Public Table3
As
New DataTable

Dim Nom
As
New DataColumn(
"Nom",
GetType(System.String))
Dim Prenom
As
New DataColumn(
"Prénom",
GetType(System.String))

Protected
Sub ListeUtilisateurs() 'Procédure qui rempli ma table
  
If Data3.Tables.Count > 0
Then
      Data3.Tables(0).Clear()

  Else
 Table3.Columns.Add(Nom)
 Table3.Columns.Add(Prénom)

 Data3.Tables.Add(Table3)

End
If
 'Etc Etc Etc ensuiste je le met l'affiche sur un data grid
'
End Sub
 
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 12 sept. 2008 à 21:20
3
Merci
"Mais que veux tu dire par plusiers instances de ma classe defaut 4"

Par exemple, Windows.Forms.Button est une classe
Dim Obj As New Windows.Forms.Button
Obj est une instance de Button. Autrement dit, à chaque fois que tu appels le constructeur (New) tu initialises une nouvelle instance. Si tu as plusieurs boutons sur un formulaire, tu as donc plusieurs instance de la classe Button. Même chose pour ta classe default4.

Elle représente quoi ta classe default4? Ta plage principale je suppose? Et lorsque tu clique sur un élément de ta liste, la page est rechargé pour afficher le changement non? Et donc ta Table3
est recréée

Pour le projet entier, je sais pas trop, je ne fais pas d'ASP ni de base de donnée...

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 12 sept. 2008 à 14:21
0
Merci
Salut,
même s'il est probable que les réponses soient les mêmes, ton code ressemble plus à de l'ASP.NET qu'à du VB.NET

dans quel cas tu n'es pas sur le bon site

http://www.aspfr.com/

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 12 sept. 2008 à 19:32
0
Merci
Salut,
Dans ce code, Public Table3
AsNew DataTable
est appelé à chaque fois que tu initialise une instance de ta classe Default4

Dans une méthode, seul Dim est autorisé. Une variable locale déclaré avec Dim n'est accessible que dans le bloc de déclaration. C'est à dire que si elle est déclaré dans un If.. End If, elle ne sera pas accessible hors du If... End If

Hors d'une méthode, on peut déclarer:
Private (= Dim): Accessible seulement dans la classe
Friend : Accessible dans le projet
Public : Accessible hors du projet (les classes publiques d'une DLL par exemple)

Si tu veux que plusieurs instances de ta classe Default4
utilisent une même variable (par ex Table3
), déclare la Shared. Shared sert à déclarer une méthode/variable statique, une seule de ces variable sera créé, même un programme hors de ton projet utilisera le même objet statique. Shared peut être combiné avec Private, Friend ou Public.
Commenter la réponse de Kevin.Ory
thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention - 12 sept. 2008 à 20:41
0
Merci
Bonsoir Kevin.

Déjà merci pour ta réponse qui m'éclaire un peu plus.

Mais que veux tu dire par plusiers instances de ma classe defaut 4


 


Mon idée est simple sur mon serveur IIS j'ai cette petite appli qui affiche un DataGrid avec des données. Les utilisateurs peuvent cliquer sur une ligne de ce datagrid, en dessous d'affiche l'enregistrement complet qu'ils peuvent modifier.


(Le data grid est une table en mémoire chargée a partir d'un fichier Csv)


Voila rien de bien compliqué... A lors quellle est la philosophie pour déclarée cette table et ce dataset ?


D'avance, encore merci
Commenter la réponse de thonyboy
thonyboy 166 Messages postés mercredi 23 avril 2003Date d'inscription 16 février 2011 Dernière intervention - 13 sept. 2008 à 07:08
0
Merci
Merci beaucoup pour toutes ces infos.
Commenter la réponse de thonyboy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.