2017-10-02 6 views
0

J'essaie de supprimer une ligne de ma base de données. Lorsque je clique sur une ligne, appuyez sur puis sur mon bouton de suppression: "Aucune valeur pour un ou plus de paramètres requis ", je ne sais pas quelle est l'erreur, j'ai vérifié le nom de ma table et c'est correct. Mon autre bouton Supprimer fonctionne très bienAucune valeur donnée pour un ou plusieurs paramètres requis lors de la suppression d'une ligne

DialogResult result = MessageBox.Show("Are you sure you want to delete this user?", 
      "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
     if (result == DialogResult.Yes) 
     { 
      string sql = string.Format(@"DELETE FROM User_list WHERE ID ={0}", 
       dataGridView2.CurrentRow.Cells[0].Value.ToString()); 
      crudTools.ExecuteQuery(sql); 
      crudTools.FillDataGrid("SELECT * FROM User_list", ref dataGridView2);} 
+0

Lorsque vous mettez un point d'arrêt sur cette ligne ExecuteQuery, quelle est la valeur de la variable sql? –

Répondre

0

Le problème semble origine de cette chaîne de requête à l'intérieur string.Format:

string sql = string.Format(@"DELETE FROM User_list WHERE ID ={0}", dataGridView2.CurrentRow.Cells[0].Value.ToString()); 

Aucune valeur donnée pour un ou plusieurs paramètres requis indique que la valeur passée dans WHERE article n'est pas valide, ce que vous devez faire si le ID est une colonne de chaîne il suffit d'ajouter des guillemets simples autour du premier paramètre marqué {0}, car dataGridView2.CurrentRow.Cells[0].Value.ToString() renvoie une chaîne de caractères mais sans guillemets ll être traités par Access en tant que valeur numérique:

string sql = string.Format(@"DELETE FROM User_list WHERE ID = '{0}'", dataGridView2.CurrentRow.Cells[0].Value.ToString()); 

Ou si le ID est une colonne entière, le convertir en int avant de passer:

string sql = string.Format(@"DELETE FROM User_list WHERE ID = {0}", Convert.ToInt32(dataGridView2.CurrentRow.Cells[0].Value.ToString())); 

NB: Rappelez-vous d'utiliser la requête paramétrées si la valeur est à partir de la saisie de l'utilisateur à l'intérieur de DataGridView.

problème similaire:

No value given for one or more required parameters. error during Search

+0

J'ai déjà essayé vos deux codes, mais il chaîne sql = string.Format (@ "DELETE FROM User_list WHERE ID = '{0}'", dataGridView2.CurrentRow.Cells [0] .Value.ToString()); et le code Convert.ToInt32 mais le résultat est le même – Janelle

+0

Quelle valeur renvoyée par 'dataGridView2.CurrentRow.Cells [0] .Value'? L'erreur indique que vous avez manqué un argument dans la clause WHERE et je pense que la requête potentielle pour casser votre code est seulement cette ligne, êtes-vous sûr que le flux d'exécution se brise dans 'crudTools.ExecuteQuery (sql)'? –