Bonjour,
lorsque que je fais un insert avec des champs contenant des apostrophes,cela me génère des erreurs!
comment y remédier!
merci.
Version imprimable
Bonjour,
lorsque que je fais un insert avec des champs contenant des apostrophes,cela me génère des erreurs!
comment y remédier!
merci.
Montre nous une de tes requêtes qui te pose problème
mais déjà sache que des noms de champ avec des apostrophe, caractères accentués & CO, sont à PROSCRIRE ABSOLUMENT, pour justement eviter ce genre de problème
c'est pas le nom du champ,mais plutôt la valeur du champ saisi!
exemple: L'hopital
Fait voir comment tu construits tes requêtes
Requête paramétrée...
un bout de code:
sInsertSQL = "insert into Missions([Référence Employés], NomEmployés) values('" & sLRef & "','" & lblNOM.Text & "')"
Dim cmdInsert As New Data.OleDb.OleDbCommand(sInsertSQL, cnAccess)
cmdInsert.ExecuteNonQuery()
Requête paramétrée...??!!
Faut utiliser des requêtes paramétrées !!!
T'auras plus ce genre de problèmes
peux tu stp m'indiquer comment?
Y a un article à ce sujet sur le site. Je t'invite à faire une recherche
C'est expliqué ici : http://johannblais.developpez.com/tu...s-donnees/#LIV
je sais pas si j'ai bien compris,mais je cru qu'il suffisait de changer les & par +,mais pourtant aucun résultat?
je sais plus:oops:
Suis l'article de saumon agile et tu n'auras plus aucun soucis. Il est d'ailleurs très bien réalisé.
Je m'y suis mis, ca demande quelques lignes de code en plus mais qu'est ce que c'est propre. Plus aucun problème avec les chaines et les dates.
Allez je me lance :
PS: Merci à Saumon Agile pour m'avoir appris cette technique :king:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub PetitTest(ByVal NomDuClient As String) Dim requete As String = "SELECT * FROM MaTableClient WHERE MaTableClient.NomDuClient = @LeNomDuClient" Dim commande As DBCommand = MaConnexionVersLaDataBase.CreateCommand(requete) Dim parametre As DbParameter = commande.CreateParameter() parametre.ParameterName = "@LeNomDuClient" parametre.DbType = DbType.String ' Ici tu indiques s'il s'agit d'un String ou Int32 ou autre parametre.Direction = ParameterDirection.Input parametre.Value = NomDuClient commande.Parameters.Add(parametre) End Sub
Merci pour le Lien et pour la qualité de l'article. J'avais le meme problème sur un select where, qui a toujours fonctionner mais quand l'utilisateur à mis une valeur avec apostrohpe mon code a bugué.
Il ne s'agit pas de replacer l'operateur de concaténation,mais d'utuliser les requetes paramètrées tel que présentées dans l'article. Ou alors sert toi de la fonction Replace toujours comme presentée dans l'article et tu n'auras plus de problème.Citation:
Envoyé par alicia26
Merci à Johann Blais
Je parle de la fonction Replace uniquement pour montrer que ce n'est pas une solution mais plutôt un paliatif. L'idéal est de passer par des paramètres SQL car le Replace ne te protège pas des problèmes liés au format de la date (entre autres).
Suis démasqué ;)
Merci pour le lien!c'est très clair maintenant!
Effectivement avec un select, les RPs sont idéales!
Mais pour un insert,j'ai dû utilisé un Replace et çà fonctionne correctement!
merci à tous!