Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucis
là-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dans
mon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVING
Count(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucis
là-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dans
mon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVING
Count(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucis
là-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dans
mon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVING
Count(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucislà-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dansmon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVINGCount(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%235VnsmVkDHA.2080@TK2MSFTNGP10.phx.gbl...
Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucis
là-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dans
mon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVING
Count(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucislà-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dansmon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVINGCount(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour Pierre
Merci pour ta réponse et la syntaxe à utiliser.
J'avais effectivement songé à utiliser des déclarations de chaîne texte
pour
les placer dans les critères de ma requête.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bmdng2$8g9$Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par
exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce
que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une
requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucislà-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dansmon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire
l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVINGCount(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour Pierre
Merci pour ta réponse et la syntaxe à utiliser.
J'avais effectivement songé à utiliser des déclarations de chaîne texte
pour
les placer dans les critères de ma requête.
Cordialement
Pascal
"Pierre Jagut" <jagut@geta.fr> a écrit dans le message de
news:bmdng2$8g9$1@s1.read.news.oleane.net...
Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par
exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce
que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%235VnsmVkDHA.2080@TK2MSFTNGP10.phx.gbl...
Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une
requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucis
là-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dans
mon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire
l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVING
Count(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Bonjour Pierre
Merci pour ta réponse et la syntaxe à utiliser.
J'avais effectivement songé à utiliser des déclarations de chaîne texte
pour
les placer dans les critères de ma requête.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bmdng2$8g9$Bonjour,
En VBA, il suffit de générer une chaîne de caractère (strSQL par
exemple)
qui contient ta requête SQL, et de l'affecter à la requête Access
"MaRequete" de la manière suivante :
CurrentDb.QueryDefs("MaRequete").SQL = strSQL
Tu contruis ta requête dans strSQL avec des if, des select, et tout ce
que
tu veux en VBA avant.
J'espère que cela va t'aider.
Pierre.
"papou" <nspm> a écrit dans le message de
news:%Bonjour à toutes et à tous
Je cherche par VBA à inscrire des critères dans les champs d'une
requête
vierge (de critères !)
Certains de mes critères sont des valeurs dans un formulaire, pas de
soucislà-dessus.
En revanche, comment inscrire une expression lorsque je coche une case
dansmon formulaire ?
Exemple :
je coche une case Recherche de doublons et je veux inscrire
l'expression
suivante en critère dans le champ Name :
In (SELECT [Name] FROM[TA_Inventaire_Fichiers] As Tmp GROUP BY [Name]
HAVINGCount(*)>1 )
Merci d'avance pour votre aide
Cordialement
Pascal
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value = RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value = RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:bmdsum$efb$1@muguet.sncf.fr...
Bonjour
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value = RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultat
de la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pour
avoir la requête, tu peux modifier la requête complète avec l'assistant et
éditer le mode SQL. Le but est de construire cette chaîne de caractère SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construit
la requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " & _
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opère
sur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
le
souhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultat
de la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pour
avoir la requête, tu peux modifier la requête complète avec l'assistant et
éditer le mode SQL. Le but est de construire cette chaîne de caractère SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construit
la requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " & _
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opère
sur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
le
souhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:uTaV8GXkDHA.1004@TK2MSFTNGP09.phx.gbl...
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:bmdsum$efb$1@muguet.sncf.fr...
Bonjour
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultat
de la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pour
avoir la requête, tu peux modifier la requête complète avec l'assistant et
éditer le mode SQL. Le but est de construire cette chaîne de caractère SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construit
la requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " & _
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opère
sur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
le
souhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
de
critères à fournir à ma requête, et que donc l'instruction SQL ne va pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
mon
formulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bme1hk$git$Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultatde la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pouravoir la requête, tu peux modifier la requête complète avec l'assistant
et
éditer le mode SQL. Le but est de construire cette chaîne de caractère
SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construitla requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " &
_
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opèresur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
lesouhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultatque j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
decritères à fournir à ma requête, et que donc l'instruction SQL ne va
pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
mon
formulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" <jagut@geta.fr> a écrit dans le message de
news:bme1hk$git$1@s1.read.news.oleane.net...
Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultat
de la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pour
avoir la requête, tu peux modifier la requête complète avec l'assistant
et
éditer le mode SQL. Le but est de construire cette chaîne de caractère
SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construit
la requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " &
_
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opère
sur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
le
souhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:uTaV8GXkDHA.1004@TK2MSFTNGP09.phx.gbl...
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
de
critères à fournir à ma requête, et que donc l'instruction SQL ne va
pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" <jessy.sempere@prg.sncf.fr> a écrit dans le message de
news:bmdsum$efb$1@muguet.sncf.fr...
Bonjour
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
mon
formulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bme1hk$git$Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultatde la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requête
de sélection (avec le SELECT * FROM ...), et pas seulement les filtres.
Pouravoir la requête, tu peux modifier la requête complète avec l'assistant
et
éditer le mode SQL. Le but est de construire cette chaîne de caractère
SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construitla requête SQL, l'affecte à "Rq_Analyse" et actualise le sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] " &
_
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opèresur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si tu
lesouhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultatque j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs éléments
decritères à fournir à ma requête, et que donc l'instruction SQL ne va
pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM [TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
En complément à la réponse de Pierre, je rajouterais juste
de faire attention au ";"
Si tu n'as pas de critère, ton ";" sera juste après ta clause From TaTable
par contre si tu as un critère, le ";" sera après le critère...
En gros le ";" devra toujours être en dernier.
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"papou" <nspm> a écrit dans le message news:
#Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que
critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
monformulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bme1hk$git$Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
necontient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultatde la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requêtede sélection (avec le SELECT * FROM ...), et pas seulement les
filtres.
Pouravoir la requête, tu peux modifier la requête complète avec
l'assistant
etéditer le mode SQL. Le but est de construire cette chaîne de caractère
SQLen VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source
une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construitla requête SQL, l'affecte à "Rq_Analyse" et actualise le
sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] "
&
_"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opèresur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si
tu
lesouhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultatque j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs
éléments
decritères à fournir à ma requête, et que donc l'instruction SQL ne va
pasaller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
quiintégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message
de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM
[TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
En complément à la réponse de Pierre, je rajouterais juste
de faire attention au ";"
Si tu n'as pas de critère, ton ";" sera juste après ta clause From TaTable
par contre si tu as un critère, le ";" sera après le critère...
En gros le ";" devra toujours être en dernier.
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"papou" <nspm> a écrit dans le message news:
#hQTmEYkDHA.2432@TK2MSFTNGP10.phx.gbl...
Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que
critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
mon
formulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" <jagut@geta.fr> a écrit dans le message de
news:bme1hk$git$1@s1.read.news.oleane.net...
Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
ne
contient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultat
de la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requête
de sélection (avec le SELECT * FROM ...), et pas seulement les
filtres.
Pour
avoir la requête, tu peux modifier la requête complète avec
l'assistant
et
éditer le mode SQL. Le but est de construire cette chaîne de caractère
SQL
en VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source
une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construit
la requête SQL, l'affecte à "Rq_Analyse" et actualise le
sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] "
&
_
"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opère
sur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si
tu
le
souhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:uTaV8GXkDHA.1004@TK2MSFTNGP09.phx.gbl...
Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultat
que j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs
éléments
de
critères à fournir à ma requête, et que donc l'instruction SQL ne va
pas
aller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
String
dans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
qui
intégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" <jessy.sempere@prg.sncf.fr> a écrit dans le message
de
news:bmdsum$efb$1@muguet.sncf.fr...
Bonjour
Ca ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM
[TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
En complément à la réponse de Pierre, je rajouterais juste
de faire attention au ";"
Si tu n'as pas de critère, ton ";" sera juste après ta clause From TaTable
par contre si tu as un critère, le ";" sera après le critère...
En gros le ";" devra toujours être en dernier.
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"papou" <nspm> a écrit dans le message news:
#Pierre
Merci beaucoup pour ton aide précieuse.
Tu as assez bien compris ma problématique : en fait je veux cumuler
l'ensemble des éléments qui peuvent être renseignés en tant que
critères.
Exemple :
Je vais demander
la liste des éléments en doublon
ET
qui ont une date inférieure ou égale à 01/01/2000
ET
qui ont un type égale à "Machin"
ET
qui ont un niveau égal à 3
etc.
Le résultat de cette requête va être exporté vers un fichier Excel et/ou
imprimé dans un état Access
Je vais donc mettre en pratique ton conseil et créer une SUB attachée à
monformulaire de manière à "concaténer" l'ensemble des critères SQL.
Cordialement
Pascal
"Pierre Jagut" a écrit dans le message de
news:bme1hk$git$Re-bonjour,
Si j'ai bien compris, si la case est cochée, le résultat de la requête
necontient que des doublons, sinon il contient tous les enregistrements
respectant les critères des autres contrôles de ton forumlaire. Le
résultatde la requête s'affiche dans un sous-formulaire de ton formulaire.
Je pense que ton problème vient du fait qu'il faut écrire toute la
requêtede sélection (avec le SELECT * FROM ...), et pas seulement les
filtres.
Pouravoir la requête, tu peux modifier la requête complète avec
l'assistant
etéditer le mode SQL. Le but est de construire cette chaîne de caractère
SQLen VBA.
Je crois que je ferais ainsi :
Le sous-formulaire, appelé "Analyse_SF" (par exemple) a pour source
une
requête appelée "Rq_Analyse".
Je créerais un sub "MAJ_SF" (par exemple) dans le formulaire : il
construitla requête SQL, l'affecte à "Rq_Analyse" et actualise le
sous-formulaire
"Analyse_SF".
dim strSQL as string, strWHERE as string
strWHERE=""
if Me.Case_Duplicate = True then
strWHERE= "[Name] In (SELECT [Name] FROM [TA_Inventaire_Fichiers] "
&
_"As Tmp GROUP BY [Name] HAVING Count(*)>1)"
endif
' exemple de filtrage complémentaire pour un contrôle "Controle1" qui
opèresur le champ "Champ1"
if not (isnull(Me.Controle1)) then
if strWHERE <> "" then
strWHERE = strWHERE & " AND "
endif
strWHERE = strWHERE & "[Champ1] is like " & Me.Controle1 & "*"
endif
'... etc pour tous les controles qui opèrent un filtrage
strSQL = "SELECT * FROM [TA_Inventaire_Fichiers]"
if strWHERE <> "" then
strSQL = strSQL & " WHERE " & strWHERE
endif
CurrentDb.QueryDefs("Rq_Analyse").SQL = strSQL
DoCmd.Requery("Analyse_SF")
Voilà pour le sub "MAJ_SF" (il peut faire d'autres chose également si
tu
lesouhaites).
Sur l'événement MAJ de chaque contrôle, tu exécutes ce sub : le
sous-formulaire devrait se mettre à jour.
J'espère que cela ira avec cela.
Pierre.
"papou" <nspm> a écrit dans le message de
news:Bonjour Jessy
Merci pour ta réponse, j'ai déjà fait cela, mais ce n'est pas le
résultatque j'attends.
J'ai omis de bien préciser qu'en fait je vais avoir plusieurs
éléments
decritères à fournir à ma requête, et que donc l'instruction SQL ne va
pasaller puisqu'elle exécute ma requête avec un seul critère comme dans
l'exemple fourni.
Ne serait-il pas tout simplement possible d'aller inscrire ma valeur
Stringdans le critère de ma requête ?
J'ai essayé avec un
CurrentDb.QueryDefs("Rq_Analyse").Fields("Name").Value > > RechercheDoublons
mais ça ne marche pas.
Ou alors dois-je utiliser une requête SQL beaucoup plus complète et
quiintégrerait l'ensemble des critères fournis dans mon formulaire ?
Merci pour ton aide
Cordialement
Pascal
"Jessy SEMPERE" a écrit dans le message
de
news:bmdsum$efb$BonjourCa ne marche pas, j'ai une erreur 3129 avec ce message
"Instruction SQL non valide, DELETE, INSERT, etc...attendus"
Remplaces ta ligne :
RechercheDoublons = "In(SELECT [Name] FROM
[TA_Inventaire_Fichiers]
As Tmp GROUP BY [Name] HAVING Count(*)>1) "
par :
RechercheDoublons = "SELECT Name " _
& "FROM TA_Inventaire_Fichiers " _
& "GROUP BY Name " _
& "HAVING Count(Name)>1;"
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Jessy
Donc si je comprend bien, le point-virgule doit figurer après chaque
critère
ajouté ?
Merci pour ton aide
Cordialement
Pascal
Jessy
Donc si je comprend bien, le point-virgule doit figurer après chaque
critère
ajouté ?
Merci pour ton aide
Cordialement
Pascal
Jessy
Donc si je comprend bien, le point-virgule doit figurer après chaque
critère
ajouté ?
Merci pour ton aide
Cordialement
Pascal