Refus update sql ( vb.net 2015 vb sql serveur 2016 )
Résolu
JSB-24270
Messages postés
26
Statut
Membre
-
Jacques -
Jacques -
Bonjour.
Me revoici avec encore un souci.
J'ai une page où il y a un bouton update qui me donne du fil à retordre.
voici mon code:
J'ai ce message d'erreur
Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
Informations supplémentaires : Syntaxe incorrecte vers 'entreprise'.
Ouvrez les guillemets après la chaîne de caractères ' '.
Cordialement
Jacques
Me revoici avec encore un souci.
J'ai une page où il y a un bouton update qui me donne du fil à retordre.
voici mon code:
Private Sub ModifierToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ModifierToolStripMenuItem.Click
' UPDATE ENTREPRISE
Dim Connexion As New SqlConnection("Data Source=OMNIFAB;Initial Catalog=PERSO;User Id=******;Password=******;")
Try
Connexion.Open()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim Comm2 As New SqlCommand("UPDATE entreprise SET nom='" & Label1.Text & "', adresse ='" & Label2.Text & "', cp='" & Label3.Text & "',ville='" & Label4.Text & "',tel='" & Label5.Text & "',fax='" & Label6.Text & "',email='" & Label7.Text & "',site='" & Label8.Text & "',rcs='" & Label9.Text & "',siret='" & Label10.Text & "',ape='" & Label11.Text & "', WHERE id='" & TextBox12.Text & "' ", Connexion)
Comm2.ExecuteNonQuery()
End Sub
J'ai ce message d'erreur
Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
Informations supplémentaires : Syntaxe incorrecte vers 'entreprise'.
Ouvrez les guillemets après la chaîne de caractères ' '.
Cordialement
Jacques
7 réponses
-
Bonjour.
J'ai résolu mon problème update en plaçant
Command.ExecuteNonQuery()
dans un IF, comme ceci
If Command.ExecuteNonQuery() Then MsgBox("Update OK") Else MsgBox("Update NON") End If
Et maintenant plus de problème.
Merci à tous et pour tout -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, plusieurs suggestions:
1) utilise les balises de code en précisant "basic" pour du VB
2) quand tu as un message d'erreur, informe-nous de la ligne de code sur laquelle cela se produit
3) quand tu prepares ainsi une requête SQL via un programme, fais plutôt ainsi:dim reqSQL as string reqSQL = "UPDATE entreprise SET nom='" & Label1.Text & "', adresse ='" & Label2.Text & _ "', cp='" & Label3.Text & "',ville='" & Label4.Text & "',tel='" & Label5.Text & _ "',fax='" & Label6.Text & "',email='" & Label7.Text & _ "',site='" & Label8.Text & "',rcs='" & Label9.Text & _ "',siret='" & Label10.Text & "',ape='" & Label11.Text _ & "', WHERE id='" & TextBox12.Text & "' " Dim Comm2 As New SqlCommand(reqSQL, Connexion)
4) quand tu as un soucis avec une requête SQL via un programme, récupère la source de la requête, et teste cela en direct sur la base de données. si tu ne comprends pas l'erreur, partage la source de la requête, ainsi que le message d'erreur. -
Bonjour yg_be
J'ai essayé ton code mais j'ai toujours le même message d'erreur.
Quand à utiliser la balise de code, c'est ce que j'ai fait mais ça ne change rien.
Dim reqSQL As String
reqSQL = "UPDATE entreprise SET nom='" & Label1.Text & "', adresse ='" & Label2.Text & _
"', cp='" & Label3.Text & "',ville='" & Label4.Text & "',tel='" & Label5.Text & _
"',fax='" & Label6.Text & "',email='" & Label7.Text & _
"',site='" & Label8.Text & "',rcs='" & Label9.Text & _
"',siret='" & Label10.Text & "',ape='" & Label11.Text _
& "', WHERE id='" & TextBox12.Text & "' "
Dim Comm2 As New SqlCommand(reqSQL, Connexion)
Comm2.ExecuteNonQuery()
voici le message que j'obtiens, de la ligne => comm2.ExecuteNonQuery ()
Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
Informations supplémentaires : Syntaxe incorrecte vers 'entreprise'.
Ouvrez les guillemets après la chaîne de caractères ' '.
J'ai suivi ton conseil et ai fait ma requête directement sur le serveur et il me signale une erreur de syntaxe
Msg 156, Niveau 15, État 1, Ligne 7
Syntaxe incorrecte vers le mot clé 'WHERE'.
J'ai vu que j'avais placé une , avant la clause WHERE mais c'est toujours pareil
J'ai rectifié en modifiant la valeur de l'ID de INT en VARCHAR, sur le serveur je n'ai plus d'erreur mais toujours le même message au debugage, là je ne comprend plus rien.
-
Bonjour Jacques,
par 2 fois dans une précédente question, je t'ai demandé de lire le petit tuto sur les balises de codes. c'était là
https://forums.commentcamarche.net/forum/affich-36566015-sql-combobox-et-lecture-dans-des-textbox-vb-net-2015-vb#2
Au vu de tes 2 pavés gris et moches, il me semble que tu n'as pas fait cet effort.
yg_be lui fait l'effort de te poster un code- coloré
- indenté
- dont les lignes sont numérotées
- avec ascenseur horizontal ou vertical si besoin.
Pourtant, lui n'a pas besoin d'aide, donc n'a pas besoin de donner envie aux autres de lire sa réponse.
Le moindre respect que tu devrais avoir envers lui, c'est de lui rendre la tache plus aisée non?
Quand tu aurais fait l'effort de poster un code lisible, je te montrerais comment en VB.Net on construit une string de façon plus "clair", car là on codant en mode VBA, s'il manque une apostrophe c'est pas facile à voir.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour Whismeril.
J'ai reçu ton mail au moment ou j'étais en train de relire l'art et la manière de poster du code.
J'avoue que j'ai du lire un peu trop vite et zapper quelques lignes.
Je reposte donc mon script.
Dim reqSQL As String reqSQL = "UPDATE entreprise SET nom='" & Label1.Text & "', adresse ='" & Label2.Text & "', cp='" & Label3.Text & "',ville='" & Label4.Text & "',tel='" & Label5.Text & "',fax='" & Label6.Text & "',email='" & Label7.Text & "',site='" & Label8.Text & "',rcs='" & Label9.Text & "',siret='" & Label10.Text & "',ape='" & Label11.Text _ & "' WHERE id='" & TextBox12.Text & "' " Dim Comm2 As New SqlCommand(reqSQL, Connexion) Comm2.ExecuteNonQuery()
Effectivement, il y a la numérotation des lignes, c'est nettement mieux.
Mille excuses. -
Très bien.
Il y a deux autres façons de construire une string en .Net.- Utiliser un stringbuilder https://docs.microsoft.com/fr-fr/dotnet/api/system.text.stringbuilder?view=netframework-4.8 si les codes exemples sont sont en C#, tu peux changer le langage en haut à droite de la page

- Utiliser String.Format, le premier exemple du lien ci-dessus termine par
Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString())c'est précisément un exemple de cette façon de faire.
La méthode prend en paramètres un texte "modèle", et un tableau d'objets "paramètriques".
C'est dans le tableau que l'on va chercher les informations à insérer dans le modèle.
Par définition, le tableau n'a pas un nombre d'item fixe, pour ajouter un objet, il suffit de le mettre à la suite des autres.
Dans le texte modèle, l'emplacement des informations à insérer est marqué par"{x}"où x est l'index de l'objet dans le tableau d'objets.
Par exempleDim prenom as String = "Alain" Dim nom as String = "Di" Dim identite as String = String.Format("{0} {1}", prenom, nom") 'identite vaut "Alain Di"
Cette méthode permet aussi d'appliquer des formats sur les nombre, bon là pour ta requête ça ne sert pas puisque tu n'as que des string en entrée, mais ça peut te servir un jourDim pi as String = String.Format("Pi arrondi à 2 décimales '{0:0.00}' ", Math.Pi) Dim heure As String = String.Format("Heure:Minute '{0:hh:mm}' {1}", DateTime.Now, If(DateTime.Now.Hour > 12, "de l'après-midi", "du matin"))
Note que là on voit plus facilement les apostrophes entourant les données issues des variables - Utiliser un stringbuilder https://docs.microsoft.com/fr-fr/dotnet/api/system.text.stringbuilder?view=netframework-4.8 si les codes exemples sont sont en C#, tu peux changer le langage en haut à droite de la page
-