Rechercher : dans
Par :

Problème portée de variables C#

Dernière réponse le 6 jui 2009 à 15:39:54 Chaboow, le 6 jui 2009 à 11:15:18 
 Signaler ce message aux modérateurs

Bonjour,

Je suis actuellement en stage sur un projet C# objet. Je découvre le monde de l'objet et je bloque sur un problème de portée de variables ...
Voici mon script :

protected void Button3_Click(object sender, EventArgs e)
{
ArrayList vList = AsrCall.connect();

ArrayList vAccountCallAsr = new ArrayList();
string vCopy = null;

int i = 0;
string vType;
int nbTotalsuccess = 0;
int nbTotalfail = 0;
int vAsrTotalCalculated;


for (i = 0; i < vList.Count; i++)
{
AsrCall vAsrCall = (AsrCall)(vList[i]);

vType = vAsrCall.Type;

if (vType == null)
{
nbTotalsuccess++;
}
else
{
nbTotalfail++;
}

vAsrTotalCalculated = nbTotalsuccess / (nbTotalsuccess + nbTotalfail);

AcpAsr vAcpAsr;

if ((vCopy == null) || (vAsrCall.Prefix != vCopy))
{
AcpAsr vAcpAsr = new AcpAsr(vAsrCall.Prefix, vAsrCall.Date, vAsrCall.Zone);
vList.Add(vAcpAsr);
}

AcPrefix vAcPrefix = new AcPrefix(vAsrCall.Serial, vAsrCall.Date, vAsrCall.TimeC,
vAsrCall.Cause, vAsrCall.Type, vAsrCall.Cli,
vAsrCall.Destination, vAsrCall.Carrier, vAsrCall.Prefix,
vAsrCall.Creneau, vAsrCall.CreneauC, vAsrCall.CarrierC);

vAcpAsr = vAcpAsr;

vAcpAsr.addCallAsr(vAcPrefix);

vCopy = vAsrCall.Prefix;
}
}

Et voici les scripts des classes utilisées :

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Data.SqlClient;
using System.Data.SqlTypes;
using BooProd.Core;
using System.Collections;

/// <summary>
/// Description résumée de AsrCall
/// </summary>
public class AsrCall
{

private SqlInt32 _Serial;
public int Serial
{
get { return (_Serial.IsNull) ? Int32.MinValue : _Serial.Value; }
}

private SqlDateTime _Date = new SqlDateTime();
public DateTime Date
{
get { return (_Date.IsNull) ? DateTime.MinValue : _Date.Value; }
}

private SqlString _Prefix;
public string Prefix
{
get { return (_Prefix.IsNull)?null:_Prefix.Value; }
}

private SqlInt16 _Cause;
public int Cause
{
get { return (_Cause.IsNull) ? Int16.MinValue : _Cause.Value; }
}

private SqlString _Type;
public string Type
{
get { return (_Type.IsNull) ? null : _Type.Value; }
}

private SqlString _CreneauC;
public string CreneauC
{
get { return (_CreneauC.IsNull) ? null : _CreneauC.Value; }
}

private SqlInt32 _Carrier;
public int Carrier
{
get { return (_Carrier.IsNull) ? Int32.MinValue : _Carrier.Value; }
}

private SqlString _CarrierC;
public string CarrierC
{
get { return (_CarrierC.IsNull) ? null : _CarrierC.Value; }
}

private SqlInt32 _TimeC;
public int TimeC
{
get { return (_TimeC.IsNull) ? Int32.MinValue : _TimeC.Value; }
}

private SqlString _Cli;
public string Cli
{
get { return (_Cli.IsNull) ? null : _Cli.Value; }
}

private SqlString _Destination;
public string Destination
{
get { return (_Destination.IsNull) ? null : _Destination.Value; }
}

private SqlString _Creneau;
public string Creneau
{
get { return (_Creneau.IsNull) ? null : _Creneau.Value; }
}

private SqlString _Zone;
public string Zone
{
get { return (_Zone.IsNull) ? null : _Zone.Value; }
}


public static ArrayList connect()
{
QConnection vQConnection = new QConnection(ExecSplan.DB_ASR);
vQConnection.addVarChar("@pPrefix", "00212");
vQConnection.addVarChar("@pCli", null);
vQConnection.addInt("@pCarrier", 4);
vQConnection.addVarChar("@pCompte", null);
vQConnection.addTinyInt("@pSort", 3);
vQConnection.addTinyInt("@pCallType", 2);
vQConnection.addTinyInt("@pModeTime", 5);
vQConnection.addVarChar("@pTypeSem", "2");
vQConnection.addVarChar("@pTypeHeure", "1");
vQConnection.addVarChar("@pType", "3");
vQConnection.addDateTime("@pBeginDate", new DateTime(2009, 06, 22, 10, 40, 0));
vQConnection.addDateTime("@pEndDate", new DateTime(2009, 06, 22, 13, 20, 0));
SqlDataReader vReader = vQConnection.execQuerySP("[ASR_billing_call]");

// On va lire les résultats de la procédure stockée
// et les mettre dans un tableau


AsrCall vAsrCall= new AsrCall();
ArrayList vArrayList = new ArrayList();
while (vAsrCall.read(vReader))
{
vArrayList.Add(vAsrCall);
vAsrCall= new AsrCall();
}

return vArrayList;
}

private bool read(SqlDataReader pReader)
{
if (pReader == null || !pReader.Read())
return false;
_Serial = pReader.GetSqlInt32(pReader.GetOrdinal("serialNumber"));
_Date = pReader.GetSqlDateTime(pReader.GetOrdinal("timedate"));
_Prefix = pReader.GetSqlString(pReader.GetOrdinal("prefix"));
_Cause = pReader.GetSqlInt16(pReader.GetOrdinal("clear_cause"));
_Type = pReader.GetSqlString(pReader.GetOrdinal("type"));
_CreneauC = pReader.GetSqlString(pReader.GetOrdinal("creneaucolor"));
_Carrier = pReader.GetSqlInt32(pReader.GetOrdinal("carrier"));
_CarrierC = pReader.GetSqlString(pReader.GetOrdinal("carrierColor"));
_TimeC = pReader.GetSqlInt32(pReader.GetOrdinal("timeCall"));
_Cli = pReader.GetSqlString(pReader.GetOrdinal("cli"));
_Destination = pReader.GetSqlString(pReader.GetOrdinal("destination"));
_Creneau = pReader.GetSqlString(pReader.GetOrdinal("creneau"));
_Zone = pReader.GetSqlString(pReader.GetOrdinal("zone"));
return true;

}


public AsrCall()
{
//
// TODO : ajoutez ici la logique du constructeur
//
}
}

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Collections;

/// <summary>
/// Description résumée de AcpAsr
/// </summary>
public class AcpAsr
{

private string _Prefix;
public string Prefix
{
get { return _Prefix; }
}

private DateTime _DateTime;
public DateTime DateTime
{
get { return _DateTime; }
}

private string _Zone;
public string Zone
{
get { return _Zone; }
}



public AcpAsr(string pPrefix, DateTime pDateTime, string pZone)
{
//
// TODO : ajoutez ici la logique du constructeur
//
}

}

Mon problème est le suivant :

"Erreur 2 Une variable locale nommée 'vAcpAsr' ne peut pas être déclarée dans cette portée, car elle modifierait la signification de 'vAcpAsr', déjà utilisée dans une portée 'parent ou en cours' pour désigner autre chose C:\Users\Vincent\Desktop\Boulot BTS\Stage\Maquette_Appli\Default.aspx.cs 161 24 C:\...\Maquette_Appli\"

"Erreur 4 'AcpAsr' ne contient pas une définition pour 'addCallAsr' et aucune méthode d'extension 'addCallAsr' acceptant un premier argument de type 'AcpAsr' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) C:\Users\Vincent\Desktop\Boulot BTS\Stage\Maquette_Appli\Default.aspx.cs 172 21 C:\...\Maquette_Appli\"

Merci d'avance

Configuration: Windows Vista
Firefox 3.0.11

Meilleures réponses pour « Problème portée de variables C# » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Les variables en C++ Voir Les variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
[WiFi] Réseau sans fil et sécurité VoirDéfinition Infrastructure réseau Sécurité Définition Le Wifi est une technologie permettant de créer des réseaux informatiques sans fil (Wireless). Il s'agit d'une norme de l'IEEE baptisée 802.11. Sa portée varie d'un appareil à...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

zoubiock, le 6 jui 2009 à 15:35:39

Déja, ta première erreur, tu déclares deux fois la même variable:
AcpAsr vAcpAsr;

if ((vCopy == null) || (vAsrCall.Prefix != vCopy))
{
AcpAsr vAcpAsr = new AcpAsr(vAsrCall.Prefix, vAsrCall.Date, vAsrCall.Zone);
vList.Add(vAcpAsr);
}


Il faut que tu procèdes comme ça:

AcpAsr vAcpAsr;

if ((vCopy == null) || (vAsrCall.Prefix != vCopy))
{
vAcpAsr = new AcpAsr(vAsrCall.Prefix, vAsrCall.Date, vAsrCall.Zone);
vList.Add(vAcpAsr);
}

Répondre à zoubiock

2

 zoubiock, le 6 jui 2009 à 15:39:54

Seconde erreur, ta classe AcpAsr ne contient pas de méthode nomée addCallAsr, regardes:
/// <summary>
/// Description résumée de AcpAsr
/// </summary>
public class AcpAsr
{

private string _Prefix;
public string Prefix
{
get { return _Prefix; }
}

private DateTime _DateTime;
public DateTime DateTime
{
get { return _DateTime; }
}

private string _Zone;
public string Zone
{
get { return _Zone; }
}



public AcpAsr(string pPrefix, DateTime pDateTime, string pZone)
{
//
// TODO : ajoutez ici la logique du constructeur
//
}

}

Répondre à zoubiock
Collection CommentÇaMarche.net