[VB/SQLServeur] Problème Delete
Résolu/Fermé
A voir également:
- [VB/SQLServeur] Problème Delete
- Vb - Télécharger - Langages
- Just delete me - Guide
- Hiberfil.sys delete - Guide
- Vb cable - Télécharger - Audio & Musique
- *#9900# delete dumpstate/logcat ✓ - Forum Samsung
10 réponses
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
5 juin 2009 à 16:30
5 juin 2009 à 16:30
Bonjour
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = " & ListBox1.SelectedItem.ToString & " ; "
--> va générer une requête du genre : DELETE FROM dbo.client WHERE nom = toto
--> Alors que la bonne requête est : DELETE FROM dbo.client WHERE nom = "toto"
--> il faut que tu "enquotes" la chaine, soit à la main, soit avec une fonction VB qui doit b ien exister :)
Bon courage
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = " & ListBox1.SelectedItem.ToString & " ; "
--> va générer une requête du genre : DELETE FROM dbo.client WHERE nom = toto
--> Alors que la bonne requête est : DELETE FROM dbo.client WHERE nom = "toto"
--> il faut que tu "enquotes" la chaine, soit à la main, soit avec une fonction VB qui doit b ien exister :)
Bon courage
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
5 juin 2009 à 17:10
5 juin 2009 à 17:10
Non ta varaible est OK ... c'est juste qu'il faut enquoter la chaine dans la requete, pour que SQL Server comprenne que c'est une chaine ...
Donc juste un truc comme
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = """ & ListBox1.SelectedItem.ToString & """ ; "
Donc juste un truc comme
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = """ & ListBox1.SelectedItem.ToString & """ ; "
Alors en faite tu me demande de convertir le TOTO en string, c'est ça ?
Mais mon TOTO (=> & Listbox1.SelectedItem) est, d'après le débogage du logiciel déjà un string...
Il me dit =>
Et ensuite sur la ligne du "cmd.ExecuteNonQuery", il dit "Nom de colonne non valide : 'Toto'." et aussi que le "
Donc je comprends plus du tout
Mais mon TOTO (=> & Listbox1.SelectedItem) est, d'après le débogage du logiciel déjà un string...
Il me dit =>
ListBox1.SelectedItem = "Toto" {String}
Et ensuite sur la ligne du "cmd.ExecuteNonQuery", il dit "Nom de colonne non valide : 'Toto'." et aussi que le "
ExecuteNonQuery () As Integer"
Donc je comprends plus du tout
Déjà merci pour tes réponses, tu m'aides beaucoup rien quand me répondant...merci beaucoup...
Ensuite,
J'ai essayé ton code pour voir si ça marcher...
Résultat ma MsgBox me renvoie
Mais j'ai toujours la même erreur sur mon cmd.ExecuteNonQuery => "Nom de colonne non valide : 'toto'."
Ensuite,
J'ai essayé ton code pour voir si ça marcher...
Résultat ma MsgBox me renvoie
DELETE FROM dbo.client WHERE nom ="toto";Donc ça c'est bon... c'est normal...
Mais j'ai toujours la même erreur sur mon cmd.ExecuteNonQuery => "Nom de colonne non valide : 'toto'."
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
5 juin 2009 à 18:33
5 juin 2009 à 18:33
Je ne connais pas bien l'objet cmd.ExecuteNonQuery(), mais ca me parait tres bizarre ... essaie au cas ou les ' au lieu de " ?
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = "' & ListBox1.SelectedItem.ToString & '" ; "
cmd.CommandText = "DELETE FROM dbo.client WHERE nom = "' & ListBox1.SelectedItem.ToString & '" ; "
Cela ne marche toujours pas... Aurais-tu une autre solution a mettre à la place de mon code ?
Parce que là j'y arrive pas du tout en je suis coincé depuis ce week-end !
Merci d'avance
Parce que là j'y arrive pas du tout en je suis coincé depuis ce week-end !
Merci d'avance
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
8 juin 2009 à 10:27
8 juin 2009 à 10:27
désolé mais je ne vois pas ... la requete SQL est correcte (si tu la copies/colles dans un client SQL, ca doit passer non ?) donc c'est un problème de code, et je ne connais pas .NET ...
Il doit bien y avoir des experts ici ?
Bon courage
Il doit bien y avoir des experts ici ?
Bon courage
Merci d'avoir essayer de m'aider... J'ai demandé de l'aide à quelqu'un de mon entourage et finalement y'a du progrès mais y'a toujours des problèmes...
Maintenant la requête n'efface plus que le dernier enregistrement de ma table...
Je met mon code au cas où cela inspire quelqu'un ^^
Maintenant la requête n'efface plus que le dernier enregistrement de ma table...
Je met mon code au cas où cela inspire quelqu'un ^^
Imports System Imports System.Data Imports System.Data.SqlClient Public Class Form1 Dim Maconnexion As New SqlConnection() Dim UnDataSet As New DataSet() Dim UneDataTable As New DataTable() Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Maconnexion.ConnectionString = "Data Source=.\SQLEXPRESS ; Integrated Security=SSPI; Initial Catalog=test" Dim Mycommand As SqlCommand = Maconnexion.CreateCommand() Mycommand.CommandText = "SELECT id, nom FROM client" Maconnexion.Open() Dim myReader As SqlDataReader = Mycommand.ExecuteReader() Do While myReader.Read() ListBox1.ValueMember = myReader.GetInt32(0) ListBox1.Items.Add(myReader.GetString(1)) Loop myReader.Close() End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim C As Integer = ListBox1.SelectedItems.Count MsgBox(C) While C <> 0 Dim I As Integer = ListBox1.SelectedIndex Dim cmd As SqlCommand = Maconnexion.CreateCommand() cmd.Connection = Maconnexion cmd.CommandText = "DELETE FROM dbo.client WHERE id = " & ListBox1.ValueMember MsgBox(cmd.CommandText) cmd.ExecuteNonQuery() ListBox1.Items.RemoveAt(I) C = C - 1 End While End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Maconnexion.Close() Me.Close() End Sub End Class
dam75
Messages postés
1041
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
8 juin 2009 à 18:41
8 juin 2009 à 18:41
Bonjour,
Je ne pense pas que ce code fasse ce que tu veux ...
Je rajouterais avant le end while un truc du genre ListBox1.SelectedIndex = C pour que la 1ère ligne de la boucle (Dim I as ...)
De plus, tu dois pouvoir simplifier, je ne pense pas que C et I soient utiles, pour moi ils contiennent la meme chose non ?
Je ne t'ecris pas le code parce que je ne connais que très peu VB :)
Je ne pense pas que ce code fasse ce que tu veux ...
While C <> 0 Dim I As Integer = ListBox1.SelectedIndex Dim cmd As SqlCommand = Maconnexion.CreateCommand() cmd.Connection = Maconnexion cmd.CommandText = "DELETE FROM dbo.client WHERE id = " & ListBox1.ValueMember MsgBox(cmd.CommandText) cmd.ExecuteNonQuery() ListBox1.Items.RemoveAt(I) C = C - 1 End While
Je rajouterais avant le end while un truc du genre ListBox1.SelectedIndex = C pour que la 1ère ligne de la boucle (Dim I as ...)
De plus, tu dois pouvoir simplifier, je ne pense pas que C et I soient utiles, pour moi ils contiennent la meme chose non ?
Je ne t'ecris pas le code parce que je ne connais que très peu VB :)
J'ai finalement trouver je met mon code pour ceux qui cherche :
Imports System Imports System.Data Imports System.Data.SqlClient Public Class suppression Dim Maconnexion As New SqlConnection() Dim UnDataSet As New DataSet() Dim UneDataTable As New DataTable() Private Sub suppression_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Maconnexion.ConnectionString = "Data Source=.\SQLEXPRESS ; Integrated Security=SSPI; Initial Catalog=test" Maconnexion.Open() Dim req1 As String req1 = "select * from dbo.client" Dim UnDataAdapter As New SqlDataAdapter(req1, Maconnexion) UnDataAdapter.Fill(UnDataSet, "client") UneDataTable = UnDataSet.Tables("client") ListBox1.DisplayMember = "nom" ListBox1.ValueMember = "id" ListBox1.DataSource = UneDataTable Dim X As Integer For X = 0 To ListBox1.Items.Count - 1 ListBox1.SetSelected(X, True) Next X End Sub Private Sub btn_Supp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Supp.Click Dim C As Integer = ListBox1.Items.Count For I As Integer = 0 To C - 1 If ListBox1.GetSelected(I) = True Then Dim cmd As SqlCommand = Maconnexion.CreateCommand() cmd.Connection = Maconnexion cmd.CommandText = "DELETE FROM dbo.client WHERE id = " & ListBox1.SelectedValue cmd.ExecuteNonQuery() ListBox1.SelectedIndices.Remove(I) End If Next I UneDataTable.Clear() ListBox1.DataSource = UneDataTable Dim req1 As String req1 = "select * from dbo.client" Dim UnDataAdapter As New SqlDataAdapter(req1, Maconnexion) UnDataAdapter.Fill(UnDataSet, "client") UneDataTable = UnDataSet.Tables("client") ListBox1.DisplayMember = "nom" ListBox1.ValueMember = "id" ListBox1.DataSource = UneDataTable Dim X As Integer For X = 0 To ListBox1.Items.Count - 1 ListBox1.SetSelected(X, True) Next X End Sub Private Sub btn_Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Quitter.Click Maconnexion.Close() Me.Close() End Sub End Class