Lors d'une recherche dans colonne de type UUID d'une table HFSQL, on aura couramment le code :
MaTableDeDonnées.HLitRecherche(Colonne_UUID, sVariable)
Dans ce code :
- Colonne_UUID est une colonne d'une table décrite de type UUID,
- sVariable est une variable ou un membre de type chaine.
Si la variable sVariable n'a pas été affectée avec un UUID valide, l'exécution déclenche le mécanisme de sécurité du WLangage car la conversion est impossible :
Vous avez appelé la fonction 'HLitRecherche'.
Impossible de convertir la donnée du type <Chaîne> dans le type <UUID (128 bits)> de la rubrique <MaTableDeDonnées.Colonne_UUID >.
Code erreur : 70500
Afin d'éviter tout risque d'erreur, une solution recommandée consiste à utiliser une variable de type UUID. On peut ajouter une procédure utilitaire au projet, appelée systématiquement pour toutes les conversions.
Exemple :
Procedure ChaineVersUUID(sChaine) : UUID unUUID est un UUID SI sChaine="" ALORS unUUID=Nil_UUID SINON QUAND EXCEPTION DANS
FAIRE unUUID = Nil_UUID
FIN FIN RENVOYER unUUID
Le code de la recherche sera alors (plus de risque d'erreur) :
UUID_A_Chercher est un UUID UUID_A_Chercher = ChaineVersUUID(sVariable) SI UUID_A_Chercher <> Nil_UUID ALORS SI HLitRecherche(MaTableDeDonnées, Colonne_UUID, UUID_A_Chercher) ALORS
... FIN
(**) La procédure de conversion peut remonter un assert, une erreur, un message à gestionnaire, pour indiquer qu'il y a des données mémorisées dans un mauvais format et donc à contrôler.
Bon à savoir, un UUID sera considéré valide lorsqu'il a un format usuel :
- 8-4-4-4-12
- ou {8-4-4-4-12}
- ou notation historique Microsoft "32" (monobloc).
Ce choix a été préféré à celui d'accepter n'importe quel format, afin d'être sûr de ne pas laisser passer "n'importe quoi" par erreur. Sachant que normalement tous les UUID sont écrits avec ces 3 formats usuels.
|
|
< Retour
|
|
|
|
|
|