DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Modification du type de blocage sur un enregistrement
  • Influence du mode de blocage
  • Echec du blocage
  • Nombre de blocages
  • Connecteur Natif SQL Server : Blocage uniquement en écriture
  • Gestion des blocages en OLE DB
  • Persistance du blocage
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
Bloque un enregistrement et restreint l'accès à cet enregistrement pour toutes les autres applications. L'enregistrement pourra ensuite être débloqué grâce à la fonction <Source>.DébloqueNumEnr.
Remarque : Après l'exécution de la fonction <Source>.BloqueNumEnr, plusieurs cas peuvent se présenter :
  • L'enregistrement est déjà bloqué par une autre application : le blocage ne peut pas être effectué.
  • Le fichier de données contenant l'enregistrement est bloqué en totalité : le blocage ne peut pas être effectué.
Par défaut, une gestion automatique des erreurs de blocages et des conflits de modification est effectuée (sauf dans le code des procédures stockées). A tout moment, il est possible de personnaliser ou de débrancher cette gestion automatique des erreurs avec la fonction <Source>.SurErreur.
Lors d'un problème de blocage, la fonction HErreurBlocage renvoie Vrai.
Attention : Cette fonction <Source>.BloqueNumEnr doit être utilisée avec précaution : en effet, lors du blocage, l'enregistrement n'est pas re-lu. Il peut donc avoir été supprimé ou modifié depuis le dernier accès à cet enregistrement. Il est conseillé d'utiliser la fonction <Source>.Lit avec option de blocage.
Java Cette fonction est disponible uniquement pour les fichiers de données HFSQL. Elle n'est pas disponible pour les fichiers de données accédés par JDBC.
Exemple
// Blocage d'un enregistrement du fichier de données Client
Client.BloqueNumEnr(hNumEnrEnCours, hBlocageLectureEcriture)
// Traitement sur l'enregistrement
...
// Redonner l'accès à l'enregistrement
Client.DébloqueNumEnr()
Syntaxe
<Résultat> = <Source>.BloqueNumEnr([<Enregistrement à bloquer>] [, <Blocage>])
<Résultat> : Booléen
  • Vrai si l'opération a été réalisée,
  • Faux en cas de problème. La fonction HErreur permet d'identifier l'erreur.
<Source> : Type correspondant à la source spécifiée
Nom du fichier de données manipulé.
<Enregistrement à bloquer> : Entier optionnel
Numéro de l'enregistrement à bloquer.
Si ce paramètre n'est pas spécifié, la fonction <Source>.BloqueNumEnr va manipuler l'enregistrement en cours.
Connecteurs Natifs (Accès Natifs) La fonction <Source>.BloqueNumEnr bloque uniquement l'enregistrement en cours. Il est impossible de spécifier un numéro d'enregistrement différent de celui en cours (Pour désigner l'enregistrement en cours, utilisez la constante hNumEnrEnCours).
<Blocage> : Constante optionnelle de type entier
Permet de déterminer le type de blocage effectué sur l'enregistrement.
hBlocageEcriture
(valeur par défaut)
Blocage en écriture : l'enregistrement du fichier de données pourra être lu par une autre application mais ne pourra pas être modifié par une autre application.
Il sera impossible pour cette autre application de bloquer l'enregistrement ou le fichier de données.
hBlocageLectureEcritureBlocage en lecture/écriture : l'enregistrement du fichier de données ne pourra ni être lu ni être modifié par une autre application.
Il sera impossible pour cette autre application de bloquer l'enregistrement ou le fichier de données.
hBlocageNonAucun blocage : l'enregistrement pourra être lu ou modifié par une autre application.
Remarques

Modification du type de blocage sur un enregistrement

Pour modifier le type de blocage d'un enregistrement, appelez la fonction <Source>.BloqueNumEnr avec le type de blocage souhaité. Il n'est pas nécessaire de débloquer l'enregistrement au préalable.

Influence du mode de blocage

Si le fichier de données est en mode de blocage hModeMono (voir la fonction <Source>.Mode), la fonction <Source>.BloqueNumEnr n'a aucun effet.

Echec du blocage

Si l'enregistrement est déjà bloqué, la demande de blocage est répétée H.NbEssais fois (50 par défaut).
Si au bout des H.NbEssais tentatives le fichier de données ne peut être bloqué, la fonction HErreurBlocage renvoie Vrai. La variable H.Niveau indique si l'enregistrement ou le fichier de données est bloqué.

Nombre de blocages

Le nombre d'enregistrements pouvant être bloqués individuellement dans un fichier de données est illimité.
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxProcédures stockéesConnecteurs Natifs (Accès Natifs)

Connecteur Natif SQL Server : Blocage uniquement en écriture

La fonction <Source>.BloqueNumEnr ne bloque qu'en écriture, pas en lecture. La fonction <Source>.BloqueNumEnr empêche donc une modification de l'enregistrement par un autre poste.
La fonction <Source>.BloqueNumEnr utilisée sur un enregistrement bloqué ne renvoie PAS d'erreur de blocage (car seule une lecture est effectuée).
Par contre, la fonction <Source>.Modifie renverra une erreur de blocage sur l'enregistrement bloqué.
WINDEVWEBDEV - Code ServeurEtats et RequêtesAjaxProcédures stockéesOLE DB

Gestion des blocages en OLE DB

La fonction <Source>.BloqueNumEnr n'est pas supportée. Cette fonction génère l'erreur non fatale "Opération invalide sur ce type de base".
WINDEVWEBDEV - Code ServeurAjaxConnecteurs Natifs (Accès Natifs)

Persistance du blocage

Avec les Connecteurs Natifs SQLServer et Sybase, la relecture d'un enregistrement bloqué par la fonction <Source>.BloqueNumEnr débloque celui-ci.
Composante : wd300hf.dll
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 20/06/2023

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