Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 08h58   #1
Membre du Club
 
Jean-Luc
Inscription : mai 2004
Messages : 183
Détails du profil
Informations personnelles :
Nom : Jean-Luc
Âge : 58

Informations forums :
Inscription : mai 2004
Messages : 183
Points : 62
Points : 62
Par défaut Pb avec caractères spéciaux dans fichier

Bonjour
J'ai cette routine pour afficher des informations biographiques d'acteurs quand la souris passe sur leur photo affichée dans un form access

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub ExifData(pFile As String)
Dim orst As DAO.Recordset
Dim oDb As DAO.Database
Set oDb = CurrentDb
    Dim Nom As String
    ' Ouvre le fichier image
    clex.OpenFile pFile
    ' Enlève "C:\photoacteur\" au nom de fichier
             Nom = Mid(pFile, 16)
    ' Enlève ".jpg" du nom de fichier pour faire correspondre le nom de fichier avec celui de l'acteur présent dans la table Acteurs
             EDescription = Left(Nom, InStr(Nom, ".") - 1)
             Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code='" & Me.EDescription & "'", dbOpenDynaset)
             Naissance.Value = orst.Fields("Naissance").Value & " "
             Mort.Value = "-  " & orst.Fields("Mort").Value
             'Ferme le fichier
    clex.CloseFile
orst.Close
oDb.Close
Set orst = Nothing
Set oDb = Nothing
End Sub
Tout fonctionne si l'acteur s'appelle par exemple Jean Gabin
Mais si le nom est Jean d'Ys ça ne marche plus
J'ai essayé de retirer le carctère ' de ces noms et ça remarche
Comment puis-je formuler ma requête pour pouvoir laisser ce carctère dans mes noms ?
Jean-Luc80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h07   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Code :
Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code='" & Me.EDescription & "'", dbOpenDynaset)
est en cause. Ecris comme ceci :

Code :
Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code=""" & Me.EDescription & """", dbOpenDynaset

Tu auras alors des problèmes si le nom de l'acteur contient un double-quote. C'est plus rare !

Edit. Quoique : Jean-Alexis Gabin Moncorgé dit "Jean GABIN"...

Idem pour ton champ EDescription et tous les cas où le texte est susceptible de contenir l'apostrophe.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h13   #3
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

On peut employer aussi "chr(34)" :

Code :
1
2
3
 
 
Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code=" & chr(34) & Me.EDescription & chr(34), dbOpenDynaset
Edit :
NB : s'il faut des quotes - doubles quotes, ou chr(34) c'est que Me.EDescription est sans doute une chaîne.

Dans ce cas, peut-être que l'utilisation de l'opérateur "like " (au lieu de égal (=)) est plus appropriée.

Code :
1
2
3
 
 
Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code like " & chr(34) & Me.EDescription & chr(34), dbOpenDynaset

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h46   #4
Membre du Club
 
Jean-Luc
Inscription : mai 2004
Messages : 183
Détails du profil
Informations personnelles :
Nom : Jean-Luc
Âge : 58

Informations forums :
Inscription : mai 2004
Messages : 183
Points : 62
Points : 62
Merci de vos réponses rapides
Au final j'ai opté pour la deuxième méthode de Pierre c'est à dire:

Code :
Set orst = oDb.OpenRecordset("select code,mort,naissance from acteurs where code like " & chr(34) & Me.EDescription & chr(34), dbOpenDynaset)
Jean-Luc80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h24.


 
 
 
 
Partenaires

Hébergement Web