2009-02-04 6 views
0

Je n'arrive pas à actualiser mon ComboBox après avoir ajouté de nouvelles données à la base de données Access.ComboBox Actualiser après l'ajout de données à partir de ChildForm

Voici le code que j'utilise pour ajouter les nouvelles données:

private void btnAddUser_Click(object sender, EventArgs e) 
{ 
     AccountForm actFrm = new AccountForm(); 

     if (actFrm.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 
       this.oleDbDataAdapter1.InsertCommand.CommandText = 
        "INSERT INTO userTable (AccountName, Username, PopServer, PopPort, Psswrd, SmtpServer, SmtpPort, Email)" + 
        "VALUES  ('" + actFrm.txtAccName.Text + "','" + actFrm.txtUsername.Text + "','" + actFrm.txtPop3.Text + "','" + actFrm.txtPop3Port.Text + "','" + actFrm.txtPassword.Text + "','" + actFrm.txtSmtp.Text + "','" + actFrm.txtSmtpPort.Text + "','" + actFrm.txtEmail.Text + "')"; 

       //open the bridge between the application and the datasource 
       this.oleDbConnection1.Open(); 

       this.oleDbDataAdapter1.InsertCommand.Connection = oleDbConnection1; 

       //execute the query 
       this.oleDbDataAdapter1.InsertCommand.ExecuteNonQuery(); 

       //close the connection 
       this.oleDbConnection1.Close(); 

       MessageBox.Show("User Added Successfully"); //inform the user 
       //tried here to refresh and even open close the myConn connection. to no avail 
      } 
      catch (System.Data.OleDb.OleDbException exp) 
      { 
       //close the connection 
       this.oleDbConnection1.Close(); 

       MessageBox.Show(exp.ToString()); 
      } 
     } 
} 

Répondre

2

Est-ce votre BindingSource utilisez un ensemble? Si c'est le cas, vous devez effectuer l'insertion via le DataSet et, peut-être, actualiser votre source de liaison. Si vous le faites de cette façon, vous éviterez également la logique d'insertion dupliquée.

Vous pouvez également simplement actualiser le DataSet mais cette méthode ne tire pas parti des puissances du DataSet et entraînera beaucoup de code dupliqué.

0

J'ai récemment eu le même problème dans VB.NET. J'ai trouvé que mettre le datasoure à Nothing (null dans C# je crois) et l'assigner à ma liste d'objets a résolu le problème.

à-dire

attendanceDataFiles.DataSource = Nothing 
    attendanceDataFiles.DataSource = myFileList.files 
Questions connexes