Un soucis avec Access 2010, j'en appel aux spécialistes...

Fermé
plop1480 Messages postés 1 Date d'inscription dimanche 10 février 2013 Statut Membre Dernière intervention 11 février 2013 - 11 févr. 2013 à 20:38
 tessel75 - 12 févr. 2013 à 11:20
Bonjour,

Je travail sur un projet ACCESS 2010 et j'ai un petit soucis...
J'ai un formulaire qui alimente une table de suivi d'activité par agent et par date, exemple :
Matricule : 42512
Date : 18/12/2012
Activ1 : 2.5 (en centieme d'heure)
Activ2 :1.25
Activ3 : 4.00
etc...

Mon probléme est le suivant :
Je souhaite que lorsque l'on à selectionné un agent dans la liste, et que l'on à saisie une date, un crontrôle soit effectué dans la table pour vérifier si le couple agent + date à déja été renseigné, auquel cas mon formulaire fait une modification. Si par contre, le couple agent+date n'éxiste pas alors le formulaire est en création.

Je suis convaincu que l'on peut s'en sortir sans code VBA, mais j'aimerai savoir comment.

Pour info, mon formulaire à pour source une requete ramenant toutes les donnée de la table avec une double condition sur le matricule et la date issues de celui-ci (cf code ci-dessous.

SELECT Horaires.Id_Horaire, Horaires.Id_Agent, Horaires.Dt_Hrs, Horaires.Type_TD, Horaires.Type_Mes, Horaires.Type_Cou, Horaires.Type_Nav, Horaires.Type_Log, Horaires.Type_Adm, Horaires.Id_TauxAvantage, Horaires.Nb_Repas, Horaires.Nb_CasseCroute, Horaires.Nb_Decoucher, Horaires.Nb_HrNuit, Horaires.Nb_HrSup25, Horaires.Nb_HrSup50, Horaires.Fr_Peage, Horaires.Fr_Gasoil, Horaires.Fr_Autres
FROM Horaires
WHERE (((Horaires.Id_Agent)=[Formulaires]![Frm_HoraireSaisie2]![Id_Agent]) AND ((Horaires.Dt_Hrs)=[Formulaires]![Frm_HoraireSaisie2]![Dt_Hrs]));


Sur le losefocus du champs date, j'ai essyé un Me.requery Ou un Me.refresh rien y fait.

Alors un grand merci à ceux qui se pencheront sur mon probléme.




2 réponses

Bonsoir,
Je sais qu'il est toujours difficile d'expliquer ce que l'on souhaiterais obtenir, mais ta demande n'est pas facile à comprendre à la première lecture. Aussi je vais essayer de dire ce que je crois avoir compris de ton problème.

Tu encadres un certain nombre d'agents pour lesquels on note quotidiennement les horaires et les activités; et en rapport tu voudrais que cet enregistrement soit unique sans risque de doublon.
Alors plutôt qu'avoir une requête plus ou moins compliquée, il me semble qu'il vaut mieux contourner le problème.

Donc si ma compréhension est la bonne, je te proposerais comme solution d'avoir un formulaire d'agent avec un sous-formulaire de dates et horaires. L'avantage serait alors que lorsque tu appelles un agent, il t'affiche toutes les dates déjà entrées (il suffit d'un filtre pour ne pas avoir toutes les dates depuis Mathusalem) ce qui entraîne qu'on voit immédiatement l'activité de cet agent déjà entrée, et en particulier celle du jour considéré; et en plus pour éviter tout risque de doublon, tu crées dans ta table "Activités" un index multiple sans doublon composé de "IdAgent" et de "DateActivité", comme cela les choses seront verrouillées.
0
Tout d'abord merci de t'intéresser à mon souci.

Tu as très bien synthétisé le périmètre du problème.

Concernant l'index composé, est une très bonne idée, je l'applique sans attendre.

Effectivement l'option du sous-formulaire permettrait d'afficher l'enregistrement correspondant si il exit dans une liste.Mais une liste pour un enregistrement me semble quelque peux disproportionné. je ne souhaite pas dans le cas présent consulter l'ensemble de l'activité de l'agent sélectionné.

L'objectif est de récupérer dans les champs de saisie les infos de cet enregistrement à la condition qu'il existe, et dans un second temps d'adapter le mode de mise à jour (Création ou Modification).
Ce contrôle est natif si il n'y à qu'un critère de sélection, mais si tu en as 2 cela ne l'est plus.

Maintenant mes connaissances sur Access sont limitées. Peut être n'y a t'il pas de solution.

toutefois, je me dois de préciser que les utilisateurs finaux n'avaient jusqu'à présent qu'un crayon et une feuille de papier, par conséquent, je me dois de fournir sur cette partie du développement un écran le plus simpliste possible, faute de quoi je cours à la catha... Mais ça c'est valable pour tout projet informatique petit ou grand
0
Bonjour,
Il y a pas mal de choses que je ne comprends pas:
1) " L'objectif est de récupérer dans les champs de saisie les infos de cet enregistrement à la condition qu'il existe, et dans un second temps d'adapter le mode de mise à jour (Création ou Modification). "
Merci d'être plus circonstancié parce que là je suis dubitatif; les données sont enregistrées ou pas.
Que comprends-tu par "Mode de mise à jour" et "Création ou modification"
Mise à jour de quoi? Du formulaire ou des enregistrements ?
Enfin, parlons-nous de la même chose lorsque tu dis "Création ou modification"? S'agit-il de l'enregistrement des données à entrer, càd de l'ajout d'une ligne, ou bien de la modification ou création d'un formulaire? Ton expression est très ambiguë.

Et puis finalement, la confection d'une base de données est-elle judicieuse?
"les utilisateurs finaux n'avaient jusqu'à présent qu'un crayon et une feuille de papier, par conséquent, je me dois de fournir sur cette partie du développement un écran le plus simpliste possible"
Les données recueillies doivent-elles être conservées? Sinon est-ce bien indispensable? Ou alors, n'aurais-tu pas intérêts à recopier toi-même la dite feuille de papier? Le plus simple est bien souvent le plus fiable.

Le mieux serait que tu nous envoies via cjoint.com un modèle de ta base (sans nom évidemment), qu'on puisse comprendre quels sont tes enregistrements; ce serait mieux que l'écriture SQL de ta requête.
A plus tard
0