Meilleur auteur de réponses
Erreur_1_'SiteDeTest.ClassConnexion.affiche()' : tous les chemins de code ne retournent pas nécessairement une valeur_C:\Documents and Settings\Compaq_Propriétaire\Mes documents\Visual Studio 2008\Projects\SiteDeTest\SiteDeTest\ClassConnexion .cs_37_30_Si

Question
-
Bonjour,
J'ai un message d'erreur "Erreur 1 'SiteDeTest.ClassConnexion.affiche()' : tous les chemins de code ne retournent pas nécessairement une valeur C:\Documents and Settings\Compaq_Propriétaire\Mes documents\Visual Studio 2008\Projects\SiteDeTest\SiteDeTest\ClassConnexion .cs 37 30 SiteDeTest" et pourtant j'ai bien 2 return
Bref voici mon code de classe
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.OleDb; namespace SiteDeTest { public class ClassConnexion { private static OleDbConnection myAccessConn; public static string seconnecter() { OleDbConnection myAccessConn = new OleDbConnection(); myAccessConn.ConnectionString = ConfigurationManager.ConnectionStrings["oConnectionString"].ConnectionString; myAccessConn.Open(); return "Vous étés Connecté"; } public static string affiche() { string strAccessSelect = "SELECT * FROM Employé"; // Crée le groupe de données et y ajoute la table Employé : DataSet myDataSet = new DataSet(); OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand); myDataAdapter.Fill(myDataSet, "Employé"); myAccessConn.Close(); // Un groupe de données pouvant contenir plusieurs tables, // celles-ci sont toutes insérées dans un tableau : DataTableCollection dta = myDataSet.Tables; foreach (DataTable dtn in dta) { return dtn.ToString(); } DataRowCollection dra = myDataSet.Tables["Employé"].Rows; foreach (DataRow dr in dra) { return dr.ToString(); } } } }
et voici mon code default.aspx.cs
using System; using System.Collections; using System.Configuration; using System.Data; 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; namespace SiteDeTest { public partial class _Default :System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { } protected void Connexion(object sender, EventArgs e) { label1.Text = ClassConnexion.seconnecter(); label2.Text = ClassConnexion.affiche(); } } } et pour finir le code default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SiteDeTest._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Site de Test</title> </head> <body> <form id="form1" runat="server"> <asp:Button id="connecter" Text="Connecter" OnClick="Connexion" runat="server"/> <br /><br /> <asp:Label ID="label1" ForeColor="red" runat="server"/> <p> <asp:Label ID="label2" runat="server" ForeColor="Red" Text="Label2"></asp:Label> </p> </form> </body> </html>
quel est le probléme svp?
je suis un grand débutant en C#
le but du script est simplement de cliquer sur le bouton Connecter ,de se connecter à Acces et de retourner le contenu de la requete dans
label2
merci
Réponses
-
Je vais essayer d'être précis .. en récupèrant un autre post à moi que j'avais eu le temps de détailler.
Essai ça :
- créé une nouvelle page de test (ex: testGridView.aspx)
- en mode concepteur de vue, tu dois avoir une fenêtre nommée "Explorateur de serveurs" sinon tu peux l'afficher via "Affichage" ==> "Explorateur de serveurs". (ou "Explorateur de base de données" suivant ta version de Visual Studio)
- Dans cette fenêtre, en faisant un clic droit sur "Connexions de données", tu doit créer une connexion vers ta base de données.
- Une fois ta connexion établie, tu dois voir ta base de données et à l'intérieur tes tables.
- Il suffit maintenant de sélectionner la table que tu veux manipuler et la faire glisser sur ton formulaire web. (Ex: Employés)
- Le GridView et la DataSource correspondante sont automatiquement créés.
- Tu peux maintenant configurer to gridview et la datasource directement depuis le concepteur de vue et notament autoriser l'ajout de ligne, la suppression, modification, etc ...
Tu vas vite voir que tu gagne un temps fou avec cette technique.
Si tu veux un cours plus détaillé: http://msdn.microsoft.com/fr-fr/asp.net/bb412339.aspx
N'hesites pas à revenir si tu bloque à une étape ou si te veux te faire ré-expliquer une étape.- Proposé comme réponse Gabriel MongeonModerator lundi 6 juillet 2009 14:33
- Marqué comme réponse Marius Bugiulescu jeudi 20 août 2009 11:04
-
Il t'indique ça car ta methode "Affiche" ne retourne pas forcement de valeur.
// Un groupe de données pouvant contenir plusieurs tables, // celles-ci sont toutes insérées dans un tableau : DataTableCollection dta = myDataSet.Tables; foreach (DataTable dtn in dta) { return dtn.ToString(); } DataRowCollection dra = myDataSet.Tables["Employé"].Rows; foreach (DataRow dr in dra) { return dr.ToString(); }
Pour lui si il n'y a aucune table et aucune ligne, il n'executera pas de "return".
Ensuite, je pense que ton code a un souci de conception. Le mot clé "return" indique à une fonction que son travail est fini et qu'elle peut retourner un résultat. L'execution de cette fonction te retournera juste le nom de la 1ere table.
En résumé, le "return" étant executé qu'une seule fois, il est rare de le trouver dans des boucles comme le "for".- Marqué comme réponse Marius Bugiulescu jeudi 20 août 2009 11:04
Toutes les réponses
-
Il t'indique ça car ta methode "Affiche" ne retourne pas forcement de valeur.
// Un groupe de données pouvant contenir plusieurs tables, // celles-ci sont toutes insérées dans un tableau : DataTableCollection dta = myDataSet.Tables; foreach (DataTable dtn in dta) { return dtn.ToString(); } DataRowCollection dra = myDataSet.Tables["Employé"].Rows; foreach (DataRow dr in dra) { return dr.ToString(); }
Pour lui si il n'y a aucune table et aucune ligne, il n'executera pas de "return".
Ensuite, je pense que ton code a un souci de conception. Le mot clé "return" indique à une fonction que son travail est fini et qu'elle peut retourner un résultat. L'execution de cette fonction te retournera juste le nom de la 1ere table.
En résumé, le "return" étant executé qu'une seule fois, il est rare de le trouver dans des boucles comme le "for".- Marqué comme réponse Marius Bugiulescu jeudi 20 août 2009 11:04
-
Merci,en plus j'ai commis la même erreur en php return est comme un exit
Mais comment retourner un simple tableau ?
si je retourne un tableau ma méthode devient
public static montab[] affiche()
puisqu'elle retourne un tableau
j'ai beaucoup de mal avec les types et les conversions
peut on aussi envoyer un tableau de string?
et à ce niveau là
label2.Text = ClassConnexion.affiche();
puis-je je ecrire un code genre
my tab[] string=ClassConnexion.affiche();
faire un foreach in
et dans le foreach
ecrire label2.Text = mes données parcourues par la boucle
Merci -
Tout depend de ce que tu veux afficher.
Si tu veux afficher un seul utilisateur, tu peux utiliser une méthode qui retourne un objet avec les informations de ton utilisateur.
Si tu veux afficher une liste d'utilisateur, je te conseille de créer une methode qui retourne une datatable et d'afficher les données dans un controle GridView. -
Merci.En fait ,je veux afficher une liste d'employé donc un controle GridView me semble indiqué
Par contre ,comment afficher un groupe de donnée avec vs 2008 en mode design?
j'ai un livre traitant de la question mais sur vs 2003
normalement aprés avoir créer une connexion sur une db on a deux petit onglet avec oleDBconnectionet oleDBDataAdaptater et on clic
l'interet pour moi et de créer en mode design et de récupérer un code fonctionel pour apprendre
or je trouve nul par ces informations sur vs 2008
merci -
Je vais essayer d'être précis .. en récupèrant un autre post à moi que j'avais eu le temps de détailler.
Essai ça :
- créé une nouvelle page de test (ex: testGridView.aspx)
- en mode concepteur de vue, tu dois avoir une fenêtre nommée "Explorateur de serveurs" sinon tu peux l'afficher via "Affichage" ==> "Explorateur de serveurs". (ou "Explorateur de base de données" suivant ta version de Visual Studio)
- Dans cette fenêtre, en faisant un clic droit sur "Connexions de données", tu doit créer une connexion vers ta base de données.
- Une fois ta connexion établie, tu dois voir ta base de données et à l'intérieur tes tables.
- Il suffit maintenant de sélectionner la table que tu veux manipuler et la faire glisser sur ton formulaire web. (Ex: Employés)
- Le GridView et la DataSource correspondante sont automatiquement créés.
- Tu peux maintenant configurer to gridview et la datasource directement depuis le concepteur de vue et notament autoriser l'ajout de ligne, la suppression, modification, etc ...
Tu vas vite voir que tu gagne un temps fou avec cette technique.
Si tu veux un cours plus détaillé: http://msdn.microsoft.com/fr-fr/asp.net/bb412339.aspx
N'hesites pas à revenir si tu bloque à une étape ou si te veux te faire ré-expliquer une étape.- Proposé comme réponse Gabriel MongeonModerator lundi 6 juillet 2009 14:33
- Marqué comme réponse Marius Bugiulescu jeudi 20 août 2009 11:04
-