Bonjour
Dans ma commande d'insert j'ai une phrase qui contiens un ' du coup j'ai un arrêt il doit surment être possible de l'enregisrtre ?
merci de votre aide
Mario
Bonjour
Dans ma commande d'insert j'ai une phrase qui contiens un ' du coup j'ai un arrêt il doit surment être possible de l'enregisrtre ?
merci de votre aide
Mario
S.V.P écrire ta requête pour trouver l'erreur.
Pour mettre dans une requête une chaine qui contient un apostrophe, il faut doubler l'apostrophe pour que ce ne soit pas considéré comme la fin de la chaine (mais ça n'en insèrera qu'un seul bien sûr)
Cela dit, ce n'est vraiment pas propre comme solution... Il ne faut pas construire la requête en mettant les données directement dedans, il faut utiliser une requête paramétrée, comme expliqué dans ce tuto :
http://webman.developpez.com/article...rameter/vbnet/
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Supposons INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L'été est la')
j'ai un arrêt à cause du L'
tu peut créer une variable où tu met ton texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Supposons INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L'été est la')
exemple
Ou bien tu met ton texte dans un Label ou une zone de texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim X as String X = "L'été est la" INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', X )
Essai ça, j'espère que ça marche pour toi
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', " & Text1.Text & ")
Bonsoir JetLibre,
ta solution ne change strictement rien au problème de Mario Rousson. Ce n'est pas en passant par une variable quelconque que cela va changer le contenu.
Les solutions ont été données par tomlev dans le 3iem message.
Règles du forum + Comment utiliser Developpez.com =
Découvrez le magazine gratuit de Developpez.com
Si vous développez en .NET, la FAQ, les tutos et l'aide MSDN sont vos amis !!!
Dvp.NET, la librairie .NET open source de Developpez.com
deux solutions
Ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour','L''été est la')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim X as String X = "L'été est la" INSERT INTO TblHistoire(Titre,Extrait) VALUES ('Bonjour', X.Replace("'", "''") )
On ne le dira jamais assez, adoptez les bonnes pratiques et optez pour plus de sécurité en utilisant les requêtes paramétrées tel qu'indiqué par tomlev et Sankasssss.
N'oubliez pas le tag et
voici ce qu'il faut faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim X as String X = "L'été est la"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ObjetCommand.CommandText = " INSERT INTO [Matable] ( Monchamp ) VALUES ( @Monchamp);" ObjetCommand.Parameters.Add("@Monchamp", OleDbType.VarChar).Value =X
Petite précision, si t'es sous SQL Server, c'est bien @ qui doit être utilisé pour spécifier tes paramètres. Mais sous access, @ ne marchera pas. Faut pluôt utiliser ?
N'oubliez pas le tag et
merci à tous je vais travailler sur les requêtres paramêtrer c'est la methode la plus sur
j'ai créer une function d'enregistrement voici le code il me manque quelques chose en quelque par ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Function ExComAjComp(ByVal SQL As String) As Integer Dim SQlS() As String = SQL.Split(";"c) Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES ('@nom','@adresse','@ville','@provEtat','@Pays','@codePostal','@telephone','@Fax','@siteWeb','@courriel','@secteur','@secteurAct','@sCIAN','@sIC','@descrip')" Try Me.OuvrirConnexion() Dim Cmd As New OleDbCommand With Cmd.Parameters .Add(New OleDbParameter("@nom", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@adresse", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@ville", OleDb.OleDbType.BSTR, 50)) .Add(New OleDbParameter("@provEtat", OleDb.OleDbType.BSTR, 50)) .Add(New OleDbParameter("@Pays", OleDb.OleDbType.BSTR, 50)) .Add(New OleDbParameter("@codePostal", OleDb.OleDbType.BSTR, 25)) .Add(New OleDbParameter("@telephone", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@Fax", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@siteWeb", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@courriel", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@secteur", OleDb.OleDbType.BSTR, 100)) .Add(New OleDbParameter("@secteurAct", OleDb.OleDbType.BSTR, 100)) .Add(New OleDbParameter("@sCIAN", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@sIC", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@descrip", OleDb.OleDbType.LongVarChar)) End With With Cmd .Parameters("@nom").Value = SQlS(0) .Parameters("@adresse").Value = SQlS(1) .Parameters("@ville").Value = SQlS(2) .Parameters("@provEtat").Value = SQlS(3) .Parameters("@Pays").Value = SQlS(4) .Parameters("@codePostal").Value = SQlS(5) .Parameters("@telephone").Value = SQlS(6) .Parameters("@Fax").Value = SQlS(7) .Parameters("@siteWeb").Value = SQlS(8) .Parameters("@courriel").Value = SQlS(9) .Parameters("@secteur").Value = SQlS(10) .Parameters("@secteurAct").Value = SQlS(11) .Parameters("@sCIAN").Value = SQlS(12) .Parameters("@sIC").Value = SQlS(13) .Parameters("@descrip").Value = SQlS(14) .Connection = Me._cn .CommandType = CommandType.Text .CommandText = SQLNomC Return Cmd.ExecuteNonQuery End With Catch ex As Exception Throw New ApplicationException("La mise à jour à échoué " & ex.Message) Finally Me.FermerConnection() End Try End Function
Tu dois rajouter la requête à ton oleDbCommand, ainsi qu'un objet Connexion, que fais OuvrirConnexion ? Renvoi-t-elle un objet connection ? Charge-t-elle une property connexion ?
EDIT : Lu trop vite ...
Je vois pas ce qu'il manque pour ma part ...
Peut-être inverser ces 2 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Return Cmd.ExecuteNonQuery End With
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Hello,
Alors je débarque un peu et mon truc c'est plus SQL SERVER que Access mais quand même, les paramètres entre apostrophes, cela me semble bizarre.
A priori, les apostrophes délimitent des chaînes de caractères. Du coup, il prend p-e "@leparam" et tente de le mettre dans la colonne associée...
Kropernic
Bien vu, c'est bien ça le problème à mon avis... En fait il faut voir les paramètres comme des "variables" dans la requête : une variable x qui contient une chaine "toto" en VB, tu ne la mets pas x entre guillemets pour l'utiliser... bah c'est pareil ici : pas d'apostrophes autour des paramètres, sinon ils sont traités comme des chaines qui contiennent le nom du paramètre...
Il faut donc modifier la requête comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES (@nom,@adresse,@ville,@provEtat,@Pays,@codePostal,@telephone,@Fax,@siteWeb,@courriel,@secteur,@secteurAct,@sCIAN,@sIC,@descrip)"
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Et si on complète avec :
la requête deviendra :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim SQLNomC As String = "INSERT INTO TblCompagnie(Nom,Adresse,Ville,ProvEtat,Pays,CodePostal,Telephone,Fax,SiteWeb,Courriel,Secteur,SecteurAct,SCIAN,SIC,Descrip) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
Règles du forum + Comment utiliser Developpez.com =
Découvrez le magazine gratuit de Developpez.com
Si vous développez en .NET, la FAQ, les tutos et l'aide MSDN sont vos amis !!!
Dvp.NET, la librairie .NET open source de Developpez.com
merci à tous de vos interventions c'est précieux
Merci TomLev tu es un champion ...comme tout les autre d'ailleurs
j'ai fait un code test et il fonctionne à 100/100
voici le code
merci à tous grace à vous mon code deviens meilleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Function reqtmp() As Integer Dim SQlS() As String = {"LeNom", "l'adresse", "La ville"} Dim SQLNomC As String = "INSERT INTO TblReqPar(Nom,Adresse,Ville) VALUES (@nom,@adresse,@ville)" Try Me.OuvrirConnexion() Dim Cmd As New OleDbCommand With Cmd.Parameters .Add(New OleDbParameter("@nom", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@adresse", OleDb.OleDbType.BSTR, 255)) .Add(New OleDbParameter("@ville", OleDb.OleDbType.BSTR, 50)) End With With Cmd .Parameters("@nom").Value = SQlS(0) .Parameters("@adresse").Value = SQlS(1) .Parameters("@ville").Value = SQlS(2) .Connection = Me._cn .CommandType = CommandType.Text .CommandText = SQLNomC End With Return Cmd.ExecuteNonQuery Catch ex As Exception Throw New ApplicationException("La mise à jour à échoué " & ex.Message) Finally Me.FermerConnection() End Try End Function
Mario
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager