La manipulation des dates dans Paradox: requêtes et affichage

Lorsque dans votre programmation Objectpal, vous devez utiliser des requêtes avec des sélections portant sur des dates, la syntaxe que vous devez utiliser est fonction du format par défaut utiliser par Paradox pour votre session. Ce format peut éventuellement changer d'un poste à un autre selon les configurations. Ainsi une requête donnera des résultats sur un poste et d'autres résultats (ou rien du tout) sur un autre.

 

Pour éviter ce phénomène, il est possible de rendre votre programmation indépendante du contexte, ou plutôt, de gérer une adaptation du format de votre sélection à la configuration du poste.

1. Formater une date à placer en critère d'une requête QBE

DT est une variable de type Date
DTST est une variable de type string (la chaîne de caractère à placer en critère)

Pour obtenir dans DtST une chaîne de caractères contenant une date reconnue par le BDE:

DTST = format(formatGetSpec("DBDate"), DT)

Mettre ensuite ~DTST dans le critère...



Table.DB | DATE_CONCERNEE |
         | ~DTST          |

il peut en être de même pour les nombres:

NUST = format(formatGetSpec("DBNumeric"), NU)

 

il peut en être de même pour les heures

TMST = format(formatGetSpec("DBtime"), TM)

 

il peut en être de même pour les dates & heures

DHST = format(formatGetSpec("DBtimestamp"), DH)

2. Formater l'affichage d'une date dans une fiche ou un état :

Paramétrer la propriété format de l'UIObject

3. Formater une date dans un message (chaîne de caractère)

string(DT) ou strVal(DT) tiennent compte du paramètre de formatSetDateDefault(), une méthode qui impose son paramètre tout au long de la session de Paradox

 

=> Soit :

a. initialiser formatSetDateDefault() une bonne fois au démarrage de 'application:

If Not FormatExist("Date_JJMMAAAA") Then          FormatAdd("Date_JJMMAAAA", "DY3M2D2O(%D/%M/%Y)")
EndIf
If Not formatsetDateDefault("Date_JJMMAAAA") Then
          ErrorShow("Format des dates par défaut.")
EndIf

 

b. formater correctement la date à chaque fois :

format("DY3M2D2O(%D/%M/%Y)", DT)

 

Remarque : "DY3M2D2O(%D/%M/%Y)" correspond au formatage de longueur fixe JJ/MM/AAAA
(voir l'aide de la méthode format pour des formatages plus spécifiques...)