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
Jacques - 13 avril 2020 à 17:26
A voir également:
- Refus update sql ( vb.net 2015 vb sql serveur 2016 )
- Windows update 0x80070643 - Accueil - Windows
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Récupération serveur sql - Télécharger - Gestion de données
- Windows update bloqué - Guide
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
13 avril 2020 à 16:57
Bonjour.
J'ai résolu mon problème update en plaçant
Command.ExecuteNonQuery()
dans un IF, comme ceci
Et maintenant plus de problème.
Merci à tous et pour tout
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
23356
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 novembre 2024
Ambassadeur
1 554
12 avril 2020 à 21:26
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:
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.
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.
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
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.
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.
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.
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
13 avril 2020 à 11:47
peux-tu nous montrer la source SQL de la requête qui ne fonctionne pas?
Utilisateur anonyme
13 avril 2020 à 09:36
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
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.
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.
Effectivement, il y a la numérotation des lignes, c'est nettement mieux.
Mille excuses.
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.
Utilisateur anonyme
13 avril 2020 à 10:17
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
Par exemple
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
Note que là on voit plus facilement les apostrophes entourant les données issues des variables
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 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
13 avril 2020 à 17:24