Bonjour,
Dilemme du jour, j'aimerais pouvoir regrouper deux requêtes en une seule...
Vous allez comprendre pourquoi.
J'ai deux fichiers dans mon analyse : Jeux et Planning, les voici :
Et j'ai deux requetes :
REQ_Planning_Jeux_Mois qui renvoi tous les jeux se déroulant sur un mois donné :
REQ_Planning_Calendrier qui renvoi un COUNT du jeu selon son ID (0 si pas planifié sinon > 0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SELECT Jeux.IDJeux AS IDJeux, Jeux.Date_Debut_Jeu AS Date_Debut_Jeu, Jeux.Date_Fin_Jeu AS Date_Fin_Jeu FROM Jeux WHERE ( Jeux.Date_Debut_Jeu BETWEEN {P_Date_Debut} AND {P_Date_Fin} AND Jeux.Date_Fin_Jeu BETWEEN {P_Date_Debut} AND {P_Date_Fin} ) OR ( Jeux.Date_Debut_Jeu <= {P_Date_Debut} AND Jeux.Date_Fin_Jeu >= {P_Date_Debut} ) OR ( Jeux.Date_Debut_Jeu <= {P_Date_Fin} AND Jeux.Date_Fin_Jeu >= {P_Date_Fin} )
Le code suivant permet de lister dans un tableau les jours du mois affiché dans un champ calendrier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT COUNT(*) AS Nb_Jeux_Planning FROM Planning WHERE Planning.Date_Planning = {P_Date_Planning} AND Planning.IDJeux = {P_IDJeux}
J'ajoute donc comme p_Type : 0 si le jour est postérieure à la date actuelle ou -1 si le jour est dépassé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 TableauSupprimeTout(Tableau_Planning_Calendrier) // RECUPERATION DU PREMIER ET DERNIER JOUR DU MOIS AFFICHE Indice_Date est un entier Date_Actuelle est une Date = DateSys() Date_Premier_Jour est une Date = CalendrierPosition(CAL_Planning) Date_Dernier_Jour est une Date = Date_Premier_Jour Date_Dernier_Jour..Jour = 31 Date_Nombre_Jour est un entier = Date_Dernier_Jour..Jour // REMPLISSAGE DES JOURS DU MOIS AFFICHE Nouveau_Planning_Calendrier est un Cl_Planning_Calendrier POUR i_date = DateVersEntier(Date_Premier_Jour) _A_ DateVersEntier(Date_Dernier_Jour) SI i_date <> DateVersEntier(Date_Actuelle) ALORS SI DateDifférence(EntierVersDate(i_date), Date_Actuelle) < 0 ALORS Nouveau_Planning_Calendrier:p_Date_Calendrier = EntierVersDate(i_date) Nouveau_Planning_Calendrier:p_Type = 0 SINON Nouveau_Planning_Calendrier:p_Date_Calendrier = EntierVersDate(i_date) Nouveau_Planning_Calendrier:p_Type = -1 FIN TableauAjouteLigne(Tableau_Planning_Calendrier, Nouveau_Planning_Calendrier) FIN FIN
Ensuite, c'est là que c'est pas top...
Ce code modifie les données du tableau selon le contenu de la requête REQ_Planning_Jeux_Mois si il y a un jeu à planifier tel ou tel jour vous voyez ...?
Le problème est que j'ai besoin de faire une nouvelle requête pour savoir si le jeu est déjà planifié pour tel ou tel jour et comme on est dans les boucles POUR TOUT et POUR i_date... et bien j'ai plusieurs exécution de la REQ_Planning_Calendrier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 SI HExécuteRequête(REQ_Planning_Jeux_Mois, hRequêteDéfaut, Date_Premier_Jour, Date_Dernier_Jour) = Vrai ALORS POUR TOUT REQ_Planning_Jeux_Mois POUR i_date = DateVersEntier(Date_Premier_Jour) _A_ DateVersEntier(Date_Dernier_Jour) Indice_Date = TableauCherche(Tableau_Planning_Calendrier, tcLinéaire, "Date_Calendrier", EntierVersDate(i_date)) SI Indice_Date <> -1 ALORS SI (i_date >= DateVersEntier(REQ_Planning_Jeux_Mois.Date_Debut_Jeu)) ET (i_date <= DateVersEntier(REQ_Planning_Jeux_Mois.Date_Fin_Jeu)) ALORS SI HExécuteRequête(REQ_Planning_Calendrier, hRequêteDéfaut, EntierVersDate(i_date), REQ_Planning_Jeux_Mois.IDJeux) = Vrai ALORS SI (HLitPremier(REQ_Planning_Calendrier) = Vrai) ET (REQ_Planning_Calendrier.Nb_Jeux_Planning > 0 ) ALORS SI DateDifférence(EntierVersDate(i_date), Date_Actuelle) < 0 ALORS SI Tableau_Planning_Calendrier[Indice_Date]:p_Type <> 1 ALORS Tableau_Planning_Calendrier[Indice_Date]:p_Type = 2 FIN SINON Tableau_Planning_Calendrier[Indice_Date]:p_Type = -2 FIN SINON SI DateDifférence(EntierVersDate(i_date), Date_Actuelle) < 0 ALORS Tableau_Planning_Calendrier[Indice_Date]:p_Type = 1 SINON Tableau_Planning_Calendrier[Indice_Date]:p_Type = -1 FIN FIN SINON SI DateDifférence(EntierVersDate(i_date), Date_Actuelle) < 0 ALORS Tableau_Planning_Calendrier[Indice_Date]:p_Type = 1 SINON Tableau_Planning_Calendrier[Indice_Date]:p_Type = -1 FIN FIN HLibèreRequête(REQ_Planning_Calendrier) FIN FIN FIN FIN FIN HLibèreRequête(REQ_Planning_Jeux_Mois)
Il y a t'il un moyen de récupérer en une seule requête les jeux en cours sur un mois donné et savoir si ils sont déjà planifié ou non sur tous les jours du mois...?
Merci
Partager