Problème portée de variables C#

Fermé
Chaboow - 6 juil. 2009 à 11:15
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 - 6 juil. 2009 à 15:39
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

2 réponses

zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
6 juil. 2009 à 15:35
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);
}
0
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
6 juil. 2009 à 15:39
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
//
}

}
0