DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Editeurs / Editeur de fenêtres et de pages
  • Présentation
  • Qu'est-ce qu'un contexte HFSQL ?
  • Contexte HFSQL indépendant
  • Transactions et contexte HFSQL indépendant
  • Limitation : Fichiers de données au format 5.5 et Vues au format Hyper File 5.5
  • Limitation : Contexte HFSQL indépendant et utilisation d'un driver ODBC
  • Contextes HFSQL et fenêtres
  • Comment gérer le contexte HFSQL de fenêtre ?
  • Si les contextes HFSQL ne sont pas indépendants pour chaque fenêtre (option non cochée)
  • Si les contextes HFSQL sont indépendants pour chaque fenêtre (option cochée)
  • Contextes HFSQL et états
  • Comment gérer le contexte HFSQL d'état ?
  • Si les contextes HFSQL ne sont pas indépendants pour chaque état
  • Si les contextes HFSQL sont indépendants pour chaque état
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Gestion des contextes HFSQL dans les fenêtres et dans les états
Présentation
Un contexte HFSQL contient toutes les informations relatives aux données manipulées :
  • Informations sur l'enregistrement en cours : numéro de l'enregistrement, contenu des rubriques, ...
  • Valeurs des fonctions HTrouve, HEnDehors, ...
  • Caractéristiques du filtre en cours.
  • Caractéristiques de la recherche en cours.
  • Caractéristiques du parcours en cours.
  • Nom des fichiers ouverts.
  • Nom et caractéristiques des requêtes (fonctions HExécuteRequêteSQL, HExécuteRequête, SQLExec, SQLExecWDR).
Remarque : Une seule transaction est possible par contexte HFSQL.
Qu'est-ce qu'un contexte HFSQL ?

Contexte HFSQL indépendant

WINDEV permet de créer des contextes HFSQL indépendants :
Lors de l'ouverture de la fenêtre (ou de l'état), le contexte HFSQL existant est automatiquement "doublé" (une copie du contexte existant est réalisé) : les opérations réalisées dans chacun des contextes seront indépendantes de celles réalisées dans les autres contextes. La gestion du contexte indépendant permet d'obtenir le même résultat que si 2 instances de la même application s'exécutaient en parallèle.
La gestion d'un contexte HFSQL indépendant est recommandée pour les applications MDI et multi-thread.
Le contexte HFSQL indépendant est pris en compte :
  • Lors de la manipulation d'une base de données HFSQL avec des fonctions HFSQL (fonctions commençant par la lettre H).
  • Lors de la manipulation d'une base de données HFSQL avec des fonctions SQL (fonctions commençant par les lettres SQL).
  • Lors de la manipulation d'une base de données quelconque via un driver ODBC, en utilisant les fonctions SQL.
Remarques :
  • Il est impossible d'accéder depuis du code global d'une fenêtre mère MDI à une requête exécutée dans une fenêtre fille qui a un contexte HFSQL indépendant, même si la source de données utilisée est globale au projet.
  • Tous les Connecteurs Natifs gèrent les contextes HFSQL indépendants : la copie de contexte est effectuée et les opérations effectuées seront indépendantes. Cependant, certains Connecteurs Natifs ne gèrent pas le transfert de la position courante au moment de la copie. Il est dans ce cas nécessaire de se repositionner sur l'enregistrement courant après la copie de contexte.

Transactions et contexte HFSQL indépendant

Lors de la copie de contexte, si une transaction est en cours sur le premier contexte, le nouveau contexte n'est pas en transaction. Il faut rappeler la fonction HTransactionDebut pour démarrer une transaction dans le nouveau contexte.

Limitation : Fichiers de données au format 5.5 et Vues au format Hyper File 5.5

  • Les contextes indépendants ne sont pas gérés sur les fichiers Hyper File 5.5.
  • La copie d'un contexte HFSQL (création d'un contexte HFSQL indépendant à partir du contexte existant au moment de la copie) échoue si une vue Hyper File 5.5 (fonction HCréeVue_55 conservée par compatibilité) est présente dans le contexte HFSQL d'origine.

Limitation : Contexte HFSQL indépendant et utilisation d'un driver ODBC

Attention : la requête sera dupliquée uniquement si la copie du contexte (ouverture de la fenêtre ou de l'état) est réalisée APRES avoir initialisé le parcours du résultat avec la fonction SQLPremier.
Ne pas faire
SI SQLExec("Requête1") ALORS
Ouvre(FEN_Résultat)
FIN
Faire
SI SQLExec("Requête1") ALORS
SQLPremier("Requête1")
Ouvre(FEN_Résultat)
FIN
Contextes HFSQL et fenêtres

Comment gérer le contexte HFSQL de fenêtre ?

Pour gérer ou non le contexte HFSQL indépendant d'une fenêtre :
  1. Affichez la description de la fenêtre.
  2. Affichez l'onglet "Détail".
  3. Cochez ou non l'option "Contexte HFSQL indépendant".

Si les contextes HFSQL ne sont pas indépendants pour chaque fenêtre (option non cochée)

A chaque ouverture de fenêtre, le contexte HFSQL est mis à jour en fonction des manipulations réalisées dans la fenêtre.
Toutes les fenêtres travaillent sur le même contexte HFSQL.
Si une même fenêtre est ouverte plusieurs fois en parallèle dans l'application, les contextes HFSQL risquent de se chevaucher et les données manipulées ne correspondront pas aux données souhaitées.

Si les contextes HFSQL sont indépendants pour chaque fenêtre (option cochée)

Le contexte HFSQL en cours est complètement copié à chaque nouvelle ouverture de fenêtre. Il est ainsi possible de faire des opérations différentes (filtres, tris, recherches) sur le même fichier dans des fenêtres ouvertes en parallèles. Chaque fenêtre a son propre contexte. Aucun risque de confusion de données.
Chaque contexte HFSQL étant indépendant, il est possible de gérer les blocages des enregistrements dans chaque contexte. La fermeture d'une fenêtre ayant un contexte indépendant :
  • débloquera automatiquement les enregistrements bloqués par cette fenêtre,
  • fermera le contexte correspondant.
De même, une fonction HFSQL utilisée dans un contexte n'aura d'effet que dans ce contexte. Ainsi si la gestion des mémos est active à l'ouverture des contextes indépendants, il est possible de désactiver cette fonctionnalité dans une fenêtre : la désactivation des mémos sera uniquement réalisée dans le contexte correspondant à la fenêtre.
Contextes HFSQL et états

Comment gérer le contexte HFSQL d'état ?

Pour gérer ou non le contexte HFSQL indépendant d'un état:
  1. Affichez la description de l'état (option "Description de l'état" du menu contextuel de l'état).
  2. Dans l'onglet "Données", cochez ou non l'option "L'exécution de l'état n'affecte pas les parcours (contexte HFSQL indépendant)".

Si les contextes HFSQL ne sont pas indépendants pour chaque état

A chaque impression d'état, le contexte HFSQL est mis à jour en fonction des manipulations réalisées dans l'état. Toutes les états en cours d'impression utilisent le même contexte HFSQL.
Si plusieurs états parcourent simultanément le même fichier, il est recommandé d'utiliser des contextes HFSQL indépendants.

Si les contextes HFSQL sont indépendants pour chaque état

Le contexte HFSQL en cours est complètement copié à chaque nouvelle impression d'un état. Il est ainsi possible de faire des opérations différentes (filtres, tris, recherches) sur le même fichier dans des états ouverts en parallèle. Chaque état a son propre contexte. Aucun risque de confusion de données.
Liste des exemples associés :
WD Multi-Fenetrage Exemples didactiques (WINDEV) : WD Multi-Fenetrage
[ + ] Cet exemple permet de comprendre les bases de la gestion du Multi-fenêtrage et des onglets dynamiques avec WINDEV.

Cet exemple présente une interface simple de gestion de fiches client sous deux formes :
- multi fenêtrée avec une interface MDI,
- multi onglets avec un champ onglet dynamique.
Voir Aussi
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 26/10/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale