[Access] Requete "imbriquée"

Requete "imbriquée" [Access] - SQL/NoSQL - Programmation

Marsh Posté le 14-12-2009 à 11:44:43    

Bonjour,
 
Dans Access, j'ai une table qui contient les champs suivants :
- Code_doc : alphanumérique sur 6 caractères
- Version : une lettre (A ou B ou C ou...). A chaque fois q'un document subit une modif, une nouvelle entrée est insérée dans ma BDD et la lettre est incrémentée.
- Details_modifs : champ texte ou je décris les modifications à faire dans la prochaine version du doc
- A_modifier : OUI/NON (case à cocher). Je la coche quand j'estime que la version courante du doc devra être modifiée (et donc créer une nouvelle version.
 
Je voudrais avoir une requête qui ne me retourne que les lignes ou la case A_modifier est cochée, MAIS sans me donner les versions précédentes qui ont déjà été modifiée mais donc la case est restée cochée.
Exemple :

Code :
  1. N° | Code_doc | Version | Details_modifs | A_modifier
  2. 1  | X00001   | A       | blabla         | NON
  3. 2  | X00002   | A       | blabla         | OUI
  4. 3  | X00002   | B       | blabla         | OUI
  5. 4  | X00003   | A       | blabla         | OUI
  6. 5  | X00003   | B       | blabla         | OUI
  7. 6  | X00003   | C       | blabla         | NON


 
Ma requête devrait me sortir uniquement la ligne 3, puisque le doc X00001 n'a pas besoin d'être modifié, la version A du X00002 a déjà été modifiée par le version B, et la dernière version du doc X00003 a été jugé satisfaisante.
Ainsi ma requête me dira : Il faut modifier le doc X00002 en créant une version C.
 
Mon problème est que je sais créer une requète qui me sortirait toutes les lignes ou A_modifier est NON, mais pas faire un genre de :
pour tout (Code_doc)
  chercher max(Version)  
     si A_modifier == OUI, garder la ligne
     sinon, passer à la suivante
 
Est-ce possible avec Access de faire ça ?
Si oui, comment ?
 
Merci !
Blacksad
 

Reply

Marsh Posté le 14-12-2009 à 11:44:43   

Reply

Marsh Posté le 14-12-2009 à 11:57:43    

Ce genre de traitement n'est pas du ressort du SGBD, mais de l'application cliente. La requête ne doit que te renvoyer des données, tout le retraitement doit être fait dans le langage client.
Donc oublie l'idée de faire ça par requête Access (pour ça il faudrait qu'Access supporte les curseurs et les autojointures, ce qui n'est pas le cas), et retraite tes données dans ton application (qui peut être un code VBA au passage)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-12-2009 à 12:13:15    

Oh noooooo ! Pas du VBA  :(  
Merci pour l'info en tous cas ; je ne voyais vraiment pas comment faire, mais si ce n'est pas possible, tout s'explique.
Je crois que dans un premier temps je vais décocher les cases qui me donneraient des lignes "parasites" (lignes 2, 4 et 5 dans mon exemple) et faire ma requete juste sur le OUI/NON.
Et quand ça me saoulera vraiment trop, je me mettrai au VBA  :D  
 

Reply

Marsh Posté le 14-12-2009 à 12:24:56    

Non mais t'es pas obligé de faire du VBA hein ! Ta base de données, j'imagine qu'elle est utilisée par un logiciel client, donc c'est dans ce logiciel que tu dois retraiter tes données, dans le langage qu'il utilise.
Après, si c'est juste un formulaire Access, alors oui, hors VBA point de salut.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-12-2009 à 13:37:57    

Harkonnen a écrit :

Après, si c'est juste un formulaire Access, alors oui, hors VBA point de salut.

C'est malheureusement mon cas...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed