begin process at 2012 05 28 02:59:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

ASP.net

 > 

Pb de recopie d'objet, incompréhensible ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb de recopie d'objet, incompréhensible ...

jeudi 28 juillet 2005 à 09:05:34 | Pb de recopie d'objet, incompréhensible ...

julien31

Bonjour,

Je programme un site Web en asp.net.
J'ai une classe Article.vb. Lorsque je fais un appel comme ci-dessous, l'article est chargé normalement :
Dim 1er_article As Article = New Article(idArticle)

Le problème est que si je déclare un second article différent, il se recopie automatiquement dans le premier article
Dim 2nd_article As Article = New Article(autre_idArticle) // 2nd article est recopié ds 1er article

Si vous avez une idée...
Merci d'avance

jeudi 28 juillet 2005 à 14:09:08 | Re : Pb de recopie d'objet, incompréhensible ...

Nurgle

Membre Club Administrateur CodeS-SourceS
comment ça "il se recopie" ?

Normalement, tu crée une instance de la classe Article que tu nommes "1er_article", puis tu peux créer une autre instance "2nd_article".
Si tu change une propriété d'un des objet, ça ne change pas celle de l'autre !!

En fait je vois pas ce que tu veux dire par "il se recopie" ?


Nurgle

Il est plus aisé d'être sage pour les autres que pour soi-même !
jeudi 28 juillet 2005 à 14:17:34 | Re : Pb de recopie d'objet, incompréhensible ...

julien31

Merci d'avoir répondu !

Il se recopie veut dire : quand j'instancie "2nd_article" il est recopié dans "1er_article".

On dirait qu'il fait 1er_article = 2nd_article

Ma classe article est simple pourtant ...

Voici le code si ça peut t'aider :

Namespace eFitness

Public Class Article

Inherits System.ComponentModel.Component

Public Shared idArticle, fk_fournisseur, fk_generique As Integer

Public Shared nom, descriptif_court, descriptif_long, livraison, garantie As String

Public Shared ref, photo1, photo2, descSuc, descriptif, param1, param2 As String

Public Shared pvHT As Decimal

Public Shared paHT As Double

Public Shared tva As Double

Public Shared remise As Double

Public Shared stock_limite As Integer

#Region " Code généré par le Concepteur de composants "

Public Sub New(ByVal Container As System.ComponentModel.IContainer, ByVal id_article As Integer)

MyClass.New(id_article)

'Requis pour la prise en charge du Concepteur de composition de classes Windows.Forms

Container.Add(Me)

End Sub

Public Sub New(ByVal id_article As Integer)

MyBase.New()

'Cet appel est requis par le Concepteur de composants.

InitializeComponent()

'Ajoutez une initialisation de l'article après l'appel InitializeComponent()

Dim myConnection As New Data.SqlClient.SqlConnection(getConnString)

Dim sql As String = "Select * From article Where id_article=" & id_article

Dim myCommand As New Data.SqlClient.SqlCommand(sql, myConnection)

myConnection.Open()

Dim myReader As Data.SqlClient.SqlDataReader

myReader = myCommand.ExecuteReader()

If myReader.Read() Then

nom = myReader.GetString(2)

idArticle = id_article

ref = myReader.GetString(1)

nom = myReader.GetString(2)

If Not myReader.IsDBNull(8) Then descSuc = myReader.GetString(8) Else descSuc = ""

If Not myReader.IsDBNull(9) Then descriptif = myReader.GetString(9) Else descriptif = ""

fk_fournisseur = myReader.GetInt32(4)

If Not myReader.IsDBNull(5) Then fk_generique = myReader.GetInt32(5) Else fk_generique = 0

If Not myReader.IsDBNull(6) Then param1 = myReader.GetValue(6) Else param1 = ""

If Not myReader.IsDBNull(7) Then param2 = myReader.GetValue(7) Else param2 = ""

If Not myReader.IsDBNull(10) Then photo1 = myReader.GetString(10) Else photo1 = "Aucune"

If Not myReader.IsDBNull(11) Then photo2 = myReader.GetValue(11) Else photo2 = "Aucune"

If Not myReader.IsDBNull(12) Then paHT = myReader.GetDouble(12) Else paHT = 0

If Not myReader.IsDBNull(13) Then pvHT = myReader.GetValue(13) Else pvHT = 0

If Not myReader.IsDBNull(14) Then tva = myReader.GetValue(14) Else tva = 0

If Not myReader.IsDBNull(15) Then remise = myReader.GetValue(15) Else remise = ""

If Not myReader.IsDBNull(18) Then livraison = myReader.GetValue(18) Else livraison = ""

If Not myReader.IsDBNull(19) Then garantie = myReader.GetValue(19) Else garantie = ""

If Not myReader.IsDBNull(20) Then stock_limite = myReader.GetValue(20) Else stock_limite = ""

End If

myConnection.Close()

End Sub

'La méthode substituée Dispose du composant pour nettoyer la liste des composants.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub

'Requis par le Concepteur de composants

Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur de composants

'Elle peut être modifiée à l'aide du Concepteur de composants.

'Ne la modifiez pas en utilisant l'éditeur de code.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

components = New System.ComponentModel.Container

End Sub

#End Region

'------------------------DEBUT DES ACCESSEURS-------------------------

'retourne le connectionString utilisé par les autres méthodes partagées

Public Shared Function getConnString() As String

Dim retour As String

retour = ConfigurationSettings.AppSettings("gecoserv")

Return retour

End Function

'retourne l'id de l'article

Public Shared Function getNumArticle() As Integer

Return idArticle

End Function

'retourne le nom de l'article

Public Shared Function getNom() As String

Return nom

End Function

'retourne vrai si l'article est en stock milite

Public Shared Function StockLimite() As Boolean

If stock_limite = 1 Then

Return True

Else

Return False

End If

End Function

'retourne l'id de l'article

Public Shared Function getDescriptifCourt() As String

Return descSuc

End Function

'retourne l'id de l'article

Public Shared Function getDescriptifLong() As String

Return descriptif

End Function

'retourne un Dataset représentant la table entière

Public Shared Function getRef() As String

Return ref

End Function

'retourne le nom de l'article

Public Shared Function getLivraison() As String

Return livraison

End Function

'retourne le nom de l'article

Public Shared Function getGarantie() As String

Return garantie

End Function

'retourne un Dataset représentant la table entière

Public Shared Function getPrixVenteHT() As String

Return pvHT

End Function

'retourne un Dataset représentant la table entière

Public Shared Function getPrixAchatHT() As String

Return paHT

End Function

'retourne la tva

Public Shared Function getTva() As String

Return tva

End Function

Public Shared Function getRemise() As String

Return remise

End Function

Public Shared Function getGrandePhoto() As String

Return photo2

End Function

Public Shared Function getPetitePhoto() As String

Return photo1

End Function

'retourne l'ancien prix du produit sans la remise...

Public Shared Function getPrixTTCSansRemise() As String

Return FormatNumber(Article.getPrixVenteHT() * (1 + (Article.getTva() / 1000)), 2)

End Function

'retourne le prix du produit TTC avec remise si necessaire

Public Shared Function getPrixVenteTTC() As String

Dim remise As Integer

Dim prixTTC As Decimal

'on regarde si c une remise...

If Convert.ToInt32(Article.getRemise()) > 0 Then

'on calcule le nouveau prix

prixTTC = FormatNumber(getPrixTTCSansRemise() * (1 - (getRemise() / 100)), 2)

Else

prixTTC = FormatNumber(getPrixVenteHT() * (1 + (getTva() / 1000)), 2)

End If

Return prixTTC

End Function

'------------------------FIN DES ACCESSEURS-------------------------

'redéfinition de l'opérateur =

Public Overloads Shared Function equals(ByVal a As Article) As Boolean

If idArticle = a.getNumArticle Then

Return True

Else

Return False

End If

End Function

Public Shared Function getOptionRecommande() As DataSet

' on recherche les options d'un produit

Dim SQL As String = "Select * From article Where id_article=" & idArticle

'"SELECT id_article, nom, descSuc from Article INNER JOIN Article_option ON article.id_article = Article_option.fk_option WHERE Article_option.fk_article=" & idArticle & " AND valide=1"

Dim oDA As New Data.SqlClient.SqlDataAdapter(SQL, getConnString)

Dim oDS As New DataSet

oDA.Fill(oDS)

oDA.Dispose()

Return oDS

End Function

Public Shared Function getComplementaire() As DataSet

' on recherche les options d'un produit

Dim SQL As String = "SELECT fk_complement from Article INNER JOIN article_complement ON id_article = fk_article WHERE id_article=" & idArticle & " AND valide=1"

Dim oDA As New Data.SqlClient.SqlDataAdapter(SQL, getConnString)

Dim oDS As New DataSet

oDA.Fill(oDS)

oDA.Dispose()

Return oDS

End Function

Public Shared Function getGenerique() As DataSet

' on recherche les options d'un produit

Dim SQL As String = "select fk_generique, param1, param2 from article where id_article=" & idArticle & " AND valide=1"

Dim oDA As New Data.SqlClient.SqlDataAdapter(SQL, getConnString)

Dim oDS As New DataSet

oDA.Fill(oDS)

oDA.Dispose()

Return oDS

End Function

Public Shared Function getParametres() As DataSet

' on recherche les options d'un produit

Dim SQL As String = "select id_article, param1, param2 from article where fk_generique=" & idArticle & " AND valide=1"

Dim oDA As New Data.SqlClient.SqlDataAdapter(SQL, getConnString)

Dim oDS As New DataSet

oDA.Fill(oDS)

oDA.Dispose()

Return oDS

End Function

Public Shared Sub setArticle(ByVal id_article As Integer)

Dim myConnection As New Data.SqlClient.SqlConnection(getConnString)

Dim sql As String = "Select * From article Where id_article=" & id_article

Dim myCommand As New Data.SqlClient.SqlCommand(sql, myConnection)

myConnection.Open()

Dim myReader As Data.SqlClient.SqlDataReader

myReader = myCommand.ExecuteReader()

If myReader.Read() Then

nom = myReader.GetString(2)

idArticle = id_article

ref = myReader.GetString(1)

nom = myReader.GetString(2)

If Not myReader.IsDBNull(8) Then descSuc = myReader.GetString(8) Else descSuc = ""

If Not myReader.IsDBNull(9) Then descriptif = myReader.GetString(9) Else descriptif = ""

fk_fournisseur = myReader.GetInt32(4)

If Not myReader.IsDBNull(5) Then fk_generique = myReader.GetInt32(5) Else fk_generique = 0

If Not myReader.IsDBNull(6) Then param1 = myReader.GetValue(6) Else param1 = ""

If Not myReader.IsDBNull(7) Then param2 = myReader.GetValue(7) Else param2 = ""

If Not myReader.IsDBNull(10) Then photo1 = myReader.GetString(10) Else photo1 = "Aucune"

If Not myReader.IsDBNull(11) Then photo2 = myReader.GetValue(11) Else photo2 = "Aucune"

If Not myReader.IsDBNull(12) Then paHT = myReader.GetDouble(12) Else paHT = 0

If Not myReader.IsDBNull(13) Then pvHT = myReader.GetValue(13) Else pvHT = 0

If Not myReader.IsDBNull(14) Then tva = myReader.GetValue(14) Else tva = 0

If Not myReader.IsDBNull(15) Then remise = myReader.GetValue(15) Else remise = ""

If Not myReader.IsDBNull(18) Then livraison = myReader.GetValue(18) Else livraison = ""

If Not myReader.IsDBNull(19) Then garantie = myReader.GetValue(19) Else garantie = ""

If Not myReader.IsDBNull(20) Then stock_limite = myReader.GetValue(20) Else stock_limite = ""

End If

myConnection.Close()

End Sub

End Class

End Namespace

jeudi 28 juillet 2005 à 14:24:56 | Re : Pb de recopie d'objet, incompréhensible ...

Nurgle

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
bon...je viens de comprendre le problème : toutes tes variables et/ou méthodes sont "Shared" !!
Je te rapelle que "Shared" veut dire "static" !, c'est à dire que ces variables et/ou fonctions ne sont pas propre à chaque objet que tu instancie !!
(il n'y en a qu'une pour toutes les instances de la classe, donc si une instance modifie une variable, l'autre aussi verra sa variable modifié, vu que c'est la même variable !)

Je sais pas si j'ai été très clair, et je n'ai pas parcouru tout ton code, mais tu devrais enlever tous ces "Shared" ! ça devrait éviter ce genre de problème.

"Shared" sert à utiliser une méthode et/ou variable sans instance de la classe : tu n'en n'a pas besoin ici !


Nurgle

Il est plus aisé d'être sage pour les autres que pour soi-même !


Cette discussion est classée dans : pb, objet, recopie, article, incompréhensible


Répondre à ce message

Sujets en rapport avec ce message

Pb avec objet session -Session.Contents.Remove [ par Fabrice ] J ai un message d erreur Windows Vbscriptquand je cherche a effacer une variable Session.Contents.Remove("var")Cela ne fontionne pas , j ai une erreur PB SMARTUPLOAD ACTIVEX [ par tirane ] ON a un message d'erreur des la declaration d'un objet smartupload :"Un composant ActiveX ne peut pas créer un objet. /multi_client_admin/soc_exec_SA. :: Creation dynamique d'objet et de propriétés :: [ par philamiot ] Bonjour, J'ai un probleme avec VBSCRIPT et ASP. j'aimerais pouvoir créer des objets et leurs propriétés de facon dynamique :J'ai une class "article" ( Pb AspSmartUpload [ par ayor1107 ] Bonjour, j'ai un pb d'utilisation avec le composant smartuploadje fais l'install comme c'est indiqué dans la doc, mais quand je vaut tester l'upload d p'tit pb [ par benj71 ] Voila je ne suis pas tres doué en asp et j'ai un petit pb. Pour mon site marchand, j'affiche ma bdd avec ref, article, prix, ... et qd je clique sur p p'tit pb [ par benj71 ] Voila je ne suis pas tres doué en asp et j'ai un petit pb. Pour mon site marchand, j'affiche ma bdd avec ref, article, prix, ... et qd je clique sur p Pb Objet Com Avec ASP.net [ par zakfunk ] bonjour,j'essai d'utiliser un objet com avec mon application Asp.net mais ça ne marche pas il n'y a même pas de message d'erreur (ça rame !!!)par cont pb accès fichier sous ASP [ par hikker ] bonjour,je voudrais ecrire dans un fichier texte, en asp mais j'ai le pb suivant : le controle de la présence d'un fichier marche (avec l'objet server Pb avec le composant ASPEXEC [ par cracozore ] Bonjour à tous,J'ai un problème quand je fait apel au composant AspExec, j'obtiens ce message d'erreur :"Type d'erreur :Objet Server, ASP 0178 (0x8007 Pb sur l'article 119 de Nix sur UPLOAD !!! [ par barzy ] j'ai installé les fichiers sur IIS5 et lorsque j'envoie le formulaire, ça mouline encore et encore.Est-ce quelqu'un à eu le pb car je ne vois pas d'ou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales