OVH Cloud OVH Cloud

Comment tester la présence d'un enregistrement ?

6 réponses
Avatar
Gillou
Bonjour,

Voici ma situation :
J'ai une table T0 qui contient un numéro d'affaire et une procédure (allant
de 1 à 7) associée à chaque affaire. Pour chaque procédure j'ai une table (T1
à T7) qui doit contenir le numéro d'affaire correspondant + d'autres champs.

Quand je sélectionne un numéro d'affaire via le formulaire d'accueil, il
faut donc que je teste la présence de ce numéro dans la table correspondante
après avoir déterminé sa procédure.

Par exemple : je veux gérer l'affaire n° 123 que je viens de rentrer dans
T0, et qui est une procédure 1.
Il faut donc que je teste la présence de l'affaire n° 123 dans T1, puis :
- si elle n'y est pas je dois l'y ajouter
- si elle y est déjà j'ouvre le formulaire de gestion correspondant

Je débute sous Access et je ne connais pas toutes les fonctions :-S
Comment puis-je faire cela (test présence + ajout si nécessaire), vous avez
une idée ?

Merci d'avance

6 réponses

Avatar
Pierre CFI [mvp]
bonjour
si tu débutes sur access, tu ne dois pas connaitre VBA, donc çà va pas étre simple de t'expliquer
mais déjà quelque chose de bizarre. Une table par procédure ?? donc si on doit ajouter une procédure ? on doit faire une table en
plus ?
hum, quel est grosso modo le shéma fonctionnel de ta base ??
Beaucoup de questions pour miux t'aider :o)

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net

"Gillou" a écrit dans le message de news:
Bonjour,

Voici ma situation :
J'ai une table T0 qui contient un numéro d'affaire et une procédure (allant
de 1 à 7) associée à chaque affaire. Pour chaque procédure j'ai une table (T1
à T7) qui doit contenir le numéro d'affaire correspondant + d'autres champs.

Quand je sélectionne un numéro d'affaire via le formulaire d'accueil, il
faut donc que je teste la présence de ce numéro dans la table correspondante
après avoir déterminé sa procédure.

Par exemple : je veux gérer l'affaire n° 123 que je viens de rentrer dans
T0, et qui est une procédure 1.
Il faut donc que je teste la présence de l'affaire n° 123 dans T1, puis :
- si elle n'y est pas je dois l'y ajouter
- si elle y est déjà j'ouvre le formulaire de gestion correspondant

Je débute sous Access et je ne connais pas toutes les fonctions :-S
Comment puis-je faire cela (test présence + ajout si nécessaire), vous avez
une idée ?

Merci d'avance


Avatar
Gillou
si tu débutes sur access, tu ne dois pas connaitre VBA, donc çà va pas étre
simple de t'expliquer


Oui je débute sur Access mais j'ai déjà programmé dans quelques langages et
je connais donc le principe de fonctionnement, sans connaitre les fonctions
de VBA, donc tu peux expliquer :-)

mais déjà quelque chose de bizarre. Une table par procédure ?? donc si on doit >ajouter une procédure ? on doit faire une table en
plus ?


Oui car chaque procédure correspond à un mode opératoire spécifique, et les
champs à saisir ne sont pas les mêmes pour des procédures différentes. Il est
vrai que je pourrais faire une table unique qui contiendrait tous les champs
de toutes les procédures, mais ce ne serait pas très logique car cela ferait
beaucoup de vides (pour chaque affaire, tous les champs non concernés par la
procédure de l'affaire), d'où ma distinction 1 procédure = certains champs à
saisir = 1 table

hum, quel est grosso modo le shéma fonctionnel de ta base ??


Euh...bon, je vais essayer de résumer comment fonctionne la base :
1) un animateur initialise l'affaire dans la base en entrant numéro
d'affaire + procédure + le conseiller en charge + 2-3 autres champs dans la
table T0
2) la table T0 doit se déverser (c'est là mon souci) dans chacune des tables
T1 à T7 en fonction de la procédure si l'affaire n'est pas présente dans la
table correspondante
3) des conseillers vont compléter, dans chaque table T1 à T7, les affaires
dont ils sont responsables et dont les champs dépendent de la procédure

C'est très résumé mais j'espère que ça suffira à comprendre l'idée :-)

Merci d'avance pour ton aide

Avatar
Pierre CFI [mvp]
oui, oui j'ai compris l'idée et j'ai "subodoré" que ta base doit pas étre tout à fait une base relationnelle :o)

une idée de code, mais à condition de connaitre la table
if not isnull(Dlookup("idaffaire","table","idaffaire =" & Me.idaffaire)) then
'ici le code existe on ouvre un form
docmd.OpenForm "NomFormulaire",acNormal,,"idaffaire=" & Me.idaffaire
end if

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net

"Gillou" a écrit dans le message de news:
si tu débutes sur access, tu ne dois pas connaitre VBA, donc çà va pas étre
simple de t'expliquer


Oui je débute sur Access mais j'ai déjà programmé dans quelques langages et
je connais donc le principe de fonctionnement, sans connaitre les fonctions
de VBA, donc tu peux expliquer :-)

mais déjà quelque chose de bizarre. Une table par procédure ?? donc si on doit >ajouter une procédure ? on doit faire une table
en
plus ?


Oui car chaque procédure correspond à un mode opératoire spécifique, et les
champs à saisir ne sont pas les mêmes pour des procédures différentes. Il est
vrai que je pourrais faire une table unique qui contiendrait tous les champs
de toutes les procédures, mais ce ne serait pas très logique car cela ferait
beaucoup de vides (pour chaque affaire, tous les champs non concernés par la
procédure de l'affaire), d'où ma distinction 1 procédure = certains champs à
saisir = 1 table

hum, quel est grosso modo le shéma fonctionnel de ta base ??


Euh...bon, je vais essayer de résumer comment fonctionne la base :
1) un animateur initialise l'affaire dans la base en entrant numéro
d'affaire + procédure + le conseiller en charge + 2-3 autres champs dans la
table T0
2) la table T0 doit se déverser (c'est là mon souci) dans chacune des tables
T1 à T7 en fonction de la procédure si l'affaire n'est pas présente dans la
table correspondante
3) des conseillers vont compléter, dans chaque table T1 à T7, les affaires
dont ils sont responsables et dont les champs dépendent de la procédure

C'est très résumé mais j'espère que ça suffira à comprendre l'idée :-)

Merci d'avance pour ton aide



Avatar
Gillou

une idée de code, mais à condition de connaitre la table
if not isnull(Dlookup("idaffaire","table","idaffaire =" & Me.idaffaire)) then
'ici le code existe on ouvre un form
docmd.OpenForm "NomFormulaire",acNormal,,"idaffaire=" & Me.idaffaire
end if


C'est sûrement une question basique, mais à quoi sert le & Me. ? Je ne
connais pas :-S
Merci

Avatar
Pierre CFI [mvp]
c'est le symbole de concaténation
si Me.idaffaire = 2
çà fait
Idaffaire = 2
"Bonne" & " " & "Journée"
Bonne Journée

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net

"Gillou" a écrit dans le message de news:

une idée de code, mais à condition de connaitre la table
if not isnull(Dlookup("idaffaire","table","idaffaire =" & Me.idaffaire)) then
'ici le code existe on ouvre un form
docmd.OpenForm "NomFormulaire",acNormal,,"idaffaire=" & Me.idaffaire
end if


C'est sûrement une question basique, mais à quoi sert le & Me. ? Je ne
connais pas :-S
Merci



Avatar
Gillou
Ok le code fonctionne, cela m'ouvre bien le formulaire F1 (associé à la
procédure 1) quand l'affaire est dans la table T1.
Il ne me reste plus qu'à copier l'affaire de T0 vers T1 quand elle n'y est
pas (cas de la 1ère ouverture de l'affaire pour gestion après
initialisation). Tu as une idée ?

Merci (et désolé si ce que je demande est trivial !)