Refus update sql ( vb.net 2015 vb sql serveur 2016 )

Résolu/Fermé
JSB-24270 Messages postés 24 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 9 mai 2020 - Modifié le 12 avril 2020 à 20:37
 Jacques - 13 avril 2020 à 17:26
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:

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 ' '.

A voir également:

7 réponses

JSB-24270 Messages postés 24 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 9 mai 2020 1
13 avril 2020 à 16:57
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
1
yg_be Messages postés 23356 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 554
13 avril 2020 à 17:24
peux-tu alors marquer la discussion comme résolue?
0
yg_be Messages postés 23356 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 Ambassadeur 1 554
12 avril 2020 à 21:26
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.
0
JSB-24270 Messages postés 24 Date d'inscription jeudi 26 mars 2020 Statut Membre Dernière intervention 9 mai 2020 1
Modifié le 13 avril 2020 à 09:25
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.

0
yg_be Messages postés 23356 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 554
13 avril 2020 à 11:47
peux-tu nous montrer la source SQL de la requête qui ne fonctionne pas?
0
Utilisateur anonyme
13 avril 2020 à 09:36
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.
0

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.
0
Utilisateur anonyme
13 avril 2020 à 10:17
Très bien.

Il y a deux autres façons de construire une string en .Net.
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 exemple
Dim 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 jour
Dim 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
0
Voici qui est fait.
Bonne journée à tous.
0