Accueil > Forum > > > > Class partagée
Class partagée
vendredi 30 septembre 2005 à 22:43:03 |
Class partagée

coulis
|
Bonjour à tous, Voilà le problème  J'ai une class du genre:
Imports System.Web Imports System.Data.SqlClient Namespace NamesStatistique Public Class Stats1
Private Shared Sub Stats(toto) Sub1(toto) Sub2() End SubCette class appel des procédures "Sub1, 2..." Pour ces procédures j'ai besoin d'un tableau dont je ne connais pas la longueur exacte. J'ai donc ceci (en rouge les commentaires)
Shared id_StatPage() As Integer (mon tableau : le Dim ne fonctionne pas avec un procédure Shared) Shared j As Integer = 0 Shared m As Integer
Public Shared Sub Sub1() (obligé de mettre une procédure shared sinon pas reconnu lors de l'appel de ma class)
Dim dr As SqlDataReader Dim requete As String requete = "SELECT StatPage.* FROM StatPage WHERE (id_StatSite = " & id_StatSite & ")" dr = LibData.AccesBD.GetReader(requete)
Do Until Not dr.Read id_StatPage(j) = dr("id_StatPage") (ici ça plante car mon tableau est déclaré en shared ) PageAnnee(j) = dr("PageAnnee") PageMois(j) = dr("PageMois") PageSemaine(j) = dr("PageSemaine") j += 1 Loop
End SubJ'appelle cette procédure depuis mon global.asax.vb
Imports LibStats.NamesStatistique .... stats1.Stats(toto) .... (Si je supprime les shared dans ma class) j'ai l'erreur suivante lors de l'appel de ma class : "Une référence à un membre non partagé requiert une référence d'objet."
Pouvez vous m'éclairer et m'indiquer une solution ? Thierry
|
|
vendredi 30 septembre 2005 à 22:57:24 |
Re : Class partagée
|
vendredi 30 septembre 2005 à 23:06:36 |
Re : Class partagée

coulis
|
Oui en fait elle est public (privé c'etait une erreur) et cela ne fonctionne pas non plus ?
Thierry
|
|
vendredi 30 septembre 2005 à 23:10:50 |
Re : Class partagée

tikrimi
|
Dans ce cas, essaye tout simplement de remplacer stats1.Stats(toto)
lorsque tu enlèves les Shared (toto je sais pas bien ce que c
mais bon...) par :
Dim voObj as new stats1()
voObj.Stats(toto) TiK [ Lien ] [ Lien ]
|
|
vendredi 30 septembre 2005 à 23:29:31 |
Re : Class partagée

coulis
|
Ok ça évolue mais j'ai encore une erreur
Dim voObj As New stats1
voObj.Stats(toto) (arguments trops nombreux pour public sub stats()) ?
Thierry
|
|
samedi 1 octobre 2005 à 07:48:06 |
Re : Class partagée
|
samedi 1 octobre 2005 à 08:21:50 |
Re : Class partagée

coulis
|
Ok voici le code
le fichier stats1.vb
Imports System.Web
Imports System.Data.SqlClient
Namespace NamesStatistique
Public Class Stats1
Public Shared Sub
Stats(ByVal RefConc As String, ByVal NomStat As String, ByVal
infocookie As Int16, ByVal CodeLang As String, ByVal navigt As String)
'Public Sub Stats(ByVal RefConc As String)
RecupDecalHor(RefConc)
IdClient(RefConc, NomStat)
Majdate()
Pays(CodeLang)
Semaine()
StatPage()
'StatPays()
'TableStats()
'STATSModif(infocookie, navigt)
End Sub
le sub qui pose un problème
'*** TRAITEMENTS TABLE "StatPage"
'Récupération des données de la semaine passée
Shared id_StatPage(), PageAnnee(), PageMois(), PageSemaine() As Integer
Shared j As Integer = 0
Shared m As Integer
Public Shared Sub StatPage()
Dim dr As SqlDataReader
Dim requete As String
requete = "SELECT StatPage.* FROM StatPage WHERE (id_StatSite = " &
id_StatSite & ")"
dr = LibData.AccesBD.GetReader(requete)
Do Until Not dr.Read
id_StatPage(j) = dr("id_StatPage") (ici ça plante car mon tableau est déclaré en shared )
PageAnnee(j) = dr("PageAnnee")
PageMois(j) = dr("PageMois")
PageSemaine(j) = dr("PageSemaine")
j += 1
Loop
dr.Close()
If j <> 0 Then
'TraitementSemaine1()
'TraitementMois1()
'TraitementAnnee1()
Else
End If
End Sub
Le global.asax
Imports System.Web
Imports System.Web.SessionState
Imports System.Data.SqlClient
Imports LibStats.NamesStatistique
Public Class Global
Inherits System.Web.HttpApplication
....
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
'Récupération du lieux de la concession par le renvois de domaine
'ex : http://www.auto-dole.fr@IDConcession=dole
Session("IDConcession") = Request.Params("IDConcession")
'Response.Write("IDConcession= " & Session("IDConcession"))
'Paramètres statistiques
Session("RefConc") = "a724"
Session("Site") = "auto-besancon.fr"
Session("NomStat") = "auto-besancon"
Session("EmailStat") = "contact@auto-besancon.fr"
Dim CodeLang, navigt As String
CodeLang = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
navigt = Request.ServerVariables("HTTP_USER_AGENT")
'Récupération du cookie "dernieracces"
Dim infocookie As Int16 = 0
Dim Cook As HttpCookie
Cook = Request.Cookies("dernieracces")
If Not Cook Is Nothing Then 'cookies existe
'Verification du passage dans la journée par la date
If DateValue(Cook.Value) = DateTime.Now Then
'le client est déja passé dans la journée
infocookie = 1
Else
End If
Else
infocookie = 0
End If
'traitement des statistisques Class LibStats.CStats1.Stats
Dim voObj As New stats1
'voObj.Stats(Session("RefConc"))
voObj.Stats(Session("RefConc"), Session("NomStat"), infocookie, CodeLang, navigt)
'stats1.Stats(Session("RefConc"), Session("NomStat"), infocookie, CodeLang, navigt)
'Mise à jour du cookie
Dim MC As New HttpCookie("dernieracces", DateTime.Now)
MC.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(MC)
End Sub
.....
Voici donc le code ...
Thierry
|
|
samedi 1 octobre 2005 à 09:54:43 |
Re : Class partagée

Nurgle
|
Salut,
Une petite question :
Quand tu dis "ici ça plante car mon tableau est déclaré en Shared", quel est le message d'erreur envoyé 
Et puis il y a un truc pas normal :
Je ne te vois nullepart dimensionner ton tableau (tu le déclare et tu y
ajoute tout de suite des valeurs : normalement ce genre de choses
déclenche une erreur  ).
tu devrais, juste avant le Do Until Not dr.Read, faire un :
Redim id_StatPage(un_nombre)
En mettant à la place de "un_nombre" le nombre d'enregistrements dans
ton SqlDataReader. Honte à moi, je ne me souviens plus quelle est la
propriété du SqlDataReader qui renvoi le nombre d'enregistrements... 
(je vais chercher...)
A+++  Nurgle
|
|
samedi 1 octobre 2005 à 11:04:59 |
Re : Class partagée

tikrimi
|
J'arrête de regarder le code en détail, la logique même de ta classe me pose problème.
Je ne comprends pas pourquoi tu tiens absolument à déclarer tes membres
de classe comme statique (id_StatPage(), PageAnnee(), PageMois(),
PageSemaine(),j,m) alors que tu passes ton temps à les modifier et
qu'ils ne sont en fait jamais partagés.
Dans ta classe telle qu'elle est actuellement, tu peux supprimer les
shared de partout (et pense à réinitialiser tes tableau à chaque
passage dans ta methode), logiquement ça doit marcher.
Par contre, l'utilisation de membres statique peut être envisagé, mais
pas comme tu le fais là. Commence par charger tes tableaux au démarrage
de l'application, et ensuite ajoute les informations supplémentaires au
démarrage de la nouvelle session (je dis bien ajoute et non écrase
tout).
Par contre ton idée m'intéresse, et je vais surement faire quelque chose dessus ce soir, donc si tu peux patienter un peu
TiK [ Lien ] [ Lien ]
|
|
samedi 1 octobre 2005 à 13:18:46 |
Re : Class partagée

jesusonline
|
Ca ne m'etonne pas que ca plante !!! J'aime pas les méthodes statiques,
mais en essayant d'aller recuperer ton tableau, ca ne m'etonnerais pas
qu'il aille t'en chercher un nouveau tout les jours !
Pourquoi veux tu faire tout ca en shared ? moi je ferais une classe
toute simple, et si tu veux pas instancier la classe dans le code (car
c'est chiant d'ecrire une ligne de plus ;)) tu fais un singleton et
puis voila :)
public class stats
public sub truc()
end sub
public sub toto()
end sub
public shared function getInstance() as stats
return new stats()
end function
end class
dans le code
stats.getInstance().toto()
et comme le dit Nurgle, faut faire un redim sur ton tableau sinon ca va
pas aimer. A ta place je mettrais un ArrayList c'est plus simple pour
ajouer des objets dedans (ou alors un List(of Integer) si tu es en
.net2)
Avec tout ca ca devrait etre bon :)
Cyril - MCP ASP.netWebmaster de : Hoshimi.CodeS-SourceS.fr
|
|
Cette discussion est classée dans : class, id, shared, dr, statpage
Répondre à ce message
Sujets en rapport avec ce message
Regroupement dans un tableau [ par fseb ]
Bonjour, Voila, je construit un tableau a la suite d'une requete.Dans mon tableau on trouve Id_doc, Titre doc, Date_publi, Destinataire.Pour un meme I
Question sur l'asp [ par seb ]
bonjour,J'ai une petite question sur l'asp en généralLorsque l'on travaille avec des variables globales stylesession("Id_Nom")Lorsque l'internaute env
Base prb simple mais pas si sur .... [ par Troyan ]
voici la requete qui marche pas et qui devrait me sauver la vie !!SELECT Table1.id, Table1.NomFROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id_t
requete SQL [ par Ben ]
Salut, j'ai un problème avec la requete que voiciRs.Open "Select * from netannu where id="&RefSite,ConnJe me demande ce qui clocheEt voici le message
ASP comment reccupere t on le parametre "id " ? [ par doob ]
Voila, j'ai un bt du genre :et je voudrai savoir comment reccupere t on le parametre "id " ?merci
Mot de passe crypté! [ par Paulo ]
Salut a tous!Je débute l'ASP et je fais un site dans lequel les utilisateurs doivent s'indentifier par mot de passe et ID. Ensuite, en navigant de pag
retour id-auto lors d' INSERT INTO [ par bnedust ]
bonjour,j'effectue un ordre INSERT INTO dans une page web.la clé primaire de la table concernée est du type numéro-auto (Acces2000).j'aurai voulu récu
ID aléatoire [ par SergeM ]
Bonjour, je cherche depuis trois jour :-( . je veut récupérer dans une base 10 ID aléatoire et que chaque ID soit différent c'est pour faire un quizz
Variables SESSION [ par gbpolo ]
Salut a tous,Je passe une variable en session dans mon global.asa au niveau du onStart() : Session.Contents.Item("SESSION_ID") = Fields("SESSION_ID
Requete sur 2 bases ?? [ par jcharles ]
J'ai 2 bases contenant 1 table chacune.Je desire réaliser une requete sur ces 2 tables.Le probleme c'est que je sais pas etablir 2 connexions en meme
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|