Bonjour,
Il y a quelques temps tu m'avais dit comment faire une=20
s=E9lection multiple dans un =E9tat, depuis j'ai fait un=20
Etat pricipal avec des sous-=E9tats mais je n'arrive pas =E0=20
inclure les formules que tu m'avais donn=E9.
Pour m=E9moire voici ta solution:
Je commence par les faciles.
2).
SELECT * FROM tatable WHERE NomD=E9but=3DDate( )
(j'imagine que NomD=E9but est le champ "date pr=E9vue =E0=20
laquelle
l'employ=E9 commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomD=E9but=3DDate( )
Mais on ne sait pas si une personne est assign=E9 =E0=20
deux travaux en m=EAme
temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmploy=E9=20
FROM tatable WHERE
NomD=E9but=3DDate() )
par contre founira le nombe distincts d'employ=E9s qui=20
commenceraient
demain.
4).
SELECT * FROM tatable WHERE Datepr=E9vueD=E9but=3DDate( ) +=20
1
Voir 2. pour autres commentaires.
6).
pas la moindre id=E9e de ce qui est demand=E9, l=E0,=20
d=E9sol=E9. J'esp=E8re ne
pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomD=E9but=20
AND Nz(DateFin,
NomDatepr=E9vuFin)
Je suppose que DateFin est NULL tant que le contrat=20
n'est pas
effectivement termn=E9. Si NomDatePr=E9vuFin n'est pas mise =E0=20
jour
quotidionnellement, essayer plut=F4t quelque chose comme
SELECT * FROM tatable WHERE Date() >=3D NomD=E9but AND=20
DateFin IS NULL
soit, que le contrat a commenc=E9, mais n'est pas encore=20
termin=E9 (DateFin IS
NULL impliquant la derni=E8re observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN=20
NomD=E9but AND Nz(DateFin,
NomDatePr=E9vuFin))
3).
Celle-ci est un peu plus compliqu=E9e. Je vais=20
proc=E9der en plusieurs
petites =E9tapes. D'une part qui est =E0 consid=E9r=E9? question=20
b=EAte? pas
vraiment, par exemple, moi, je ne serai pas parmi ceux=20
qui travaillent, dans
TA liste, demain. Donc,
SELECT DISTINCT NomEmploy=E9 FROM tatable
est une premi=E8re requ=EAte fournissant "l'univers" sur=20
lequel on est
int=E9ress=E9. J'appelle cette requ=EAte (table, si elle existe=20
d=E9j=E0) Employ=E9s.
Ensuite, ce qui est facile, c'est de trouver ceux qui=20
travaillent
demain. C"est le cas 1). Appelons cette requ=EAtes =20
Actifs (comme dans
employ=E9s actifs).
La liste des employ=E9s innactifs demain est donc la=20
liste des employ=E9s
qui sont dans Employ=E9s, mais non dans Actifs. Bingo, il y=20
a un Wizard qui le
fait, le code qu'il g=E9n=E8re devrait ressembler =E0:
SELECT Employ=E9s.* FROM Employ=E9s LEFT JOIN Actifs ON=20
Employ=E9s.NomEmploy=E9
=3DActifs.NomEmploy=E9 WHERE Actifs.NomEmploy=E9 IS NULL
=C0 noter que cela ne signifie pas qu'un employ=E9 ne=20
sera pas actif DEMAIN,
seulement qu'il ne l'est pas, aujourd'hui.
=C0 noter qu'en d=E9pit des apparences, quand on regarde=20
les d=E9tails, il
demeure beaucoup d'impr=E9cisions qui sont reli=E9es aux=20
politiques et
proc=E9dures de la compagnie.
Je ne sais pas "faire une sélection multiple dans un état", peut-être un typo, je ne sais que faire une sélection multiple dans une zone de liste d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui peuvent servir à faire des requêtes (queries) et on peut les utiliser là où on peut utiliser une table, ou une requête. Entre autres, comme RecordSource, et comme RowSource (voir ces propriétés pour un formulaire, pour le premier, et pour une zone de liste ou un combo box, pour la seconde) par exemple. On peut modifier le RecordSource d'un état sur ouverture, dans les procédures onOpen et onLoad, si ma mémoire m'est fidèle, mais pas ailleurs. On peut également utilser les requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour les fonctions de domaine, genre DSum, DCount, ..., le second argument ne peut pas être un énoncé SQL, mais doit être une requête sauvegargée (ou une table).
Si je n'ai pas répondu à la question, faire suivre dans ce filet de conversation, svp.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message news:082b01c3d9c7$db915540$ Bonjour, Il y a quelques temps tu m'avais dit comment faire une sélection multiple dans un état, depuis j'ai fait un Etat pricipal avec des sous-états mais je n'arrive pas à inclure les formules que tu m'avais donné. Pour mémoire voici ta solution: Je commence par les faciles.
2). SELECT * FROM tatable WHERE NomDébutÚte( )
(j'imagine que NomDébut est le champ "date prévue à laquelle l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )
Mais on ne sait pas si une personne est assigné à deux travaux en même temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé FROM tatable WHERE NomDébutÚte() )
par contre founira le nombe distincts d'employés qui commenceraient demain.
4).
SELECT * FROM tatable WHERE DateprévueDébutÚte( ) + 1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là, désolé. J'espère ne pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut AND Nz(DateFin, NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat n'est pas effectivement termné. Si NomDatePrévuFin n'est pas mise à jour quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore terminé (DateFin IS NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut AND Nz(DateFin, NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais procéder en plusieurs petites étapes. D'une part qui est à considéré? question bête? pas vraiment, par exemple, moi, je ne serai pas parmi ceux qui travaillent, dans TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur lequel on est intéressé. J'appelle cette requête (table, si elle existe déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui travaillent demain. C"est le cas 1). Appelons cette requêtes Actifs (comme dans employés actifs).
La liste des employés innactifs demain est donc la liste des employés qui sont dans Employés, mais non dans Actifs. Bingo, il y a un Wizard qui le fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON Employés.NomEmployé ¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne sera pas actif DEMAIN, seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde les détails, il demeure beaucoup d'imprécisions qui sont reliées aux politiques et procédures de la compagnie.
Espérant être utile, Vanderghast, Access MVP
Merci de me dépanner. Luis
Salut,
Je ne sais pas "faire une sélection multiple dans un état", peut-être
un typo, je ne sais que faire une sélection multiple dans une zone de liste
d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui peuvent servir à faire
des requêtes (queries) et on peut les utiliser là où on peut utiliser une
table, ou une requête. Entre autres, comme RecordSource, et comme RowSource
(voir ces propriétés pour un formulaire, pour le premier, et pour une zone
de liste ou un combo box, pour la seconde) par exemple. On peut modifier le
RecordSource d'un état sur ouverture, dans les procédures onOpen et onLoad,
si ma mémoire m'est fidèle, mais pas ailleurs. On peut également utilser les
requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour les fonctions de
domaine, genre DSum, DCount, ..., le second argument ne peut pas être un
énoncé SQL, mais doit être une requête sauvegargée (ou une table).
Si je n'ai pas répondu à la question, faire suivre dans ce filet de
conversation, svp.
Espérant être utile,
Vanderghast, Access MVP
"Luis" <anonymous@discussions.microsoft.com> wrote in message
news:082b01c3d9c7$db915540$a501280a@phx.gbl...
Bonjour,
Il y a quelques temps tu m'avais dit comment faire une
sélection multiple dans un état, depuis j'ai fait un
Etat pricipal avec des sous-états mais je n'arrive pas à
inclure les formules que tu m'avais donné.
Pour mémoire voici ta solution:
Je commence par les faciles.
2).
SELECT * FROM tatable WHERE NomDébutÚte( )
(j'imagine que NomDébut est le champ "date prévue à
laquelle
l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )
Mais on ne sait pas si une personne est assigné à
deux travaux en même
temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé
FROM tatable WHERE
NomDébutÚte() )
par contre founira le nombe distincts d'employés qui
commenceraient
demain.
4).
SELECT * FROM tatable WHERE DateprévueDébutÚte( ) +
1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là,
désolé. J'espère ne
pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut
AND Nz(DateFin,
NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat
n'est pas
effectivement termné. Si NomDatePrévuFin n'est pas mise à
jour
quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore
terminé (DateFin IS
NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN
NomDébut AND Nz(DateFin,
NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais
procéder en plusieurs
petites étapes. D'une part qui est à considéré? question
bête? pas
vraiment, par exemple, moi, je ne serai pas parmi ceux
qui travaillent, dans
TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur
lequel on est
intéressé. J'appelle cette requête (table, si elle existe
déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui
travaillent
demain. C"est le cas 1). Appelons cette requêtes
Actifs (comme dans
employés actifs).
La liste des employés innactifs demain est donc la
liste des employés
qui sont dans Employés, mais non dans Actifs. Bingo, il y
a un Wizard qui le
fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé
¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne
sera pas actif DEMAIN,
seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde
les détails, il
demeure beaucoup d'imprécisions qui sont reliées aux
politiques et
procédures de la compagnie.
Je ne sais pas "faire une sélection multiple dans un état", peut-être un typo, je ne sais que faire une sélection multiple dans une zone de liste d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui peuvent servir à faire des requêtes (queries) et on peut les utiliser là où on peut utiliser une table, ou une requête. Entre autres, comme RecordSource, et comme RowSource (voir ces propriétés pour un formulaire, pour le premier, et pour une zone de liste ou un combo box, pour la seconde) par exemple. On peut modifier le RecordSource d'un état sur ouverture, dans les procédures onOpen et onLoad, si ma mémoire m'est fidèle, mais pas ailleurs. On peut également utilser les requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour les fonctions de domaine, genre DSum, DCount, ..., le second argument ne peut pas être un énoncé SQL, mais doit être une requête sauvegargée (ou une table).
Si je n'ai pas répondu à la question, faire suivre dans ce filet de conversation, svp.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message news:082b01c3d9c7$db915540$ Bonjour, Il y a quelques temps tu m'avais dit comment faire une sélection multiple dans un état, depuis j'ai fait un Etat pricipal avec des sous-états mais je n'arrive pas à inclure les formules que tu m'avais donné. Pour mémoire voici ta solution: Je commence par les faciles.
2). SELECT * FROM tatable WHERE NomDébutÚte( )
(j'imagine que NomDébut est le champ "date prévue à laquelle l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )
Mais on ne sait pas si une personne est assigné à deux travaux en même temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé FROM tatable WHERE NomDébutÚte() )
par contre founira le nombe distincts d'employés qui commenceraient demain.
4).
SELECT * FROM tatable WHERE DateprévueDébutÚte( ) + 1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là, désolé. J'espère ne pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut AND Nz(DateFin, NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat n'est pas effectivement termné. Si NomDatePrévuFin n'est pas mise à jour quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore terminé (DateFin IS NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut AND Nz(DateFin, NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais procéder en plusieurs petites étapes. D'une part qui est à considéré? question bête? pas vraiment, par exemple, moi, je ne serai pas parmi ceux qui travaillent, dans TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur lequel on est intéressé. J'appelle cette requête (table, si elle existe déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui travaillent demain. C"est le cas 1). Appelons cette requêtes Actifs (comme dans employés actifs).
La liste des employés innactifs demain est donc la liste des employés qui sont dans Employés, mais non dans Actifs. Bingo, il y a un Wizard qui le fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON Employés.NomEmployé ¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne sera pas actif DEMAIN, seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde les détails, il demeure beaucoup d'imprécisions qui sont reliées aux politiques et procédures de la compagnie.
Espérant être utile, Vanderghast, Access MVP
Merci de me dépanner. Luis
Luis
Bonjour, Voilà ou est le problème:
Si j'introduis: SELECT * FROM tatable WHERE NomDébutÚte( )
dans la source contrôle, j'ai ce premier message: "Cette expression comporte une sous-requête erronée. Placez la sous requête entre parenthèses."
(SELECT * FROM tatable WHERE NomDébutÚte( ))
La voilà entre parenthèses. Mais lorsque j'ouvre le formulaire, j'ai un avis: "Entrez la valeur du paramètre (SELECT * FROM tatable WHERE NomDébutÚte( ))"
C'est pourquoi je tourne en rond. Qu'est-ce qui est faux? Merci pour ton aide. Luis
-----Message d'origine----- Salut,
Je ne sais pas "faire une sélection multiple dans un état", peut-être
un typo, je ne sais que faire une sélection multiple dans une zone de liste
d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui peuvent servir à faire
des requêtes (queries) et on peut les utiliser là où on peut utiliser une
table, ou une requête. Entre autres, comme RecordSource, et comme RowSource
(voir ces propriétés pour un formulaire, pour le premier, et pour une zone
de liste ou un combo box, pour la seconde) par exemple. On peut modifier le
RecordSource d'un état sur ouverture, dans les procédures onOpen et onLoad,
si ma mémoire m'est fidèle, mais pas ailleurs. On peut également utilser les
requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour les fonctions de
domaine, genre DSum, DCount, ..., le second argument ne peut pas être un
énoncé SQL, mais doit être une requête sauvegargée (ou une table).
Si je n'ai pas répondu à la question, faire suivre dans ce filet de
conversation, svp.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message
news:082b01c3d9c7$db915540$ Bonjour, Il y a quelques temps tu m'avais dit comment faire une sélection multiple dans un état, depuis j'ai fait un Etat pricipal avec des sous-états mais je n'arrive pas à inclure les formules que tu m'avais donné. Pour mémoire voici ta solution: Je commence par les faciles.
2). SELECT * FROM tatable WHERE NomDébutÚte( )
(j'imagine que NomDébut est le champ "date prévue à laquelle l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )
Mais on ne sait pas si une personne est assigné à deux travaux en même temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé FROM tatable WHERE NomDébutÚte() )
par contre founira le nombe distincts d'employés qui commenceraient demain.
4).
SELECT * FROM tatable WHERE DateprévueDébutÚte( ) + 1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là, désolé. J'espère ne pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut AND Nz(DateFin, NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat n'est pas effectivement termné. Si NomDatePrévuFin n'est pas mise à jour quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore terminé (DateFin IS NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut AND Nz(DateFin, NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais procéder en plusieurs petites étapes. D'une part qui est à considéré? question bête? pas vraiment, par exemple, moi, je ne serai pas parmi ceux qui travaillent, dans TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur lequel on est intéressé. J'appelle cette requête (table, si elle existe déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui travaillent demain. C"est le cas 1). Appelons cette requêtes Actifs (comme dans employés actifs).
La liste des employés innactifs demain est donc la liste des employés qui sont dans Employés, mais non dans Actifs. Bingo, il y a un Wizard qui le fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON Employés.NomEmployé ¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne sera pas actif DEMAIN, seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde les détails, il demeure beaucoup d'imprécisions qui sont reliées aux politiques et procédures de la compagnie.
Espérant être utile, Vanderghast, Access MVP
Merci de me dépanner. Luis
.
Bonjour,
Voilà ou est le problème:
Si j'introduis:
SELECT * FROM tatable WHERE NomDébut=Date( )
dans la source contrôle, j'ai ce premier message:
"Cette expression comporte une sous-requête erronée.
Placez la sous requête entre parenthèses."
(SELECT * FROM tatable WHERE NomDébut=Date( ))
La voilà entre parenthèses.
Mais lorsque j'ouvre le formulaire, j'ai un avis:
"Entrez la valeur du paramètre
(SELECT * FROM tatable WHERE NomDébut=Date( ))"
C'est pourquoi je tourne en rond.
Qu'est-ce qui est faux?
Merci pour ton aide.
Luis
-----Message d'origine-----
Salut,
Je ne sais pas "faire une sélection multiple dans
un état", peut-être
un typo, je ne sais que faire une sélection multiple
dans une zone de liste
d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui
peuvent servir à faire
des requêtes (queries) et on peut les utiliser là où on
peut utiliser une
table, ou une requête. Entre autres, comme RecordSource,
et comme RowSource
(voir ces propriétés pour un formulaire, pour le
premier, et pour une zone
de liste ou un combo box, pour la seconde) par exemple.
On peut modifier le
RecordSource d'un état sur ouverture, dans les
procédures onOpen et onLoad,
si ma mémoire m'est fidèle, mais pas ailleurs. On peut
également utilser les
requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour
les fonctions de
domaine, genre DSum, DCount, ..., le second argument ne
peut pas être un
énoncé SQL, mais doit être une requête sauvegargée (ou
une table).
Si je n'ai pas répondu à la question, faire suivre
dans ce filet de
conversation, svp.
Espérant être utile,
Vanderghast, Access MVP
"Luis" <anonymous@discussions.microsoft.com> wrote in
message
news:082b01c3d9c7$db915540$a501280a@phx.gbl...
Bonjour,
Il y a quelques temps tu m'avais dit comment faire une
sélection multiple dans un état, depuis j'ai fait un
Etat pricipal avec des sous-états mais je n'arrive pas à
inclure les formules que tu m'avais donné.
Pour mémoire voici ta solution:
Je commence par les faciles.
2).
SELECT * FROM tatable WHERE NomDébut=Date( )
(j'imagine que NomDébut est le champ "date prévue à
laquelle
l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébut=Date( )
Mais on ne sait pas si une personne est assigné à
deux travaux en même
temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé
FROM tatable WHERE
NomDébut=Date() )
par contre founira le nombe distincts d'employés qui
commenceraient
demain.
4).
SELECT * FROM tatable WHERE DateprévueDébut=Date( ) +
1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là,
désolé. J'espère ne
pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut
AND Nz(DateFin,
NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat
n'est pas
effectivement termné. Si NomDatePrévuFin n'est pas mise à
jour
quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore
terminé (DateFin IS
NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN
NomDébut AND Nz(DateFin,
NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais
procéder en plusieurs
petites étapes. D'une part qui est à considéré? question
bête? pas
vraiment, par exemple, moi, je ne serai pas parmi ceux
qui travaillent, dans
TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur
lequel on est
intéressé. J'appelle cette requête (table, si elle existe
déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui
travaillent
demain. C"est le cas 1). Appelons cette requêtes
Actifs (comme dans
employés actifs).
La liste des employés innactifs demain est donc la
liste des employés
qui sont dans Employés, mais non dans Actifs. Bingo, il y
a un Wizard qui le
fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé
=Actifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne
sera pas actif DEMAIN,
seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde
les détails, il
demeure beaucoup d'imprécisions qui sont reliées aux
politiques et
procédures de la compagnie.
Si j'introduis: SELECT * FROM tatable WHERE NomDébutÚte( )
dans la source contrôle, j'ai ce premier message: "Cette expression comporte une sous-requête erronée. Placez la sous requête entre parenthèses."
(SELECT * FROM tatable WHERE NomDébutÚte( ))
La voilà entre parenthèses. Mais lorsque j'ouvre le formulaire, j'ai un avis: "Entrez la valeur du paramètre (SELECT * FROM tatable WHERE NomDébutÚte( ))"
C'est pourquoi je tourne en rond. Qu'est-ce qui est faux? Merci pour ton aide. Luis
-----Message d'origine----- Salut,
Je ne sais pas "faire une sélection multiple dans un état", peut-être
un typo, je ne sais que faire une sélection multiple dans une zone de liste
d'un formulaire (un état, pour moi, c'est sur du papier).
Ce qui est présenté sont des énoncés SQL qui peuvent servir à faire
des requêtes (queries) et on peut les utiliser là où on peut utiliser une
table, ou une requête. Entre autres, comme RecordSource, et comme RowSource
(voir ces propriétés pour un formulaire, pour le premier, et pour une zone
de liste ou un combo box, pour la seconde) par exemple. On peut modifier le
RecordSource d'un état sur ouverture, dans les procédures onOpen et onLoad,
si ma mémoire m'est fidèle, mais pas ailleurs. On peut également utilser les
requêtes ou l'énoncé SQL pour ouvrir un recordset. Pour les fonctions de
domaine, genre DSum, DCount, ..., le second argument ne peut pas être un
énoncé SQL, mais doit être une requête sauvegargée (ou une table).
Si je n'ai pas répondu à la question, faire suivre dans ce filet de
conversation, svp.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message
news:082b01c3d9c7$db915540$ Bonjour, Il y a quelques temps tu m'avais dit comment faire une sélection multiple dans un état, depuis j'ai fait un Etat pricipal avec des sous-états mais je n'arrive pas à inclure les formules que tu m'avais donné. Pour mémoire voici ta solution: Je commence par les faciles.
2). SELECT * FROM tatable WHERE NomDébutÚte( )
(j'imagine que NomDébut est le champ "date prévue à laquelle l'employé commance sont travail " ).
On peut obtenir le compte des enregistrements avec
SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )
Mais on ne sait pas si une personne est assigné à deux travaux en même temps (quelconque erreur de saisie, par exemple).
SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé FROM tatable WHERE NomDébutÚte() )
par contre founira le nombe distincts d'employés qui commenceraient demain.
4).
SELECT * FROM tatable WHERE DateprévueDébutÚte( ) + 1
Voir 2. pour autres commentaires.
6).
pas la moindre idée de ce qui est demandé, là, désolé. J'espère ne pas couler l'interro...
1).
SELECT * FROM tatable WHERE Date() BETWEEN NomDébut AND Nz(DateFin, NomDateprévuFin)
Je suppose que DateFin est NULL tant que le contrat n'est pas effectivement termné. Si NomDatePrévuFin n'est pas mise à jour quotidionnellement, essayer plutôt quelque chose comme
SELECT * FROM tatable WHERE Date() >= NomDébut AND DateFin IS NULL
soit, que le contrat a commencé, mais n'est pas encore terminé (DateFin IS NULL impliquant la dernière observation).
5).
SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut AND Nz(DateFin, NomDatePrévuFin))
3).
Celle-ci est un peu plus compliquée. Je vais procéder en plusieurs petites étapes. D'une part qui est à considéré? question bête? pas vraiment, par exemple, moi, je ne serai pas parmi ceux qui travaillent, dans TA liste, demain. Donc,
SELECT DISTINCT NomEmployé FROM tatable
est une première requête fournissant "l'univers" sur lequel on est intéressé. J'appelle cette requête (table, si elle existe déjà) Employés.
Ensuite, ce qui est facile, c'est de trouver ceux qui travaillent demain. C"est le cas 1). Appelons cette requêtes Actifs (comme dans employés actifs).
La liste des employés innactifs demain est donc la liste des employés qui sont dans Employés, mais non dans Actifs. Bingo, il y a un Wizard qui le fait, le code qu'il génère devrait ressembler à:
SELECT Employés.* FROM Employés LEFT JOIN Actifs ON Employés.NomEmployé ¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL
À noter que cela ne signifie pas qu'un employé ne sera pas actif DEMAIN, seulement qu'il ne l'est pas, aujourd'hui.
À noter qu'en dépit des apparences, quand on regarde les détails, il demeure beaucoup d'imprécisions qui sont reliées aux politiques et procédures de la compagnie.
Espérant être utile, Vanderghast, Access MVP
Merci de me dépanner. Luis
.
Michel Walsh
Salut,
La source du CONTROLE est une expression ou un champ, provenant de la source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
La source du CONTROLE est une expression ou un champ, provenant de la source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
Luis
Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
.
Bonjour,
Excuse mon ignorance.
C'est exactement ce que j'ai fais j'ai spécifié l'énoncé
SQL dans un controlSource.
Ou se trouve le RecordSource dans un état?
Merci.
Luis
-----Message d'origine-----
Salut,
La source du CONTROLE est une expression ou un
champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte,
c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource,
du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle
reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de
spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le
RecordSource qu'on
Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
.
Michel Walsh
Salut,
Lorsque l'état a le focus, en mode design, la toute première propriété est RecordSource (en anglais), sous l'onglet ALL et est suivi de Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible que si c'est un contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il faut cliquer sur le tout petit carré à la toute gauche de l'échelle millimétrique (en fait, centimétrique), immédiatement dessous la barre de la fenêtre.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message news:083501c3da76$a0296790$ Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
.
Salut,
Lorsque l'état a le focus, en mode design, la toute première
propriété est RecordSource (en anglais), sous l'onglet ALL et est suivi de
Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible que si c'est un
contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il faut cliquer sur le
tout petit carré à la toute gauche de l'échelle millimétrique (en fait,
centimétrique), immédiatement dessous la barre de la fenêtre.
Espérant être utile,
Vanderghast, Access MVP
"Luis" <anonymous@discussions.microsoft.com> wrote in message
news:083501c3da76$a0296790$a401280a@phx.gbl...
Bonjour,
Excuse mon ignorance.
C'est exactement ce que j'ai fais j'ai spécifié l'énoncé
SQL dans un controlSource.
Ou se trouve le RecordSource dans un état?
Merci.
Luis
-----Message d'origine-----
Salut,
La source du CONTROLE est une expression ou un
champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte,
c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource,
du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle
reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de
spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le
RecordSource qu'on
Lorsque l'état a le focus, en mode design, la toute première propriété est RecordSource (en anglais), sous l'onglet ALL et est suivi de Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible que si c'est un contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il faut cliquer sur le tout petit carré à la toute gauche de l'échelle millimétrique (en fait, centimétrique), immédiatement dessous la barre de la fenêtre.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message news:083501c3da76$a0296790$ Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
.
Luis
Bonjour, Merci pour les infos, j'ai placé les requêtes comme tu me le dis et j'ai un message d'erreur. MoteurJet ne trouve pas la table. Je ne comprend pas pourquoi? Luis
-----Message d'origine----- Salut,
Lorsque l'état a le focus, en mode design, la toute première
propriété est RecordSource (en anglais), sous l'onglet ALL et est suivi de
Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible que si c'est un
contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il faut cliquer sur le
tout petit carré à la toute gauche de l'échelle millimétrique (en fait,
centimétrique), immédiatement dessous la barre de la fenêtre.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message
news:083501c3da76$a0296790$ Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on
peut placer un énoncé SQL (ou dans un RowSource).
Vanderghast, Access MVP
.
.
Bonjour,
Merci pour les infos, j'ai placé les requêtes comme tu me
le dis et j'ai un message d'erreur.
MoteurJet ne trouve pas la table.
Je ne comprend pas pourquoi?
Luis
-----Message d'origine-----
Salut,
Lorsque l'état a le focus, en mode design, la
toute première
propriété est RecordSource (en anglais), sous l'onglet
ALL et est suivi de
Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible
que si c'est un
contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il
faut cliquer sur le
tout petit carré à la toute gauche de l'échelle
millimétrique (en fait,
centimétrique), immédiatement dessous la barre de la
fenêtre.
Espérant être utile,
Vanderghast, Access MVP
"Luis" <anonymous@discussions.microsoft.com> wrote in
message
news:083501c3da76$a0296790$a401280a@phx.gbl...
Bonjour,
Excuse mon ignorance.
C'est exactement ce que j'ai fais j'ai spécifié l'énoncé
SQL dans un controlSource.
Ou se trouve le RecordSource dans un état?
Merci.
Luis
-----Message d'origine-----
Salut,
La source du CONTROLE est une expression ou un
champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte,
c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource,
du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle
reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de
spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le
RecordSource qu'on
Bonjour, Merci pour les infos, j'ai placé les requêtes comme tu me le dis et j'ai un message d'erreur. MoteurJet ne trouve pas la table. Je ne comprend pas pourquoi? Luis
-----Message d'origine----- Salut,
Lorsque l'état a le focus, en mode design, la toute première
propriété est RecordSource (en anglais), sous l'onglet ALL et est suivi de
Filter, FilterOn, OrderBy, OrderByOn, ...
Le ControlSource, quant à lui, n'est disponible que si c'est un
contrôle qui a le focus.
Pour mettre l'état en focus, en mode design, il faut cliquer sur le
tout petit carré à la toute gauche de l'échelle millimétrique (en fait,
centimétrique), immédiatement dessous la barre de la fenêtre.
Espérant être utile, Vanderghast, Access MVP
"Luis" wrote in message
news:083501c3da76$a0296790$ Bonjour, Excuse mon ignorance. C'est exactement ce que j'ai fais j'ai spécifié l'énoncé SQL dans un controlSource. Ou se trouve le RecordSource dans un état? Merci. Luis
-----Message d'origine----- Salut,
La source du CONTROLE est une expression ou un champ, provenant de la
source du FORMULAIRE. J'ignore la traduction exacte, c'est pourquoi
j'utilise les expressions anglaises: Le RecordSource, du formulaire, doit
recevoir l'énoncé SQL; le ControlSource d'un contrôle reçoit le nom d'un
des champs de la requête. Il semble qu'on essaierait de spécifier un énoncé
SQL dans un ControlSource, il ne faut pas, c'est dans le RecordSource qu'on