none
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 RRS feed

  • 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
    dimanche 5 juillet 2009 12:22

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.
    lundi 6 juillet 2009 12:02
  • 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".
    lundi 6 juillet 2009 07:25

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".
    lundi 6 juillet 2009 07:25
  • 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
    lundi 6 juillet 2009 10:06
  • 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.
    lundi 6 juillet 2009 10:12
  • 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
    lundi 6 juillet 2009 11:47
  • 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.
    lundi 6 juillet 2009 12:02
  • merci beaucoup c'est vraiment trés aimable
    je vais faire tout ça
    c'est vrai que c'est assez compliqué de devoir apprendre un langage c# et un logiciel et ado.net
    mais ça en vaut la peine
    je reviendrai car j'aurai surement des questions

    merci  

    lundi 6 juillet 2009 12:09