Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Automatisation de création de requête

4 réponses
Avatar
Chevrot
Bonjour et merci d'avance.
Sur une base Access 2003, je rencontre le pb suivant:
J'ai une table appelée "DemRS"
J'ai une requête appelée "C Finess" qui reprend tous les champs de la table
"DemRS"
Je souhaite écrire une procédure qui crée uen requête appelée "C 440041580",
dans laquelle seuls les enregistrements pour laquelle le champ "ETA-NUM"
(champ texte) prend les valeurs '440041580 ou '440000479' ou '440000545' ou
'440000602' ou ''440023364
Voila ce que j'ai essayé:
Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("C 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
J'ai une répose d'erreur d'éxécution 3131 "Erreur de syntaxe dans la clause
FROM
Merci de m'aider

4 réponses

Avatar
Eric
Bonjour,

Il doit manquer un espace entre le nom de la table et la clause where
car par principe ACCESS SQL colle le ; juste après le dernier caractère
de la requête.
Essaies:
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & " WHERE ([DemRS].[ETA-NUM] like '440041580' ..."

D'autre part, n'aurais-tu pas une erreur dans
Left(db.QueryDefs("CFiness").SQL,..)
Ne serait-ce point Left(db.QueryDefs("C Finess").SQL,..)


Bonjour et merci d'avance.
Sur une base Access 2003, je rencontre le pb suivant:
J'ai une table appelée "DemRS"
J'ai une requête appelée "C Finess" qui reprend tous les champs de la table
"DemRS"
Je souhaite écrire une procédure qui crée uen requête appelée "C 440041580",
dans laquelle seuls les enregistrements pour laquelle le champ "ETA-NUM"
(champ texte) prend les valeurs '440041580 ou '440000479' ou '440000545' ou
'440000602' ou ''440023364
Voila ce que j'ai essayé:
Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("C 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
J'ai une répose d'erreur d'éxécution 3131 "Erreur de syntaxe dans la clause
FROM
Merci de m'aider


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

Avatar
Chevrot
Merci de ta réponse
J'ai bien corrigé le problème CFiness en C Finess.
Par contre, cela ne marche toujours pas. Ce qui me surprends, c'est qu'une
autre procédure équivalente, faisant appel à une requête A reliée à des
tables attachées fonctionne sans problème: les voici:

Sub Création_AAC_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL, ";") -
1)
SQL = SQL & "WHERE ([PMSI 2000 A].[ETA-NUM] like '440041580' OR [PMSI
2000 A].[ETA-NUM] like '440000479' OR [PMSI 2000 A].[ETA-NUM] like
'440000545' OR [PMSI 2000 A].[ETA-NUM] like '440000602' OR [PMSI 2000
A].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("C Finess").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("E440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

que faire?


Bonjour,

Il doit manquer un espace entre le nom de la table et la clause where
car par principe ACCESS SQL colle le ; juste après le dernier caractère
de la requête.
Essaies:
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & " WHERE ([DemRS].[ETA-NUM] like '440041580' ..."

D'autre part, n'aurais-tu pas une erreur dans
Left(db.QueryDefs("CFiness").SQL,..)
Ne serait-ce point Left(db.QueryDefs("C Finess").SQL,..)


Bonjour et merci d'avance.
Sur une base Access 2003, je rencontre le pb suivant:
J'ai une table appelée "DemRS"
J'ai une requête appelée "C Finess" qui reprend tous les champs de la table
"DemRS"
Je souhaite écrire une procédure qui crée uen requête appelée "C 440041580",
dans laquelle seuls les enregistrements pour laquelle le champ "ETA-NUM"
(champ texte) prend les valeurs '440041580 ou '440000479' ou '440000545' ou
'440000602' ou ''440023364
Voila ce que j'ai essayé:
Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("C 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
J'ai une répose d'erreur d'éxécution 3131 "Erreur de syntaxe dans la clause
FROM
Merci de m'aider


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




Avatar
Eric
re,

Merci de ta réponse
J'ai bien corrigé le problème CFiness en C Finess.


As-tu mis un espace avant le mot WHERE juste après le " d'ouverture ?

Si tu fais debug.print SQL tu dois obtenir quelque chose comme :
FROM demRSWHERE ... alors qu'il faudrait FROM DemRS WHERE ...




Par contre, cela ne marche toujours pas. Ce qui me surprends, c'est qu'une
autre procédure équivalente, faisant appel à une requête A reliée à des
tables attachées fonctionne sans problème: les voici:

Sub Création_AAC_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL, ";") -
1)
SQL = SQL & "WHERE ([PMSI 2000 A].[ETA-NUM] like '440041580' OR [PMSI
2000 A].[ETA-NUM] like '440000479' OR [PMSI 2000 A].[ETA-NUM] like
'440000545' OR [PMSI 2000 A].[ETA-NUM] like '440000602' OR [PMSI 2000
A].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("C Finess").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("E440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

que faire?



Bonjour,

Il doit manquer un espace entre le nom de la table et la clause where
car par principe ACCESS SQL colle le ; juste après le dernier caractère
de la requête.
Essaies:
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & " WHERE ([DemRS].[ETA-NUM] like '440041580' ..."

D'autre part, n'aurais-tu pas une erreur dans
Left(db.QueryDefs("CFiness").SQL,..)
Ne serait-ce point Left(db.QueryDefs("C Finess").SQL,..)



Bonjour et merci d'avance.
Sur une base Access 2003, je rencontre le pb suivant:
J'ai une table appelée "DemRS"
J'ai une requête appelée "C Finess" qui reprend tous les champs de la table
"DemRS"
Je souhaite écrire une procédure qui crée uen requête appelée "C 440041580",
dans laquelle seuls les enregistrements pour laquelle le champ "ETA-NUM"
(champ texte) prend les valeurs '440041580 ou '440000479' ou '440000545' ou
'440000602' ou ''440023364
Voila ce que j'ai essayé:
Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("C 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
J'ai une répose d'erreur d'éxécution 3131 "Erreur de syntaxe dans la clause
FROM
Merci de m'aider


--
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
Chevrot
Merci infiniment et bon week-end; peut être à la prochaine.

Alain


re,

Merci de ta réponse
J'ai bien corrigé le problème CFiness en C Finess.


As-tu mis un espace avant le mot WHERE juste après le " d'ouverture ?

Si tu fais debug.print SQL tu dois obtenir quelque chose comme :
FROM demRSWHERE ... alors qu'il faudrait FROM DemRS WHERE ...




Par contre, cela ne marche toujours pas. Ce qui me surprends, c'est qu'une
autre procédure équivalente, faisant appel à une requête A reliée à des
tables attachées fonctionne sans problème: les voici:

Sub Création_AAC_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("A").SQL, InStrRev(db.QueryDefs("A").SQL, ";") -
1)
SQL = SQL & "WHERE ([PMSI 2000 A].[ETA-NUM] like '440041580' OR [PMSI
2000 A].[ETA-NUM] like '440000479' OR [PMSI 2000 A].[ETA-NUM] like
'440000545' OR [PMSI 2000 A].[ETA-NUM] like '440000602' OR [PMSI 2000
A].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("A 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("C Finess").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("E440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub

que faire?



Bonjour,

Il doit manquer un espace entre le nom de la table et la clause where
car par principe ACCESS SQL colle le ; juste après le dernier caractère
de la requête.
Essaies:
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & " WHERE ([DemRS].[ETA-NUM] like '440041580' ..."

D'autre part, n'aurais-tu pas une erreur dans
Left(db.QueryDefs("CFiness").SQL,..)
Ne serait-ce point Left(db.QueryDefs("C Finess").SQL,..)



Bonjour et merci d'avance.
Sur une base Access 2003, je rencontre le pb suivant:
J'ai une table appelée "DemRS"
J'ai une requête appelée "C Finess" qui reprend tous les champs de la table
"DemRS"
Je souhaite écrire une procédure qui crée uen requête appelée "C 440041580",
dans laquelle seuls les enregistrements pour laquelle le champ "ETA-NUM"
(champ texte) prend les valeurs '440041580 ou '440000479' ou '440000545' ou
'440000602' ou ''440023364
Voila ce que j'ai essayé:
Sub Création_AAC_Pénétration_440041580_52001()
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("CFiness").SQL, InStrRev(db.QueryDefs("C
Finess").SQL, ";") - 1)
SQL = SQL & "WHERE ([DemRS].[ETA-NUM] like '440041580' OR
[DemRS].[ETA-NUM] like '440000479' OR [DemRS].[ETA-NUM] like '440000545' OR
[DemRS].[ETA-NUM] like '440000602' OR [DemRS].[ETA-NUM] like '440023364')"
' Crée la requête et l'ajoute à la collection des requêtes
Set rq = db.CreateQueryDef("C 440041580", SQL)
Set rq = Nothing
Set db = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
J'ai une répose d'erreur d'éxécution 3131 "Erreur de syntaxe dans la clause
FROM
Merci de m'aider


--
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