2014-07-16 1 views
0

Je crée une application qui doit obtenir la valeur d'un champ, ajouter quelque chose, puis mettre à jour ce champ. Cela compile et fonctionne très bien. Toutefois, cela ne met pas réellement à jour le champ lorsque je le vérifie dans l'application (dans un DataGrid) ainsi que dans la base de données actuelle.la méthode de mise à jour de l'adaptateur de table ne met pas à jour la grille de données

Voici où je mets à jour la rangée.

//This used to be: foreach (DataRow row in momDataSet.Clients.Rows) 
//However, this doesn't seem to have any rows 
foreach (DataRow row in clientsTableAdapter.GetData().Rows) 
     { 

      //all of these used to be row.ItemArray[] 
      if (row[6].Equals(clientID)) 
      { 

       double oldAmt = Convert.ToDouble(row[8].ToString()); 
       double newAmt = oldAmt + amt; 
       row[8] = newAmt; 

       try 
       { 
        // Tried momDataSet.AcceptChanges() here 
        this.clientsTableAdapter.Update(row); 

        //I tried momDataSet.AcceptChanges() after the update too 
       } 
       catch (Exception exc) 
       { 
        MessageBox.Show(exc.Message.ToString(), "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
       } 

      } 
     } 

Et voici la grille de données que je regarde dans l'application. J'ouvre un formulaire pour exécuter le code ci-dessus puis ouvre un autre formulaire pour le vérifier.

public partial class frmSearch : Form 
{ 
    public frmSearch() 
    { 
     InitializeComponent(); 
     this.clientsTableAdapter.Fill(momDataSet.Clients); 
    } 

Et ceci est la commande de mise à jour du texte

UPDATE `Clients` SET `Last Name` = ?, `First Name` = ?, `E-mail Address` = ?, `Phone Number` = ?, `Rate` = ?, `Billing Type` = ?, `Outstanding balance` = ?, `Last Billed` = ?, `Notes` = ? WHERE (((? = 1 AND `Last Name` IS NULL) OR (`Last Name` = ?)) AND ((? = 1 AND `First Name` IS NULL) OR (`First Name` = ?)) AND ((? = 1 AND `E-mail Address` IS NULL) OR (`E-mail Address` = ?)) AND ((? = 1 AND `Phone Number` IS NULL) OR (`Phone Number` = ?)) AND ((? = 1 AND `Rate` IS NULL) OR (`Rate` = ?)) AND ((? = 1 AND `Billing Type` IS NULL) OR (`Billing Type` = ?)) AND (`ClientID` = ?) AND ((? = 1 AND `Outstanding balance` IS NULL) OR (`Outstanding balance` = ?)) AND ((? = 1 AND `Last Billed` IS NULL) OR (`Last Billed` = ?))) 

Je n'ai pas une copie locale de la base de données - insert fonctionne très bien. Il existe une méthode de mise à jour (elle se complète automatiquement dans VS). J'ai un PK pour chaque table.

L'option d'actualisation de la table (dans le jeu de données d'édition -> table de clic droit (dans mon cas, Clients) -> configure -> options avancées) n'est pas activée. J'utilise une connexion OLEDB et je suppose qu'ils ne sont pas compatibles?

Répondre

0

J'ai glissé une source de liaison de clients sur le formulaire et c'est corrigé!

Questions connexes