Déclaration de variable

Signaler
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Bonjour,
J'ai une variable qui doit s'incrémenter en fonction du démasquage de cetains formview.
J'ai déclaré la variable (var) en début de code (pas dans le pageLoad).
dim var as short = 1

Au fur et à mesure que les formview sont appelés (visible = true), j'incrémente var de 1

un exemple :

Protected
Sub AutreDemandeBT2_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)FormView3.Visible =

Truevar += 1

End
Sub

j'ai 5 formview que je peux faire apparaitre à la suite.
Le Pb c'est qu'à chaque fois que j"ouvre une nouvelle formview, il me réinitialise var à 1.
Exemple d'ouverture d'une formview

Protected
Sub AutreDemandeBT_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)FormView2.Visible =

TrueNombreDeDemandes += 1

End
Sub

Si je tente de déclarer var dans le pageLoad (pour utiliser if page.IsPosBack, par exemple), il m'insulte (var n'est pas déclarée (au niveau des sub d'incrémentation.

Je dois avoir un Pb de culture ... Il est vrai que j'ai laissé un peu de côté les histoires d'héritage et tout ce qui va avec).
UN petit éclaiurage serait bienvenu (ou un simple lien )
Merci

7 réponses

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

Ben, peut-être que le problème de culture que tu évoques se situe là :

"var += 1"

en effet, en VB pour incrémenter une variable on écrit cette syntaxe :

"var=var+1"

Comme tu l'as écris, en VB cela sera effectivement interprêté en var=1...

Amicalement,
Us.
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Salut Us,
Pas d'erreur. on peut utiliser les deux formules...
Merci quand même.
@+
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Salut,

Oui l'incrémentation fonctionne aussi comme cela.
Je pense que c'est un problème d'accès du fait des protected sub..
La variable var est bien déclarée en public en haut du module afin d'y avoir accès partout?
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Bonjour Lolokun,
En effet, ell est bien déclarée en début de module et en public.
Sur un post modifié en "portée d'une variable", pour lequel la réponse a été d'utiliser une variable de session.
Voici la réponse :

Pour conserver la valeur d'une variable entre deux postback, tu peux tout simplement utiliser les variables de session.
Exemple (C#) :
Session["Compteur"] = 0;

Pour recuperer la valeur :
int iVal = Convert.ToInt32(Session["Compteur"].ToString());

ça marche mais ça n'explique pas ce Pb de "Public dim qui fonctionne pas .. Si tu as une idée du pourquoi, je suis preneur !
Je suis finalement passé par un texbox invisible sur la page (c'est de la bricole, mais bon ...).
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Protected
Le mot clé Protected de l'instruction Dim déclare les éléments accessibles uniquement à l'intérieur d'une même classe ou d'une classe dérivée de celle-ci.

Je pense que pour une sub cela fonctionne pareil, ta variable est modifiée quand tu es encore dans ta sub.
Essaye de faire un Messagebox.show(var) avant de quitter ta sub.
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

J'ai testé en mode debug et j'ai bien une incrémentation. Celà dit, j'ai pas vérifié après la sortie de proc ...
Je vais tester tout de suite !
@ toute à l'heure, donc !!
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

ah ben non !! Je suis pas dans le truc, là ...
Désolé mais je fais comment pour mettre un messagebox .show après la proc ? Vu que cette dernière fait un postback, on retourne au point de départ (réinitialisation de var) ...