|
[WIN26] condition si colonne vide ? |
Started by frank scaldaferro, May, 06 2021 10:38 AM - 19 replies |
| |
| | | |
|
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 10:38 AM |
Bonjour,
Dans une table : TABLE_Dossier je colore une ligne si le champ de la ligne COL_D_date_relance est inférieur ou égal à la date jour. ça fonctionne bien, sauf que si le champ COL_D_date_relance n'est pas rempli, ma ligne se colore.
//colore la couleur sur les lignes selon le contenu SI delai <= dDate ALORS //TABLE_Dossier[TABLE_Dossier]..CouleurFond=iVertClair TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) SINON TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent FIN
J'ai tenté un
SINON SI TABLE_Dossier.COL_D_date_relance.Vide = Vrai ALORS// si champ est vide TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent Mais évidemment, j'ai une erreur. Car ce n'est pas de cette façon que je dois déclarer ma ligne vide... |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on May, 06 2021 - 11:02 AM |
Bonjour,
Je ne voit pas dans ton code de référence à : - COL_D_date_relance - la date jour
cependant, et si le code présenté se trouve dans l'évènement "affichage d'une ligne", le code suivant devrait solutionner ton problème :
SI delai <= dDate ET val(COL_D_date_relance) <> 0 ALORS ...
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 11:20 AM |
Autant pour moi,
// Récupère la date système dDate est une Date = DateDuJour() delai est une Date = COL_D_date_relance |
| |
| |
| | | |
|
| | |
| |
Registered member 113 messages Popularité : +8 (8 votes) |
|
Posted on May, 06 2021 - 11:22 AM |
Bonjour,
Avec la fonction DateValide ? |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 11:46 AM |
Merci ER, je vais voir pour utiliser cette fonction. |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 11:50 AM |
J'ai tenté :
// Récupère la date système dDate est une Date = DateDuJour() delai est une Date = COL_D_date_relance //colore la couleur sur les lignes selon le contenu SI delai <= dDate ALORS // si la date delai est inférieur à la date du jour //TABLE_Dossier[TABLE_Dossier]..CouleurFond=iVertClair TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) SINON SI DateValide(delai) = Faux ALORS// si champ est vide TABLE_Dossier[TABLE_Dossier]..CouleurFond=iRougeClair SINON // ne colore rien TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent FIN
Et j'ai toujours les lignes sans contenu dans la colonne délai en orange. C'est une bonne piste le DateValide, je dois mal l'utiliser. |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on May, 06 2021 - 12:20 PM |
TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent
SI delai <= dDate ALORS // si la date delai est inférieur à la date du jour TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) FIN
SI val(delai) = 0 ALORS// si champ est vide TABLE_Dossier[TABLE_Dossier]..CouleurFond=iRougeClair FIN
PS : Le mot délai a une connotation de durée et ne représente pas une date => il s'agit d'une mauvaise pratique dans le nommage de tes variables. Autant nommer cette variable date_de_relance puisque c'est ce qu'elle représente.
De même pour dDate. Est-ce que ce nom représente la date du jour. Il serait plus facile de lire ton code si cette variable était nommée : date_du_jour.
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 12:31 PM |
Merci Padbrain pour ton retour. Effectivement, ma façon de nommer mes variables ne m'aident pas à comprendre, je vais de ce pas les modifier.
Je viens de lire ta ligne de code, et je déçu de ne pas avoir compris tout de suite ce que je devais faire. Merci beaucoup. |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 12:34 PM |
Si tu as 2mn et m'expliquer pourquoi je ne peux pas utiliser un SINON et que je dois créer 2 conditions séparés. |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 06 2021 - 12:39 PM |
Effectivement c'est carrément plus lisible. Merci.
// Récupère la date système date_du_jour est une Date = DateDuJour() date_de_relance est une Date = COL_D_date_relance //colore la couleur sur les lignes selon le contenu SI date_de_relance <= date_du_jour ALORS // si la date delai est inférieur à la date du jour TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) FIN SI Val(date_de_relance) = 0 ALORS// si champ est vide TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent
FIN |
| |
| |
| | | |
|
| | |
| |
Registered member 3,889 messages Popularité : +227 (347 votes) |
|
Posted on May, 06 2021 - 2:18 PM |
Bonjour, frank scaldaferro a écrit : > Si tu as 2mn et m'expliquer pourquoi je ne peux pas utiliser un SINON et que je dois créer 2 conditions séparés. Simplement perce qu'une date vide est inférieure à toute date valide
Par ailleurs, lorsque tu déclare un champ Date, Il s'initialise toujours avec la date par défaut. Si tu n'as pas modifié cette prorpiété via DetaHeureParDéfaut dans la zone de visibilité de ta variable, c'est la date du jour.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on May, 06 2021 - 3:29 PM |
Voroltinquo t'as répondu. Pour compléter sa réponse, avec le sinon, imagine que la date de relance soit à "00000000", voici ce qui se passe :
SI date_de_relance <= date_du_jour ALORS // ceci est vrai et est exécuté SINON SI Val(date_de_relance) = 0 ALORS // ceci est tout aussi vrai mais ne sera pas exécuté puisque tu as déjà souscris à la première condition SINON .... FIN
De même, dans les deux conditions séparées, tu dois gérer toi même l'ordre des conditions séquentiellement. En fonction de la couleur la plus importante pour ton métier, sur les deux conditions qui seront vraies, celle qui sera jouée en dernier restera.
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Registered member 3,889 messages Popularité : +227 (347 votes) |
|
Posted on May, 06 2021 - 4:29 PM |
Si tu veux utiliser un SI ALORS SINON, il faut combiner des conditions dans ton SI
SI (DateRelance<=DateJour()) ET (Val(DateRelance)<>0) ALORS //La date n'est pas nulle et est antérieure à Aujourd'hui //ORANGE SINON SELON Val(DateRelance) CAS 0: //La date est nulle //Transparent AUTRE CAS : //La date n'est pas nulle et la condition est fausse donc DateRelance> aujourd'hui (enfin un bon payeur :) ) //Vert FIN .FIN
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 11 2021 - 10:02 AM |
Bonjour, merci à tout les 2 d'avoir répondu en détail à ma/mes question(s). Je vais prendre le temps de bien analyser vos réponses. Je reviendrais surement sur ce sujet. |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 17 2021 - 5:59 PM |
Bonjour, je reviens vers vous toujours dans la même idée. Et plus ça va, moins je comprends.
Je fais un essai sur la même table :
sRelance_faite est une chaîne = COL_D_relance_faite
SI sRelance_faite ="" ALORS TABLE_Dossier[TABLE_Dossier]..CouleurFond=iVertClair FIN
ça fonctionne à merveille.
Mais si j'écris cela, ça ne fonctionne pas. Que ma colonne COL_D_relance_faite soit vide ou rempli d'un oui, cela ne change rien...
dAte_du_jour est une Date = DateDuJour() date_de_relance est une Date = COL_D_date_relance sRelance_faite est une chaîne = COL_D_relance_faite
SI date_de_relance <= dAte_du_jour ET sRelance_faite = "" ALORS TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) FIN
SI Val(date_de_relance) = 0 ALORS TABLE_Dossier[TABLE_Dossier]..CouleurFond=iTransparent
FIN
|
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on May, 17 2021 - 9:08 PM |
Bonsoir, frank scaldaferro a écrit :
...
// Récupère la date système dAte_du_jour est une Date = DateDuJour() ...
Met un point d'arrêt sur cette instruction puis exécute ensuite pas à pas. lorsque tu arriveras devant la première instruction SI, vérifie les valeurs de tes variables dans le débogueur et tu sauras pourquoi tu ne rentres pas dans le SI...
-- Hth, Padbrain |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 18 2021 - 9:04 AM |
Merci Padbrain. Je vais ce de pas regarder de plus près avec le débogueur. |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 18 2021 - 9:21 AM |
Si dans la première ligne dans la COL_D_relance_faite je met le mot TEST. Quand je lance le debugogueur j'ai sRelance_faite = "TEST" idem si je met
sRelance_faite = Null.
J'en conclu que je ne lui dit pas ce que j'attends, à savoir que je veux vérifier que cette variable est vide. Direction les tutos |
| |
| |
| | | |
|
| | |
| |
Registered member 80 messages Popularité : +2 (2 votes) |
|
Posted on May, 18 2021 - 12:39 PM |
Bon, cette fois çà fonctionne, c'est juste le rafraichissement de la table pour les couleurs qui n'est plus instantané.
dAte_du_jour est une Date = DateDuJour() date_de_relance est une Date = COL_D_date_relance
sRelance_faite est une chaîne = SansEspace(COL_D_relance_faite)
SI date_de_relance <= dAte_du_jour ET sRelance_faite = "" ALORS TABLE_Dossier[TABLE_Dossier]..CouleurFond=RVB(245,166,47) FIN
Merci Padbrain, cela m'a permis de voir de plus près le débogueur. |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on May, 18 2021 - 2:17 PM |
-- Hth, Padbrain |
| |
| |
| | | |
|
| | | | |
| | |
|