PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Localisation et accès aux fichiers de données
  • Détection d'une erreur
  • Conseil : Rétablir la cohérence de la base de données
  • Cas d'erreurs
  • Transactions et contexte HFSQL indépendant
  • OLE DB et Connecteurs Natifs
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Si une transaction est en cours, annule toutes les opérations effectuées sur les fichiers de données en transactions depuis le début de la transaction. Dans ce cas, la transaction est annulée sans interrompre l'exécution du programme.
Si aucune transaction est en cours, rétablit la cohérence de la base de données et annule la transaction qui a échoué (cas d'une coupure de courant par exemple).
Remarque : Une transaction qui a échoué peut être annulée par n'importe quel programme.
Si le fichier de transaction n'est pas partagé, il est automatiquement détruit. Les enregistrements bloqués par les écritures effectuées durant la transaction sont débloqués.
AndroidWidget AndroidiPhone/iPadWindows Mobile La gestion des transactions est disponible uniquement pour les bases de données HFSQL Client/Serveur.
Versions 17 et supérieures
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Java Cette fonction est désormais disponible pour les applications Java.
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 18
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Java Cette fonction est désormais disponible pour les applications Java.
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Java Cette fonction est désormais disponible pour les applications Java.
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Exemple
Versions 19 et supérieures
MaConnexion est une Connexion
 
// Début de la transaction sur les fichiers de données associés à la connexion MaConnexion
HTransactionDébut(MaConnexion)
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
HAjoute(Commande)
// Validation de l'ajout
HTransactionFin(MaConnexion)
FAIRE
// Suppression des lignes de commandes
HTransactionAnnule(MaConnexion)
FIN
Nouveauté 19
MaConnexion est une Connexion
 
// Début de la transaction sur les fichiers de données associés à la connexion MaConnexion
HTransactionDébut(MaConnexion)
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
HAjoute(Commande)
// Validation de l'ajout
HTransactionFin(MaConnexion)
FAIRE
// Suppression des lignes de commandes
HTransactionAnnule(MaConnexion)
FIN
MaConnexion est une Connexion
 
// Début de la transaction sur les fichiers de données associés à la connexion MaConnexion
HTransactionDébut(MaConnexion)
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
HAjoute(Commande)
// Validation de l'ajout
HTransactionFin(MaConnexion)
FAIRE
// Suppression des lignes de commandes
HTransactionAnnule(MaConnexion)
FIN
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxCode Utilisateur (MCU)HFSQL
// Début de la transaction sur les fichiers de données Commande et LigneCde
HTransactionDébut("C:\Temp\Transaction.trs", "Commande, LigneCde, -Client")
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
HAjoute(Commande)
// Validation de l'ajout
HTransactionFin()
FAIRE
// Suppression des lignes de commandes
HTransactionAnnule()
FIN
WINDEVWEBDEV - Code ServeurEtats et RequêtesAndroidWidget AndroidiPhone/iPadWindows MobileAjaxCode Utilisateur (MCU)HFSQL Client/Serveur
// Début de la transaction sur les fichiers de données Commande et LigneCde
HTransactionDébut("Commande,LigneCde,-Client")
Ajout_Commande()
QUAND EXCEPTION DANS
// Ajout de la commande
HAjoute(Commande)
// Validation de l'ajout
HTransactionFin()
FAIRE
// Suppression des lignes de commandes
HTransactionAnnule()
FIN
Syntaxe
Versions 19 et supérieures
AndroidWidget AndroidJava Cette syntaxe n'est pas disponible en Android, Android Widget et Java.

Annuler une transaction en cours ou une transaction interrompue sur une connexion Client/Serveur Masquer les détails

<Résultat> = HTransactionAnnule(<Connexion>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • S'il y a une transaction en cours sur la connexion, elle est annulée.
  • S'il n'y a pas de transactions en cours, les transactions interrompues sont annulées pour la connexion spécifiée.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, la transaction est annulée sur les fichiers HFSQL Classic (ISAM).
Nouveauté 19
AndroidWidget AndroidJava Cette syntaxe n'est pas disponible en Android, Android Widget et Java.

Annuler une transaction en cours ou une transaction interrompue sur une connexion Client/Serveur Masquer les détails

<Résultat> = HTransactionAnnule(<Connexion>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • S'il y a une transaction en cours sur la connexion, elle est annulée.
  • S'il n'y a pas de transactions en cours, les transactions interrompues sont annulées pour la connexion spécifiée.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, la transaction est annulée sur les fichiers HFSQL Classic (ISAM).
AndroidWidget AndroidJava Cette syntaxe n'est pas disponible en Android, Android Widget et Java.

Annuler une transaction en cours ou une transaction interrompue sur une connexion Client/Serveur Masquer les détails

<Résultat> = HTransactionAnnule(<Connexion>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • S'il y a une transaction en cours sur la connexion, elle est annulée.
  • S'il n'y a pas de transactions en cours, les transactions interrompues sont annulées pour la connexion spécifiée.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, la transaction est annulée sur les fichiers HFSQL Classic (ISAM).

Annuler une transaction en cours ou une transaction interrompue sur toutes les connexions (HFSQL Classic ou Client/Serveur) Masquer les détails

<Résultat> = HTransactionAnnule([<Fichier de transaction>])
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • HFSQL Si le paramètre <Fichier de transaction> n'est pas précisé, la transaction en cours est annulée.
  • Si il y a une transaction en cours, TOUTES les transactions en cours sont annulées (transactions HFSQL Classic et/ou transactions HFSQL Client/Serveur).
  • Si il n'y a pas de transaction en cours, TOUTES les transactions interrompues sont annulées (en HFSQL Classic et Client/Serveur).
<Fichier de transaction> : Chaîne de caractères optionnelle (avec guillemets)
HFSQL Nom et chemin du fichier de transaction à annuler :
  • Ce paramètre doit être identique au nom indiqué dans la fonction HTransactionDébut. Ce paramètre doit être identique au nom indiqué dans la fonction HTransactionDébut (ou dans la fonction HTransaction).
  • Si ce paramètre n'est pas précisé et qu'aucune transaction n'est en cours, le fichier des transactions par défaut est pris en compte.
  • Si une transaction est en cours, cette transaction est annulée et le nom du fichier de transactions n'est pas pris en compte.
HFSQL Client/ServeurOLE DBConnecteurs Natifs (Accès Natifs) Ce paramètre n'est pas pris en compte.
AndroidWidget AndroidJava Cette syntaxe n'est pas disponible en Android, Android Widget et Java.

Annuler une transaction interrompue sur une base de données Client/Serveur (à utiliser si aucune transaction n'est en cours) Masquer les détails

<Résultat> = HTransactionAnnule(<Connexion> , <Base de données>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • Seules les transactions interrompues sur la base de données spécifiée sont annulées.
  • Les transactions en cours ne sont pas annulées.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, seules les transactions interrompues en mode HFSQL Classic sont annulées.
<Base de données> : Chaîne de caractères
Nom de la base de données concernée. Si ce paramètre correspond à une chaîne vide (""), une erreur est affichée.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesAjaxCode Utilisateur (MCU)HFSQL

Annuler une transaction (à utiliser si aucune transaction n'est en cours) Masquer les détails

<Résultat> = HTransactionAnnule(<Fichier de transaction> , <Connexion>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention :
  • Si le paramètre <Fichier de transaction> n'est pas précisé, la transaction en cours est annulée.
  • S'il y a une transaction "générale" en cours, TOUTES les transactions en cours sont annulées (transactions HFSQL Classic et/ou transactions HFSQL Client/Serveur).
  • S'il y a une transaction en cours sur la connexion, elle est annulée.
  • S'il n'y a pas de transaction en cours, seules les transactions interrompues pour la connexion spécifiée sont annulées.
<Fichier de transaction> : Chaîne de caractères (avec guillemets)
Nom et chemin du fichier de transaction à annuler.
Ce paramètre doit être identique au nom indiqué dans la fonction HTransactionDébut. Ce paramètre doit être identique au nom indiqué dans la fonction HTransactionDébut (ou dans la fonction HTransaction).
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, seules les transactions interrompues en mode HFSQL Classic sont annulées.
AndroidWidget AndroidJava Cette syntaxe n'est pas disponible en Android, Android Widget et Java.

Annuler une transaction spécifique, liée à une connexion Masquer les détails

<Résultat> = HTransactionAnnule(<Connexion> , <Transaction à annuler>)
<Résultat> : Booléen
  • Vrai la transaction a été annulée,
  • Faux en cas de problème. La fonction HErreurInfo permet d'obtenir plus de renseignements sur l'erreur.
Attention : Seules les transactions interrompues sur la base de données spécifiée sont annulées.
<Connexion> : Chaîne de caractères (avec ou sans guillemets) ou variable de type Connexion
Connexion à manipuler. Cette connexion correspond : Si ce paramètre correspond à la constante hAccèsHF7, seule la transaction interrompue en mode HFSQL Classic est annulée.
<Transaction à annuler> : Entier
Identifiant de la transaction à annuler pour la connexion spécifiée. Cet identifiant peut être connu grâce à la fonction HTransactionListe.
Remarques

Localisation et accès aux fichiers de données

Avant d'appeler la fonction HTransactionAnnule, les fichiers de données manipulés par la transaction annulée doivent être :

Détection d'une erreur

Lorsqu'une erreur est détectée par le programme (gestion des erreurs avec QUAND EXCEPTION par exemple), la fonction HTransactionAnnule permet de :
  • remettre les fichiers de données dans leur état initial.
  • annuler l'ensemble des opérations effectuées sur les fichiers de données depuis l'appel à la fonction HTransactionDébut.annuler l'ensemble des opérations effectuées sur les fichiers de données depuis l'appel à la fonction HTransactionDébut (ou à la fonction HTransaction).

Conseil : Rétablir la cohérence de la base de données

Si une panne (coupure de courant, re-démarrage du poste, ...) survient pendant une transaction, les fichiers de données risquent d'être incohérents : la transaction n'a été ni validée, ni abandonnée. Le fichier de transaction est toujours présent sur le poste.
Pour rétablir la cohérence de la base de données, il est conseillé de proposer dans votre application :
  • soit une option permettant de maintenir la cohérence de la base de données.
    Cette option peut par exemple appeler la fonction HTransactionAnnule ou les fonctions HTransactionDébut/HTransactionFin.
  • soit une gestion de l'erreur 70034 dans le code d'initialisation du projet grâce au mot-clé QUAND EXCEPTION.
    Ainsi, quand l'erreur 70034 surviendra, la cohérence de la base de données sera restaurée soit par la fonction HTransactionAnnule, soit par les fonctions HTransactionDébut/HTransactionFin.
Remarque : cette opération peut être relativement longue (selon le nombre d'opérations effectuées en transaction).

Cas d'erreurs

  • Imbrication de transactions : Il est impossible d'imbriquer les transactions (c'est-à-dire d'appeler la fonction HTransactionDébut dans une transaction). Dans ce cas, l'erreur 70031 est générée.Imbrication de transactions : Il est impossible d'imbriquer les transactions (c'est-à-dire d'appeler la fonction HTransactionDébut ou la fonction HTransaction dans une transaction). Dans ce cas, l'erreur 70031 est générée.
  • Versions 19 et supérieures
    Une erreur fatale est affichée dans les cas suivants :
    • Une transaction est débutée sur toutes les connexions alors qu'il existe au moins une connexion en transaction.
    • Une transaction sur une connexion est débutée après avoir commencé une transaction sur toutes les connexions.
    • Une transaction sur toutes les connexions est débutée alors qu'il existe au moins une connexion dont le mode d'isolation n'est pas "Read Uncommitted".
    Nouveauté 19
    Une erreur fatale est affichée dans les cas suivants :
    • Une transaction est débutée sur toutes les connexions alors qu'il existe au moins une connexion en transaction.
    • Une transaction sur une connexion est débutée après avoir commencé une transaction sur toutes les connexions.
    • Une transaction sur toutes les connexions est débutée alors qu'il existe au moins une connexion dont le mode d'isolation n'est pas "Read Uncommitted".
    Une erreur fatale est affichée dans les cas suivants :
    • Une transaction est débutée sur toutes les connexions alors qu'il existe au moins une connexion en transaction.
    • Une transaction sur une connexion est débutée après avoir commencé une transaction sur toutes les connexions.
    • Une transaction sur toutes les connexions est débutée alors qu'il existe au moins une connexion dont le mode d'isolation n'est pas "Read Uncommitted".

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 HTransactionDébut pour démarrer une transaction dans le nouveau contexte.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 HTransactionDébut (ou la fonction HTransaction) pour démarrer une transaction dans le nouveau contexte.
WINDEVWEBDEV - Code ServeurAjaxCode Utilisateur (MCU)OLE DBConnecteurs Natifs (Accès Natifs)

OLE DB et Connecteurs Natifs

Dans cette version, la fonction HTransactionAnnule ne peut pas être utilisée. Pour démarrer une transaction, utilisez la fonction SQLTransaction.Seules les syntaxes avec connexion sont prises en compte par les Connecteurs Natifs qui gèrent les transactions. Il est également possible d'utiliser la fonction SQLTransaction.
Composante : wd250hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire