OVH Cloud OVH Cloud

’apostrophe

5 réponses
Avatar
jfd
Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais ou
? Un peu d’aide serait la bienvenue.
Merci à tous


Private Sub Form_Load()

Dim ctl As Control

For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "chk"
ctl.Value = -1

Case "lbl"
ctl.Caption = "- * - * -"

Case "txt"
ctl.Visible = False
ctl.Value = ""

Case "cmb"
ctl.Visible = False

End Select
Next ctl

Me.lstResults.RowSource = "SELECT RefRec, Name, Origin,Dat FROM Recipe1
Order By Name;"
Me.lstResults.Requery

End Sub

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

5 réponses

Avatar
Eric
Bonjour,

Corriges le SQL de départ dans Private Sub RefreshQuery()
Il manque un espace après le 0
SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "

puis pour les concaténations sur ce modèle:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If

Ca devrait le faire.

Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais ou
? Un peu d’aide serait la bienvenue.
Merci à tous

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ze Titi
Je me permets d'jouter que, pour éviter la multiplication des guillemets, on peut utiliser Chr(34) qui est le code ASCII de ce caractère. Ca nous donne donc:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = " & chr(34) & Me.cmbRechCategory & Chr(34) & " "
End If

En ce jour mémorable du lundi 26/02/2007, tu as entrepris la lourde tâche de taper sur ton clavier :
Bonjour,

Corriges le SQL de départ dans Private Sub RefreshQuery()
Il manque un espace après le 0
SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "

puis pour les concaténations sur ce modèle:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If

Ca devrait le faire.

Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais
ou ? Un peu d’aide serait la bienvenue.
Merci à tous

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ")
+ 1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " &
DCount("*", "Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub




--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info


Avatar
jfd
Bonsoir Eric et merci de cette réponse mais, malheureusement après divers
essais cela ne semble pas convenir, je reste avec mon problème sur le nom et
la description qui provoque une erreur sur les noms avec apostrophe. Si je
mets un espace après le 0 plus rien ne marche.
Je pense que le probleme est peut être sur le Me.lblStats.Caption =
DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*", "Recipe1") et si
j’essaye d’écrire ‘If Not Me.chkName’ ou ‘If Not Me.chkdescription’ comme ton
exemple cela ne marche plus.
Je suis bien dépassé par le sujet.
Merci de votre aide.
jfd





Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Description FROM Recipe1 Where
Recipe!RefRec <> 0"


If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class = """ & Me.txtRechClass & """ "

End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "

End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "

End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = """ & Me.cmbRechOrigin & """ "

End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub



Bonjour,

Corriges le SQL de départ dans Private Sub RefreshQuery()
Il manque un espace après le 0
SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "

puis pour les concaténations sur ce modèle:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If

Ca devrait le faire.

Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais ou
? Un peu d’aide serait la bienvenue.
Merci à tous

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Je ne dis pas de mettre entre quote (') les if ... Then mais de doubler
les guillemets pour le passage des variables à ta chaine SQL.

Après le 0, il te faut un espace car comme tu concatènes la chaine SQL,
si tu ne mets pas l'espace après le 0 tu obtiendras quelque chose comme:
"SELECT RefRec, Name, .. FROM Recipe1 Where Recipe!RefRec <> 0AND ..."
Un espace en plus dans le SQL ne génère pas d'erreur, un espace en moins
OUI.

Ton code devrait être:

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "
If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like ""*" & Me.txtRechClass & "*"" "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like ""*" &
Me.txtRechDescription & "*"" "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like ""*" & Me.txtRechName & "*"" "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = """ & Me.cmbRechOrigin & """ "
End If


Affiches ton SQL et SQLWhere dans la fenêtre d'éxécution par un
Debug.Print SQL:Stop
Debug.Print SQLWhere: Stop
que tu mets avant Me.lblStats.Caption=...
ca te permet de voir ce que contient chacune des chaines.

Toutefois, tu utilises des combo. N'oublies pas que celles-ci peuvent
montrer du texte mais que c'est la colonne cachée qui est utilisée. Donc
vérifier le type de données de cette colonne car là tu traites toutes
les infos comme étant des chaines de caractères.

Bonsoir Eric et merci de cette réponse mais, malheureusement après divers
essais cela ne semble pas convenir, je reste avec mon problème sur le nom et
la description qui provoque une erreur sur les noms avec apostrophe. Si je
mets un espace après le 0 plus rien ne marche.
Je pense que le probleme est peut être sur le Me.lblStats.Caption =
DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*", "Recipe1") et si
j’essaye d’écrire ‘If Not Me.chkName’ ou ‘If Not Me.chkdescription’ comme ton
exemple cela ne marche plus.
Je suis bien dépassé par le sujet.
Merci de votre aide.
jfd





Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Description FROM Recipe1 Where
Recipe!RefRec <> 0"


If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class = """ & Me.txtRechClass & """ "

End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "

End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "

End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = """ & Me.cmbRechOrigin & """ "

End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub



Bonjour,

Corriges le SQL de départ dans Private Sub RefreshQuery()
Il manque un espace après le 0
SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "

puis pour les concaténations sur ce modèle:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If

Ca devrait le faire.

Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais ou
? Un peu d’aide serait la bienvenue.
Merci à tous

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
jfd
Bonsoir et merci Eric
Je vais étudier de plus près pour comprendre un peu mieux, mais cela semble
parfaitement convenir, désolé de mes erreurs et merci à toi et à beaucoup
d’autres sur le forum, de prendre le temps de répondre et de nous aider à
progresser.
jfd



Bonjour,

Je ne dis pas de mettre entre quote (') les if ... Then mais de doubler
les guillemets pour le passage des variables à ta chaine SQL.

Après le 0, il te faut un espace car comme tu concatènes la chaine SQL,
si tu ne mets pas l'espace après le 0 tu obtiendras quelque chose comme:
"SELECT RefRec, Name, .. FROM Recipe1 Where Recipe!RefRec <> 0AND ..."
Un espace en plus dans le SQL ne génère pas d'erreur, un espace en moins
OUI.

Ton code devrait être:

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "
If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like ""*" & Me.txtRechClass & "*"" "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like ""*" &
Me.txtRechDescription & "*"" "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like ""*" & Me.txtRechName & "*"" "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = """ & Me.cmbRechOrigin & """ "
End If


Affiches ton SQL et SQLWhere dans la fenêtre d'éxécution par un
Debug.Print SQL:Stop
Debug.Print SQLWhere: Stop
que tu mets avant Me.lblStats.Caption=...
ca te permet de voir ce que contient chacune des chaines.

Toutefois, tu utilises des combo. N'oublies pas que celles-ci peuvent
montrer du texte mais que c'est la colonne cachée qui est utilisée. Donc
vérifier le type de données de cette colonne car là tu traites toutes
les infos comme étant des chaines de caractères.

Bonsoir Eric et merci de cette réponse mais, malheureusement après divers
essais cela ne semble pas convenir, je reste avec mon problème sur le nom et
la description qui provoque une erreur sur les noms avec apostrophe. Si je
mets un espace après le 0 plus rien ne marche.
Je pense que le probleme est peut être sur le Me.lblStats.Caption =
DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*", "Recipe1") et si
j’essaye d’écrire ‘If Not Me.chkName’ ou ‘If Not Me.chkdescription’ comme ton
exemple cela ne marche plus.
Je suis bien dépassé par le sujet.
Merci de votre aide.
jfd





Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Description FROM Recipe1 Where
Recipe!RefRec <> 0"


If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class = """ & Me.txtRechClass & """ "

End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "

End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "

End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = """ & Me.cmbRechOrigin & """ "

End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub



Bonjour,

Corriges le SQL de départ dans Private Sub RefreshQuery()
Il manque un espace après le 0
SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0 "

puis pour les concaténations sur ce modèle:

If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = """ & Me.cmbRechCategory & """ "
End If

Ca devrait le faire.

Bonsoir
Petits problèmes dus à l’apostrophe dans une recherche multicritères, je
crois avoir compris que je dois doubler les guillemets quelque part mais ou
? Un peu d’aide serait la bienvenue.
Merci à tous

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT RefRec, Name, Class, Origin,Dat FROM Recipe1 Where
Recipe!RefRec <> 0"

If Not Me.chkClass Then
SQL = SQL & "And Recipe1!Class like '*" & Me.txtRechClass & "*' "
End If
If Not Me.chkCategory Then
SQL = SQL & "And Recipe1!Category = '" & Me.cmbRechCategory & "' "
End If
If Not Me.chkdescription Then
SQL = SQL & "And Recipe1!Description like '*" & Me.txtRechDescription &
"*' "
End If
If Not Me.chkName Then
SQL = SQL & "And Recipe1!Name like '*" & Me.txtRechName & "*' "
End If
If Not Me.chkOrigin Then
SQL = SQL & "And Recipe1!Origin = '" & Me.cmbRechOrigin & "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Recipe1", SQLWhere) & " / " & DCount("*",
"Recipe1")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr