none
Probleme En Mode Deconnecter Ado.net RRS feed

  • Question

  • Bonjour, je travail dans une application Ado.net lie avec une base données SQl SERVER , j ai une table Utilisateur(Login , Passe , Type) , le problème que mon code source ci-dessus donne l erreur suivant : la référence d objet n est pas définie a une instance d un objet Avec ce code je veux Modifier un utilisateur et le cas de modifier aussi Le Login . Le code : 

     

     try
           {
             r = Form1.ds.Tables["Utilisateur"].Rows.Find(textBox1.Text); //r.BeginEdit();
             r[0] = textBox1.Text;
             r[1] = textBox2.Text;
             r[2] = textBox3.Text; //r.EndEdit();
             //Les Parametres methode manuel
             Form1.da.UpdateCommand = Form1.cn.CreateCommand();
             Form1.da.UpdateCommand.CommandText = "update Utilisateur set Passe = @Passe , Typee = @Typee where (Logine = @Logine)";
             Form1.da.UpdateCommand.Parameters.Add("@Logine", SqlDbType.VarChar,50, "Logine");
             Form1.da.UpdateCommand.Parameters.Add("@Passe";, SqlDbType.VarChar, 50, "Passe");
             Form1.da.UpdateCommand.Parameters.Add("@Typee", SqlDbType.VarChar, 50, "Typee");
             Form1.da.Update(Form1.ds.Tables["Utilisateur"]);
           }
           catch (Exception ex)
           {
             MessageBox.Show(ex.Message); 
           }
           finally
           { 
             MessageBox.Show("Bien Modifier"); 
           } 

     

    Aidez moi , Merci Beaucoup. Cordialement

    • Modifié Marokino1 samedi 1 janvier 2011 15:16 Merciii
    • Modifié Alex Petrescu mardi 4 janvier 2011 15:30 code
    samedi 1 janvier 2011 15:12

Réponses

  • Bonjour,

    J'ai rajouté des traces dans ton code, remplace-le donc par ce que je te mets ici :

    try {
      if(Form1.ds.Tables["Utilisateur"] == null) {
        MessageBox.Show("Table non trouvée");
      } else if(Form1.ds.Tables["Utilisateur"].Rows == null) {
        MessageBox.Show("Pas de lignes initialisées dans la table");
      } else if(Form1.ds.Tables["Utilisateur"].Rows == null) {
        MessageBox.Show("Pas de lignes initialisées dans la table");
      } else if(textBox1.Text == null) {
        MessageBox.Show("Textbox1 avec Text null");
      } else {
        r = Form1.ds.Tables["Utilisateur"].Rows.Find(textBox1.Text);
      }
      if(r != null) {
        r[0] = textBox1.Text;
        r[1] = textBox2.Text;
        r[2] = textBox3.Text;
        
        //Les Parametres methode manuel
        if(Form1.cn == null) {
          MessageBox.Show("Connexion non initialisée");
        } else if(Form1.da == null) {
          MessageBox.Show("DataAdapter non initialisé");
        } else {
          Form1.da.UpdateCommand = Form1.cn.CreateCommand();
          Form1.da.UpdateCommand.CommandText = "update Utilisateur set Passe = @Passe , Typee = @Typee where (Logine = @Logine)";
          Form1.da.UpdateCommand.Parameters.Add("@Logine", SqlDbType.VarChar,50, "Logine");
          Form1.da.UpdateCommand.Parameters.Add("@Passe";, SqlDbType.VarChar, 50, "Passe");
          Form1.da.UpdateCommand.Parameters.Add("@Typee", SqlDbType.VarChar, 50, "Typee");
          Form1.da.Update(Form1.ds.Tables["Utilisateur"]);
        }
      } else {
        MessageBox.Show("Utilisateur non trouvé -> r = null");
      }
    } catch (Exception ex) {
      MessageBox.Show(ex.Message);
    } finally {
      MessageBox.Show("Bien Modifié");
    }
    

    Par contre, là ton code te permet de modifier le mot de passe et le type, mais pas le login.

    En effet, tu recherches l'utilisateur que tu récupères dans TextBox1, et tu lui réaffectes le Text de TextBox1, ce qui fait que cette ligne r[0] = textBox1.Text est d'ailleurs inutile.

    Donne-nous le résultat de tes tests, mais au moins tu auras un message d'erreur clair.

    Cordialement,

    Thomas

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Marokino1 jeudi 6 janvier 2011 19:06
    • Non marqué comme réponse Marokino1 vendredi 22 avril 2011 16:38
    • Marqué comme réponse Marokino1 vendredi 22 avril 2011 16:38
    lundi 3 janvier 2011 09:13

Toutes les réponses

  • Bonjour,

    Supprimer le try/catch ce qui permettra de voir l'endroit précis où se situe l'erreur. Le message indique que l'on essaie d'utiliser un objet qui n'a pas été initialisé (null).

    Peut-être par exemple si le Find ne retourne rien (par exemple en suivant le code en pas à pas vérifier que r est bien différent de null après exécution de la méthode Find).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 1 janvier 2011 16:17
    Modérateur
  • Bonsoir,

    j ai supprimer le try\catch , mais le meme erreur , mai je crois le problème du clé primaire Login , et peut etre impossible de Modifier le Login ?????

     

    Cordialement

     

     

    samedi 1 janvier 2011 21:13
  • Qu'est ce qui se passe quand le code plante sous VS ? La ligne concernée n'est pas mise en surbrillance ? Pour l'instant, le but est de savoir quelle est la ligne qui provoque cette erreur.

    Une fois que VS est arrêté sur cette ligne, il faut examiner les variables "objet" utilisées par cette ligne et trouver celle qui est utilisée sans être initialisée (null).

    C'est l'utilisation d'un objet null que signale ce message d'erreur.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 1 janvier 2011 23:17
    Modérateur
  • Bonjour,

    J'ai rajouté des traces dans ton code, remplace-le donc par ce que je te mets ici :

    try {
      if(Form1.ds.Tables["Utilisateur"] == null) {
        MessageBox.Show("Table non trouvée");
      } else if(Form1.ds.Tables["Utilisateur"].Rows == null) {
        MessageBox.Show("Pas de lignes initialisées dans la table");
      } else if(Form1.ds.Tables["Utilisateur"].Rows == null) {
        MessageBox.Show("Pas de lignes initialisées dans la table");
      } else if(textBox1.Text == null) {
        MessageBox.Show("Textbox1 avec Text null");
      } else {
        r = Form1.ds.Tables["Utilisateur"].Rows.Find(textBox1.Text);
      }
      if(r != null) {
        r[0] = textBox1.Text;
        r[1] = textBox2.Text;
        r[2] = textBox3.Text;
        
        //Les Parametres methode manuel
        if(Form1.cn == null) {
          MessageBox.Show("Connexion non initialisée");
        } else if(Form1.da == null) {
          MessageBox.Show("DataAdapter non initialisé");
        } else {
          Form1.da.UpdateCommand = Form1.cn.CreateCommand();
          Form1.da.UpdateCommand.CommandText = "update Utilisateur set Passe = @Passe , Typee = @Typee where (Logine = @Logine)";
          Form1.da.UpdateCommand.Parameters.Add("@Logine", SqlDbType.VarChar,50, "Logine");
          Form1.da.UpdateCommand.Parameters.Add("@Passe";, SqlDbType.VarChar, 50, "Passe");
          Form1.da.UpdateCommand.Parameters.Add("@Typee", SqlDbType.VarChar, 50, "Typee");
          Form1.da.Update(Form1.ds.Tables["Utilisateur"]);
        }
      } else {
        MessageBox.Show("Utilisateur non trouvé -> r = null");
      }
    } catch (Exception ex) {
      MessageBox.Show(ex.Message);
    } finally {
      MessageBox.Show("Bien Modifié");
    }
    

    Par contre, là ton code te permet de modifier le mot de passe et le type, mais pas le login.

    En effet, tu recherches l'utilisateur que tu récupères dans TextBox1, et tu lui réaffectes le Text de TextBox1, ce qui fait que cette ligne r[0] = textBox1.Text est d'ailleurs inutile.

    Donne-nous le résultat de tes tests, mais au moins tu auras un message d'erreur clair.

    Cordialement,

    Thomas

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Marokino1 jeudi 6 janvier 2011 19:06
    • Non marqué comme réponse Marokino1 vendredi 22 avril 2011 16:38
    • Marqué comme réponse Marokino1 vendredi 22 avril 2011 16:38
    lundi 3 janvier 2011 09:13
  • Bonjour,

     

    Marokino1, pouvez-vous nous dire les résultats du code proposé par M. Aimonetti ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    jeudi 6 janvier 2011 14:52
  • Bonsoir ,

     

    Oui OUi la réponse de Mr Aimonetti ca marche bien , Merci beaucoup , désole pour le retard , mais ca fais 4 jours que j ai pas ouvrir mon compte , Merci beaucoup encore une fois Mr Aimonetti , A la prochaine :) Nchaalah :)


    Cordialement

    El Mehdi Faz

    jeudi 6 janvier 2011 17:53