Bonjour,
mais les anciens abonnements restent dans la base de données et le champ validite_abm reçoit false cela se passe lors de l'exécution de l'application par un code qui vérifie les dates des abonnements par rapport à la date actuelle dans l’événement OnCreate de la forme principale...jusque-là tout est OK
bof ! Ce n'est pas vraiment ce que je qualifierai très carré mais j'ai retrouvé cette conversation qui déjà en faisait état. Puis qu'il y a les colonnes dateD_abm, dateF_abm obtenir les abonnements en cours par rapport à la date du jour doit pouvoir s'obtenir par le SQL
SELECT id_abm, dateD_abm, dateF_abm, id_ab FROM Abonnement WHERE :NOW>= dateD_abm AND :NOW<=dateF_abm
Obtenir les abonnés (une seule fois) n'ayant aucun abonnement en cours devrait pouvoir s'obtenir en utilisant une technique que l'on nomme dans les SGBDs modernes : une CTE. Avec Paradox, il est possible d'utiliser un texte SQL comme une table donc si le précédent SQL est enregistré au même endroit que les tables il doit être possible de faire une jointure entre les abonnements "actifs" et la table des abonnements
SELECT A.id_ab,S.id_ABM AS ABENCOURS FROM Abonnement A LEFT JOIN ABONNEMENTENCOURS.SQL S ON A.id_ab=S.id_ab
n'obtenir que les abonnements des utilisateurs sans abonnements actifs se fera en ajoutant la clause WHERE ABENCOURS IS NULLà partir de la même technique (enregistrement du texte SQL en ABENCOURS.SQL)
SELECT DISTINCT(id_ab) FROM ABENCOURS.SQL WHERE ABENCOURS IS NULL
vous obtiendrez les utilisateurs qui n'ont aucun abonnement en cours
Il y a certainement mieux le dernier SQL est certainement évitable
SELECT DISTINCT A.id_ab,S.id_ABM AS ABENCOURS FROM Abonnement A LEFT JOIN ABONNEMENTENCOURS.SQL S ON A.id_ab=S.id_ab WHERE ABENCOURS IS NULL
P.S. La syntaxe est approximative il manque peut-être des guillemets " " pour l'utilisation des textes SQL, écrit de mémoire et sans jeu d'essai difficile d'en être sûr
Partager