Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrements vides

5 réponses
Avatar
Albert
Bonjour

Votre opinion, doit on supprimer les enregistements vides?

merci de vos commentaires.


--
albertri-at-videotron.ca.invalid

5 réponses

Avatar
Gloops
Albert a écrit, le 08/04/2014 16:31 :
Bonjour

Votre opinion, doit on supprimer les enregistements vides?

merci de vos commentaires.






Bonjour,

C'est quoi les enregistrements vides ?
Comment sont-ils apparus ?
Avatar
Albert
Bonsoir Gloops

Votre présence se fait rare.....

Les enregistrements vides sont les dates de paiement ainsi que montant.

Dans une nouvelle requête regroupée, ci desssous

SELECT TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE, Max(TBLcotisation.DateCotisation) AS MaxDeDateCotisation,
Last(TBLcotisation.MontantCotisation) AS DernierDeMontantCotisation,
Last(TBLcotisation.ArgentCheque) AS DernierDeArgentCheque,
Last(TBLcotisation.Note1) AS DernierDeNote1, Last(TBLcotisation.Note2) AS
DernierDeNote2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
GROUP BY TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE
HAVING (((TBLmbcc.[ACTIF])=Yes) AND ((TBLmbcc.DUEDATE)>=(Year(Date())) &
"-10-01"));


Le dernier (LAST) enregistrement ne coïncidait pas avec MaxDeDateCotisation
(une entrée sur 600) car il y avait un enregistrement vide.
Une erreur de frappe, j'ai trouvé 6 enregistrements vide dans cette table de
3500 enregistrements.
Il va falloir créer une requête action pour supprimer les vides si on
utilise cette requête

Albert


"Gloops" a écrit dans le message de
news:li1iil$p57$
Albert a écrit, le 08/04/2014 16:31 :
Bonjour

Votre opinion, doit on supprimer les enregistements vides?

merci de vos commentaires.






Bonjour,

C'est quoi les enregistrements vides ?
Comment sont-ils apparus ?
Avatar
Gloops
Albert a écrit, le 09/04/2014 01:40 :
Bonsoir Gloops

Votre présence se fait rare.....

Les enregistrements vides sont les dates de paiement ainsi que montant.




Bonjour,

Date de paiement et montant, ce ne sont pas des enregistrements, mais
des champs.

C'est l'analyse, effectuée avec l'utilisateur avant le développement,
qui permet de décider si ça a un sens de conserver des enregistrement s
dont la date de paiement et le montant ne sont pas renseignés, et dans
la négative il convient de bien inspecter l'interface de saisie pour
voir si on ne pourrait pas éviter de créer des enregistrements avec d es
renseignements manquants.

Si on s'oriente dans cette voie, alors les enregistrements déjà
existants peuvent être purgés ainsi :

Pour purger les enregistrements dont DateCotisation est nul :
DELETE * FROM TBLcotisation WHERE DateCotisation IS Null

Pour purger les enregistrements dont MontantCotisation est nul
(attention, ce n'est pas la même chose que montant égal à zéro) :
DELETE * FROM TBLcotisation WHERE MontantCotisation IS NULL

Pour purger seulement les enregistrements dont les deux champs sont nuls :
DELETE * FROM TBLcotisation WHERE DateCotisation IS NULL AND
MontantCotisation IS NULL

(c'est cette dernière requête qui en purge le moins)

Je me suis contenté d'une approche simple où il suffit de purger la
table des cotisations.

On peut aussi, sans supprimer d'enregistrements, les filtrer de la
requête en y ajoutant

WHERE TBLcotisation.DateCotisation IS NOT NULL AND
TBLcotisation.MontantCotisation IS NOT NULL

Je n'ai pas Access sous la main donc je ne peux pas tester, mais cette
syntaxe ne me choque pas. Si ça coince merci de me dire.

Une fois la table purgée des enregistrements ne comportant pas de
montant ni de date de cotisation, on peut aussi modifier les propriété s
de la table pour qu'il ne soit pas possible de créer de tels
enregistrements. Attention, ensuite si on essaie de le faire une erreur
sera générée : on n'est pas dispensé de gérer le cas dans l'int erface.
La règle d'intégrité dans la table évite qu'une erreur de l'inter face
provoque une erreur dans la base de données.



Dans une nouvelle requête regroupée, ci desssous

SELECT TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE, Max(TBLcotisation.DateCotisation) AS
MaxDeDateCotisation, Last(TBLcotisation.MontantCotisation) AS
DernierDeMontantCotisation, Last(TBLcotisation.ArgentCheque) AS
DernierDeArgentCheque, Last(TBLcotisation.Note1) AS DernierDeNote1,
Last(TBLcotisation.Note2) AS DernierDeNote2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
GROUP BY TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE
HAVING (((TBLmbcc.[ACTIF])=Yes) AND ((TBLmbcc.DUEDATE)>=(Year(Date( ))) &
"-10-01"));


Le dernier (LAST) enregistrement ne coïncidait pas avec
MaxDeDateCotisation (une entrée sur 600) car il y avait un
enregistrement vide.
Une erreur de frappe, j'ai trouvé 6 enregistrements vide dans cette
table de 3500 enregistrements.
Il va falloir créer une requête action pour supprimer les vides si on
utilise cette requête

Albert
Avatar
Albert
Bonjour

"Gloops" a écrit dans le message de
news:li3hnt$aku$
Albert a écrit, le 09/04/2014 01:40 :

Mercii de vos commentaires, j'apprécie beaucoup

J'ai utilisé
DELETE * FROM TBLcotisation WHERE DateCotisation IS NULL AND
MontantCotisation IS NULL

et ça fait bien le travail

encore merci
Albert



Bonsoir Gloops

Votre présence se fait rare.....

Les enregistrements vides sont les dates de paiement ainsi que montant.




Bonjour,

Date de paiement et montant, ce ne sont pas des enregistrements, mais
des champs.

C'est l'analyse, effectuée avec l'utilisateur avant le développement,
qui permet de décider si ça a un sens de conserver des enregistrements
dont la date de paiement et le montant ne sont pas renseignés, et dans
la négative il convient de bien inspecter l'interface de saisie pour
voir si on ne pourrait pas éviter de créer des enregistrements avec des
renseignements manquants.

Si on s'oriente dans cette voie, alors les enregistrements déjà
existants peuvent être purgés ainsi :

Pour purger les enregistrements dont DateCotisation est nul :
DELETE * FROM TBLcotisation WHERE DateCotisation IS Null

Pour purger les enregistrements dont MontantCotisation est nul
(attention, ce n'est pas la même chose que montant égal à zéro) :
DELETE * FROM TBLcotisation WHERE MontantCotisation IS NULL

Pour purger seulement les enregistrements dont les deux champs sont nuls :
DELETE * FROM TBLcotisation WHERE DateCotisation IS NULL AND
MontantCotisation IS NULL

(c'est cette dernière requête qui en purge le moins)

Je me suis contenté d'une approche simple où il suffit de purger la
table des cotisations.

On peut aussi, sans supprimer d'enregistrements, les filtrer de la
requête en y ajoutant

WHERE TBLcotisation.DateCotisation IS NOT NULL AND
TBLcotisation.MontantCotisation IS NOT NULL

Je n'ai pas Access sous la main donc je ne peux pas tester, mais cette
syntaxe ne me choque pas. Si ça coince merci de me dire.

Une fois la table purgée des enregistrements ne comportant pas de
montant ni de date de cotisation, on peut aussi modifier les propriétés
de la table pour qu'il ne soit pas possible de créer de tels
enregistrements. Attention, ensuite si on essaie de le faire une erreur
sera générée : on n'est pas dispensé de gérer le cas dans l'interface.
La règle d'intégrité dans la table évite qu'une erreur de l'interface
provoque une erreur dans la base de données.



Dans une nouvelle requête regroupée, ci desssous

SELECT TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE, Max(TBLcotisation.DateCotisation) AS
MaxDeDateCotisation, Last(TBLcotisation.MontantCotisation) AS
DernierDeMontantCotisation, Last(TBLcotisation.ArgentCheque) AS
DernierDeArgentCheque, Last(TBLcotisation.Note1) AS DernierDeNote1,
Last(TBLcotisation.Note2) AS DernierDeNote2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro > TBLcotisation.Numéro
GROUP BY TBLmbcc.[ACTIF], TBLmbcc.LASTNAME, TBLmbcc.FIRSTNAME,
TBLmbcc.DUEDATE
HAVING (((TBLmbcc.[ACTIF])=Yes) AND ((TBLmbcc.DUEDATE)>=(Year(Date())) &
"-10-01"));


Le dernier (LAST) enregistrement ne coïncidait pas avec
MaxDeDateCotisation (une entrée sur 600) car il y avait un
enregistrement vide.
Une erreur de frappe, j'ai trouvé 6 enregistrements vide dans cette
table de 3500 enregistrements.
Il va falloir créer une requête action pour supprimer les vides si on
utilise cette requête

Albert
Avatar
Gloops
Albert a écrit, le 10/04/2014 04:58 :
et ça fait bien le travail



Tant mieux :)