none
requete sql server

    Question

  • Bonjour

    je viens de débuter en c# j'ai trouvé plusieurs difficulté, donc je me suis tourné vers vous, si vous pouvez m'aider. donc j'ai deux questions:

     j'ai récupérer des données d'une table avec une bouton 1  et sa marche bien, maintenant je veux modifier ces données si besoin et je veux faire un Update sur la table avec une deuxième bouton: voila ma requête:

         public void button2_Click(object sender, EventArgs e)
          
            
            {
                            try
                {
                   
                }
                     
                finally
                {
                    SqlDataReader rs;
                    SqlCommand komme = new System.Data.SqlClient.SqlCommand("SELECT * FROM Client where code_client='" + code_client.Text + "' ;", ConnectBase.getinstance().Connection());
                    rs = komme.ExecuteReader();

                    if (rs.Read() == true)
                    {
                       code_client.Text = rs["code_client"].ToString();
                        statut.Text = rs["statut"].ToString();
                        code_postale.Text = rs["code_postale"].ToString();
                        pays.Text = rs["pays"].ToString();
                        fax.Text = rs["fax"].ToString();
                        ville.Text = rs["ville"].ToString();
                        tel.Text = rs["tel"].ToString();
                        adresse.Text = rs["adresse"].ToString();
                        nom_derigent.Text = rs["nom_derigent"].ToString();
                        titre_derigent.Text = rs["titre_derigent"].ToString();
                        email_derigent.Text = rs["email_derigent"].ToString();
                        site_internet.Text = rs["site_internet"].ToString();
                        secteur_activite.Text = rs["secteur_activite"].ToString();
                        exercice.Text = rs["exercice"].ToString();
                        activite.Text = rs["activite"].ToString();
                        nbre_salarie.Text = rs["nbre_salarie"].ToString();
                        production_annuelle.Text = rs["production_annuelle"].ToString();
                        chiffre_affaire.Text = rs["chiffre_affaire"].ToString();
                    }
                    rs.Close();
                }
                
            }
                    
             private void button1_Click(object sender, EventArgs e)
            {
                                           
                        
      string requete = "insert into Client (code_client, tatut,adresse,....................) values(@code_client, @statut, @adresse,...........................)";
     
            
      SqlCommand cmd = new SqlCommand(requete, ConnectBase.getinstance().Connection());

      cmd.ExecuteNonQuery();
      cmd.Dispose();
    }

    Question2:comment je peux récupérer une variable d'une formX vers une autre form Y :sachant que j'ai instancié form x dans Y et j'arrive pas a accéder a mon variable.

    je vous remerci beaucoup

    Wednesday, July 11, 2012 11:01 AM

Answers

  • Bonjour,

    Voilà qui est beaucoup plus clair.
    Dans ce cas, vous devez "propager" la référence à votre fenêtre "connexion" dans les fenêtres.

    Par exemple, dans votre fenêtre "presentation_entreprise", vous devez appeller la fenêtre "activité_entreprise" comme ceci :

    public partial class presentation_entreprise : Form { private connexion fenetreConnexion; public presentation_entreprise(connexion fenetreConnexion) { this.fenetreConnexion = fenetreConnexion; InitializeComponent(); }
    public void afficher_Click(object sender, EventArgs e)
    {
       activité_entreprise p;
       p
    = new activité_entreprise(this.fenetreConnexion);
       p
    .ShowDialog();
    }

    }

    Est-ce que cela répond à votre problème ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marked as answer by leoni_007 Thursday, July 26, 2012 7:02 AM
    Wednesday, July 25, 2012 10:21 PM

All replies

  • Bonjour,

    Il faut faire de votre variable une variable de classe (membre) de FormX :

    public <votre type> MaVariable
    {
       get;
       set;
    }


    En suite vous y accéder dans FormY comme suivant :

    <InstanceFormX>.MaVarible

    http://msdn.microsoft.com/fr-fr/library/w86s7x04.aspx

    Bien cordialement. 


    Wednesday, July 11, 2012 12:07 PM
  • Bonjour,

    Il faudrait mieux utiliser une procédure stockée pour faire votre INSERT , mais c'est plutot du domaine d'un des forums concernant SQL Server. Le cas échéant , un modérateur pourrait transférer votre fil dans ce forum.

    Il y a une chose qui me chagrine dans votre code : j'ai comme l'impression que exercice, nbre_salarie,production_annuelle, et chiffre_affaire ont des valeurs numériques. Il faudrait être sûr que que vous transmettiez des données ayant des types compatibles avec ceux de votre table. Il serait absurde d'avoir défini @chiffre_affaire comme du string alors que dans la table ce soit défini comme du Decimal par exemple.

    Je vous conseillerai de regarder http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqldataadapter(VS.90).aspx

    SqlDataAdapter me semble meilleur , plus simple et plus fiable à utiliser que SqlDataReader. A regarder très attentivement aussi les 2 liens dans la partie Autres ressources.

    A voir aussi http://msdn.microsoft.com/fr-fr/library/system.data.datatable_members(VS.90).aspx et sutout la méthode AcceptChanges de DataTable http://msdn.microsoft.com/fr-fr/library/system.data.datatable.acceptchanges(VS.90).aspx qui pourrait vous simplifier un INSERT ou surtout un Update

    Bonne journée


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.

    Saturday, July 14, 2012 10:11 PM
  • bonjour

    merci pour votre réponse

    enfin j'arrive a récupérer tous mes donnée et sa fonctionne très bien! c'est juste si par exemple je vais modifier une valeur comment je peux faire Update sur ma table  avec les valeur modifié

    merci

    2 comment je peux appeler une méthode ou une variable dans load d'autre form sachant que j'ai instancié ma form qui contient la méthode ou la variable mais sa marche pas !merci

    Sunday, July 15, 2012 10:40 AM
  • Bonjour,

    Il faut que votre méthode ou votre variable soit publique (public).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Proposed as answer by houssam01 Thursday, July 19, 2012 2:36 PM
    Sunday, July 15, 2012 10:28 PM
  • Bonjour

    je suis bloqué si quelqu’un peut m'aider c'est urgent merci d'avance

    j'ai une form qui contient des case a coucher et un tableau contient le résultat de requête.

    j'ai besoin de ces informations plu tard dans mon application pour réutiliser les résultat de requête et de verrouiller quelque champ dans  une autre form suivant les cases couché dans la première form

    merci beaucoup

    Monday, July 23, 2012 10:38 AM
  • Bonjour,

    Comme nous vous l'avons dis précédemment, il faut que votre tableau soit dans une variable ou une propriété "public" pour que vous puissiez y accéder depuis une autre classe.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    Monday, July 23, 2012 12:06 PM
  • bonjour

    oui il sont public mis comment je fait appel voila le code de deux forms , je veux recupère la liste de première form dans load de dexuième form

    première form

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
            
    
    
    namespace test
    {
        public partial class connexion : Form
     
        {
           
            public connexion()
            {
                InitializeComponent();
            }
    
                   public void boutton1_Click(object sender, EventArgs e)
            {
                
                if (login.Text != "" && password.Text != "")
                {
     /*********************************************************************************************/
                    //requête de vérification de mot de passe
     /*********************************************************************************************/
                        System.Data.SqlClient.SqlDataReader rs;
                        System.Data.SqlClient.SqlCommand komme = new System.Data.SqlClient.SqlCommand("SELECT * FROM Utilisateur where login='" + login.Text + "' and password='" + password.Text + "';", ConnectBase.getinstance().Connection());
                        rs = komme.ExecuteReader();
                        //where login='"+log.Text+"' and pwd='"+pwd.Text+"'
                        if (rs.Read() == true)
                        {
    
                            listBox3.Items.Add(rs3["statut"].ToString());

    form2

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace exemple
    {
        public partial class produit : Form
        {
            
    
            public produit()
                
            {
                InitializeComponent();
                
    
            }       
           
             public void produit_Load(object sender, EventArgs e)
            {
    
    
    }
    
       
        }
    
    
    
        } 
    
    merci beaucoup

    Monday, July 23, 2012 1:16 PM
  • Bonjour,

    Dans la form produit, il faut avoir une référence vers la première.

    public partial class produit : Form
    {
       private connexion fenetreConnexion;
    
       public produit(connexion fenetreConnexion)
       {
           this.fenetreConnexion = fenetreConnexion;
           InitializeComponent();
       }
    
       public void produit_Load()
       {
           string s;
           s = this.fenetreConnexion.MaVariablePublic;
       }
    }

    Dans la première, au moment de l'affichage de produit voilà ce qu'il faut écrire :

    public void boutton1_Click(object sender, EventArgs e)
    {
    produit p; p = new produit(this); p.ShowDialog();
    }

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    Monday, July 23, 2012 10:42 PM
  • bonjour,

    merci beaucoup pour votre réponse, j'ai encore deux questions:

    1-je veux pas que la première form appel la form produit car j'ai besoin des variables qu'a la fin de l'application c,à, d la 1er form appelle une autre form ?

    2- si je veux affecter le variable je reçois ce message :Impossible de convertir implicitement le type 'System.Windows.Forms.TextBox' en 'string'  

    string s;
                s = this.fenetreConnexion.login;

    textBox4.Text = this.fenetreConnexion.login;

    Bonne journée 

    Tuesday, July 24, 2012 8:20 AM
  • Bonjour,

    1-je veux pas que la première form appel la form produit car j'ai besoin des variables qu'a la fin de l'application c,à, d la 1er form appelle une autre form ?
    Je n'arrive pas à comprendre votre de problème. Pouvez-vous reformuler votre phrase.

    2- si je veux affecter le variable je reçois ce message :Impossible de convertir implicitement le type 'System.Windows.Forms.TextBox' en 'string' 

    string s;
                s = this.fenetreConnexion.login;

    textBox4.Text = this.fenetreConnexion.login;

    Voilà la correction :

    string s;
    s = this.fenetreConnexion.login.Text;
    textBox4.Text = this.fenetreConnexion.login.Text;

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    Tuesday, July 24, 2012 10:29 PM
  • Bonjour

    merci pour votre réponse

    pour la première question:

    la solution que vous m'avez donnés c'est la 1er form dois appel a la form juste aprés non ??

    mais pour moi voila l'enchainement par ordre

    ------> la1er form connexion, fé appel a la form2(presentation_entreprise),cette dernière appel une form3(activité_entreprise) celui appel la form(produit) et c'est dans la forme produit que je veux récupérer les variable de 1er form(connexion).

    merci et bonne journée

    Wednesday, July 25, 2012 7:11 AM
  • Bonjour,

    Voilà qui est beaucoup plus clair.
    Dans ce cas, vous devez "propager" la référence à votre fenêtre "connexion" dans les fenêtres.

    Par exemple, dans votre fenêtre "presentation_entreprise", vous devez appeller la fenêtre "activité_entreprise" comme ceci :

    public partial class presentation_entreprise : Form { private connexion fenetreConnexion; public presentation_entreprise(connexion fenetreConnexion) { this.fenetreConnexion = fenetreConnexion; InitializeComponent(); }
    public void afficher_Click(object sender, EventArgs e)
    {
       activité_entreprise p;
       p
    = new activité_entreprise(this.fenetreConnexion);
       p
    .ShowDialog();
    }

    }

    Est-ce que cela répond à votre problème ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marked as answer by leoni_007 Thursday, July 26, 2012 7:02 AM
    Wednesday, July 25, 2012 10:21 PM
  • Bonjour merci pour votre réponse ça marche trés bien .

    désolé comme je suis débutante donc tjs les problème, voila donc je pose beaucoup des questions parfois des chose banale mais bon !
    voila donc j'ai un tableau qui contient trois champ que je dois remplir comme suite en même temps mais j'arrive pas il me dit que Le nom de variable '@text_observation' a déjà été déclaré. Les noms de variables doivent être uniques dans un lot de requêtes ou une procédure stockée.

    private void button2_Click(object sender, EventArgs e)
            {
                string requete = "insert into observation (text_observation,traite,ecart) values(@text_observation,@traite,@ecart)";
    
    
                SqlCommand cmd = new SqlCommand(requete, ConnectBase.getinstance().Connection());
               
               
                cmd.Parameters.AddWithValue("text_observation", Ob1res1.Text);
                cmd.Parameters.AddWithValue("traite", Trait1_resp1.Checked);
                cmd.Parameters.AddWithValue("ecart", ecart_resp1.SelectedItem);
               
                cmd.Parameters.AddWithValue("text_observation",resp2.Text );
                cmd.Parameters.AddWithValue("traite", Trait2_resp2.Checked);
                cmd.Parameters.AddWithValue("ecart", ecart_resp2.SelectedItem);
                cmd.Parameters.AddWithValue("text_observation" , procedure1.Text); 
               cmd.Parameters.AddWithValue("text_observation" , procedure2.Text); 
                cmd.Parameters.AddWithValue("text_observation" , formation1.Text);
                cmd.Parameters.AddWithValue("text_observation" , formation2.Text); 
                cmd.Parameters.AddWithValue("text_observation" ,  enreg1.Text );
                cmd.Parameters.AddWithValue("text_observation", enreg2.Text);
                cmd.Parameters.AddWithValue("traite", Trait2_resp2.Checked);
                cmd.Parameters.AddWithValue("traite", Trait1_procedure1.Checked);
                cmd.Parameters.AddWithValue("traite", Trait2_procedure2.Checked);
                cmd.Parameters.AddWithValue("traite", Trait1_formation1.Checked);
                cmd.Parameters.AddWithValue("traite", Trait2_formation2.Checked);
                cmd.Parameters.AddWithValue("traite", Trait1_enreg1.Checked);
                cmd.Parameters.AddWithValue("traite", Trait2_enreg2.Checked);
                
                cmd.Parameters.AddWithValue("ecart", ecart_procedure1.SelectedItem);
                cmd.Parameters.AddWithValue("ecart", ecart_procedure2.SelectedItem);
                cmd.Parameters.AddWithValue("ecart", ecart_formation1.SelectedItem);
                cmd.Parameters.AddWithValue("ecart", ecart_formation2.SelectedItem);
                cmd.Parameters.AddWithValue("ecart", ecart_enreg1.SelectedItem);
                cmd.Parameters.AddWithValue("ecart", ecart_enreg2.SelectedItem);
                
                
                cmd.ExecuteNonQuery();
                cmd.Dispose();
            }

    merci
    Thursday, July 26, 2012 4:36 PM
  • Bonjour,

    Merci de vien vouloir poser vos nouvelles question sur un nouveau sujet de discussion !!!

    Votre problème vient du fait que vous utilisez 2 fois la même variable SQL pour 2 valeurs différentes (ici "text_observation").
    Vous devez donc modifier votre requête de tel manière à utiliser 2 variables avec des noms différents :

    string requete = "insert into observation (text_observation_1, text_observation_2,traite,ecart)
    values(@text_observation_1, @text_observation_2,@traite,@ecart)";
    // ...
    cmd.Parameters.AddWithValue("text_observation_1" , procedure1.Text); cmd.Parameters.AddWithValue("text_observation_2" , procedure2.Text);

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    Thursday, July 26, 2012 9:57 PM