ACCESS-Tri par ordre numerique illogique

Résolu/Fermé
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 - 8 nov. 2007 à 11:40
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 - 23 nov. 2007 à 12:36
Bonjour chers membres et non membres de CCM,

Je viens a vous une fois de plus, avec un probleme Access... Un truc tout bete... Mais qui me prend la tete... vous imaginez meme pas (enfin, si vous etes sur ce site, j'imagine que si...)

C'est tres simple. Imaginez la scene :

J'ai un formulaire contenant plusieurs champs. Ils decrivent des problemes informatiques que des employes ont rencontre dans mon entreprise.
Les informations rentraient (date, nom de l'employes, poste, type de probleme, description...) sont envoyes au IT service (Service informatique... la ou je travaille) pour etre resolu...
La, en fonction du type de probleme, ils sont assignes aux diverses personnes de l'IT Team (Equipe Informatique... vous vous en doutiez non ?).
En bas du formulaire ou sont affiches les divers problemes, il y a des boutons avec le nom correspondant a un employe du service IT. Grace a une macro que j'ai repare (voir topic "Bug de macro de filtre sous Access 2007" par WildDragon...), lorsque l'on clic su l'un des boutons (par exemple Paul Machin), on obtient tous les problemes non resolu (c-a-d qui n'ont pas une date dans la case "Date de resolution") par l'employe en question (donc on obtient tous les problemes que Paul Machin n'a pas encore resolu...).
En gros, cette base Access est un HelpDesk... Une aide de bureau informatique...

Bon, mon probleme, c'est que, vous vous en doutez, chaque employe du IT service a plusieurs problemes a resoudre. Les differents champs provienne d'une table avec comme cle primaire un numero auto. Grace a une requete, les divers enregistrements pour les divers boutons (employes) sont classes par numero auto dans l'ordre croissant...

Bien que il y ai une requete pour chaque bouton, a un ou deux criteres pres, elles sont identiques... Et c'est bien le probleme...

Car, pour Paul Machin et Bill Truc, les numeros auto sont dans l'ordre croissant... Mais pas pour Michel Bidule, ou les enregistrements sont ranger dans n'importe quel ordre... C'EST PAS LOGIQUE !!!! C'est les memes requetes !!!

Bien sur, on peut faire clic droit sur le champs et demander a le classer par ordre croissant...a chaque ouverture... mais c'est cence le faire automatiquement... Donc c'est pas la bonne solution...

J'utilise Access 2007... On peut configurer l'option pour que ca reste dans l'ordre croissant a chaque fois... Mais je fais parti des rares a avoir cette version... Et sous 2003, on range dans le bon ordre, on ferme Access, on reouvre, et rebelotte...

Voila...
Vous savez tout...

Donc si vous avez une idee, proposez... Et si vous manquez derenseignement, demandez moi...

Je vous remercie d'avance (et m'excuse pour le manque d'accent... vous aurez surement compris avec les traductions que j'ai faite que je suis dans une entreprise anglaise dont tous les clavier sont QWERTY... et donc sans accents... donc sorry...^^)

27 réponses

WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 34
16 nov. 2007 à 10:58
Bonjour Manu,

Tout d'abord, concernant le nom de la requete SQL, vous avez raison, il s'agit bien de "qryAssignedtoPaul".

J'ai ensuite teste ce que vous m'avez suggere et le code VB du bouton Paul Machin est devenu celui-ci, en suivant vos instructions :

Private Sub cmdPaulws_Click()
On Error GoTo Err_cmdPaulws_click
Dim stDocName As String
stDocName = "qryAssignedtoPaul"
DoCmd.RunMacro stDocName


Mais je m'attendais a un probleme car la derniere ligne cherche a lancer une macro "DoCmd.RunMacro" et le document que je lui donne a lancer est une requete...

Et effectivement, quand j'ai utilise ce bouton, j'ai obtenu le message suivant :

IT Helpdesk-2007 can't find the object 'qryAssignedtoPaul.'

Je vous precise, au cas ou je ne l'aurais pas fait, que IT Helpdesk-2007 est le nom de ma base de donnees access.






Pour ce qui est de la ligne que vous me demandez de supprimer, il s'agit de la "Where Condition" de la macro "mcrSapassignselectorPaul" qui servait de filtre a la base...
Vu que nous sommes d'accord sur le fait que cette macro ne rempli pas son role (puisqu'elle filtre mais ne classe pas dans l'ordre), j'ai bien evidemment l'intention de la supprimer... Mais ca ne changera pas le probleme d'arriver a lancer ma requete...


Autre chose qui me vient a l'esprit...
Connaissez-vous un site ou je puisse charger des images pour que vous puissiez y acceder ?
Je pourrai comme ca vous faire des screen qui serait plus parlantes...
Qu'en pensez vous ?

0
Bonjour,

« Mais je m'attendais a un probleme car la derniere ligne cherche a lancer une macro "DoCmd.RunMacro" et le document que je lui donne a lancer est une requete... »

1) Essayez de remplacer "DoCmd.RunMacro" par "DoCmd.RunQuery" (c'est du pifomètre, je ne connais rien à VB)

« il s'agit de la "Where Condition" de »

Votre macro est manifestement un commande SQL dont je ne vois qu'un morceau. Essayez de trouver une zone sur cet écran où vous avez un menu contextuel qui vous permet de
2) soit de passer en mode SQL
3) soit d'avoir un champ de saisie de l'ordre de restitution (autrement dit : de la manière que vous avez su afficher un champ qui s'appelle "where condition", il y a sûrement quelque chose d'équivalent qui s'appelle "order by" ou équivalent).

Note ce que j'ai numéroté 1 à 3 sont trois essais qui s'excluent mutuellement.

NB c'est bientôt le week-end, je commence à fatiguer.

Manu
0
Rebonjour,

« Vu que nous sommes d'accord sur le fait que cette macro ne rempli pas son role (puisqu'elle filtre mais ne classe pas dans l'ordre), j'ai bien evidemment l'intention de la supprimer... Mais ca ne changera pas le probleme d'arriver a lancer ma requete... »

Je ne vous demandais pas de supprimer la macro. Il est clair qu'elle accède la la requête... par un moyen que vous ne nous avez pas montré. Je vous suggérais seulement de supprimer le contenu du champ qui s'appelle « where condition ». Vous laissez la macro et vous lui dites de ne rien faire.

Et bien sûr ça peut être utile de nous dire l'effet produit.

Manu
0
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 34
20 nov. 2007 à 12:16
Le runQuery ne marchait pas...

Mais j'ai fini par trouver un truc : runSQL...

Mais j'essai de trouver des exemples pour en comprendre le fonctionnement...
Si je trouve une solution, je vous envoie ce que j'ai rentre et les resultats...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 34
21 nov. 2007 à 13:12
Je vais recourir a une solution de facilite... Ma tutrice de stage attends des resultats et ca fait plus du'une semaine que je n'avance avec ce probleme (qui selon moi, n'est pas d'une grande gravite pour la base de donnees...).

Je vais donc lier chaque bouton a un formulaire identique a celui dans lequel il devait s'afficher mais les champs de ses formulaires seront fait avec les requetes correspondantes aux boutons... Comme ca, le filtre sera fait et classer dans le bon ordre...

Je vous tiens au courant (ca va etre assez long... le formulaire de base est complexe et je dois le faire en 5 exemplaires...
0
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 34
23 nov. 2007 à 12:20
Bonjour Manu...

J'ai trouver la solution... Totalement par hasard...
Comme je vous l'ai dit precedement, je voulais recourir a une solution de facilite...

Je recapitule :

Tout d'abord, je cree une requete pour chaque bouton de mon formulaire frmSAPHelpdeskSolutions...
ex: pour le bouton Paul Machin, je creai la requete qui :
-affiche les enregistrements des problemes assigne a Paul
-ou la date de resolution du probleme n'est pas remplie (donc, le probleme n'est pas encore resolu)
-et qui classe ces enregistrements par No d'appel

EN version SQL (en anglaise), ca donne cela :

SELECT tblSAPHelpdesk.CallNo, tblSAPHelpdesk.EntryDate, tblSAPHelpdesk.Requestor, tblSAPHelpdesk.SummaryProblem, tblSAPHelpdesk.CallType, tblSAPHelpdesk.Department, tblSAPHelpdesk.Priority, tblSAPHelpdesk.TransactionCode, tblSAPHelpdesk.MenuPath, tblSAPHelpdesk.ErrorMessage, tblSAPHelpdesk.ProblemDescription, tblSAPHelpdesk.TransactionalData, tblSAPHelpdesk.[Additional Information], tblSAPHelpdesk.Status, tblSAPHelpdesk.AssignedDate, tblSAPHelpdesk.AssignedTo, tblSAPHelpdesk.DateDue, tblSAPHelpdesk.CompletedDate, tblSAPHelpdesk.Hours, tblSAPHelpdesk.TestData, tblSAPHelpdesk.TestClient, tblSAPHelpdesk.Solution, tblSAPHelpdesk.MenuPathForConfig, tblSAPHelpdesk.TransportNos, tblSAPHelpdesk.TransportMoved
FROM tblSAPHelpdesk
WHERE (((tblSAPHelpdesk.AssignedTo)="Paul Machin") AND ((tblSAPHelpdesk.CompletedDate) Is Null))
ORDER BY tblSAPHelpdesk.CallNo;

End Sub


Et, le but, c'etait de creer un formulaire identique a frmSAPHelpdeskSolutions sauf que les champs venait directement de la requete... Et tout le tri et le classement etait fait (mais vu la complexite du formulaire de base, j'en avait pour des heures de travail... car je devais le faire en 5 ou 6 exemplaires).

La derniere etape etait ensuite de changer les boutons de frmSAPHelpdeskSolutions pour que, au lieu de lancer une macro, ils ouvrent le formulaire qui correspond...

Voila ce que j'avais prevu...


J'ai donc passe une heure a recopier la premiere version du formulaire...
Mais quand j'ai compare la feuille de propriete des deux formulaires, je trouver 2 lignes que je n'avais pas vu auparavent :
En selectionnant "Form", dans l'onglet Data, J'ai trouve la ligne :
-Filter avec le code de la macro dedans [tblSAPHelpdesk]![AssignedTo]="ANDY MATSON" And IsNull([tblSAPHelpdesk]![CompletedDate])

-Order By avec le nom du champ de tri tblSAPHelpdesk.CallNo

Et je me suis dis : "Pourquoi reappliquer le filtre ici alors que la macro du bouton le fait deja juste avant ?"

J'ai donc vider cette ligne...
Et du coup, le formulaire ne faisait plus que trier (order by) la selection obtenu grace a la macro de chaque bouton...

Donc, en resume,

1-Je clic sur le bouton "Paul Machin".
2-Cela lance la macro de filtre qui ne garde que les problemes assignes a Paul Machin qu'il n'a pas encore resolu
3-Il s'affiche dans les champs du formulaire
4-Puis les proprietes du formulaire s'applique, ce qui a pour effet de classer cette selection par CallNo, par ordre croissant...

LE PROBLEME EST RESOLUE...


MERCI BEAUCOUP MANU pour votre patience et vos conseils...
Non seulement j'ai decouvers pas mal de nouveaux trucs sur access grace a vos conseils...
Et en plus, je saurais mieux expliquer mes problemes a l'avenir...

Je vous souhaite une bonne journee...
A+


0
Bonjour,

Bravo !

Manu
0
WildDragon Messages postés 1347 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 28 octobre 2009 34
23 nov. 2007 à 12:36
Et merci encore... Vous etes le seul a m'avoir aider sur mes problemes access... Donc encore merci !!!
0