PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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
  • Limitations : RPC et contexte HFSQL indépendant
  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
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.
L'option "Contexte HFSQL Indépendant" est actuellement gérée pour les bases de données suivantes :
  • HFSQL et HFSQL Client/Serveur
  • Accès Natif Oracle
  • Accès Natif SQL Server
  • Accès Natif SyBase
  • Accès Natif AS400
  • Accès Natif Progress
  • Toute base via ODBC (Ordres SQL)
L'option "Contexte HFSQL indépendant" n'est actuellement pas gérée pour les bases de données suivantes :
  • Accès Natif Informix
  • Accès Natif DB2
  • Accès Natif MySQL
  • Accès Natif PostgreSQL
  • Versions 16 et supérieures
    Accès Natif SQLite
    Nouveauté 16
    Accès Natif SQLite
    Accès Natif SQLite
  • Accès Natif xBase
  • Accès Natif XML
  • Toute base via OLE DB (ou ODBC via OLE DB)
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 Accès Natifs gèrent les contextes HFSQL indépendants. Cependant, la copie de contexte n'est pas gérée pour certains Accès Natifs : il est possible de commencer et d'effectuer un parcours dans des contextes indépendants. Mais il n'est pas possible de continuer dans un nouveau contexte un parcours débuté dans un premier contexte.
En effet, la variable source de données utilisée fait référence au contexte HFSQL en cours. Selon l'endroit où est utilisée cette variable, le contexte HFSQL peut ou non reconnaître cette source de données.

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) est présente dans le contexte HFSQL d'origine.

Limitations : RPC et contexte HFSQL indépendant

L'accès à un fichier HFSQL en RPC n'est pas autorisé depuis une fenêtre ou un état avec un contexte indépendant.
Il est nécessaire de désactiver l'option "Contexte HyperFileSQL Indépendant".
Pour désactiver cette option :
  • Dans une fenêtre : Dans l'onglet "Détail" de la description de la fenêtre, décochez l'option "Contexte HyperFileSQL Indépendant".
  • Dans un état : Dans l'onglet "Données" de la description de l'état, décochez l'option "L'exécution de l'état n'affecte pas les parcours (Contexte HyperFileSQL indépendant)".
Il est nécessaire de désactiver l'option "Contexte HFSQL Indépendant".
Pour désactiver cette option :
  • Dans une fenêtre : Dans l'onglet "Détail" de la description de la fenêtre, décochez l'option "Contexte HFSQL Indépendant".
  • Dans un état : Dans l'onglet "Données" de la description de l'état, décochez l'option "L'exécution de l'état n'affecte pas les parcours (Contexte HFSQL indépendant)".
Dans une application utilisant l'accès distant, si des contextes indépendants doivent être utilisés, il est nécessaire de les programmer avec les fonctions HSauvePosition et HRetourPosition.
Remarque : Il n'est pas possible de copier les contextes en RPC. Il faut utiliser la fonction HOuvreAnalyse ou HConnecteAccèsDistant dans le nouveau contexte pour accéder au RPC.

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 HyperFileSQL indépendant".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" 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 HyperFileSQL Indépendant)".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