DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Gestion des Identifiants automatiques
  • Modification des enregistrements supprimés ou rayés
  • Conflit de modification ou de suppression
  • Gestion des doublons et de l'intégrité
  • Version du fichier de données après une modification
  • Gestion des mémos binaires
  • Modification d'un enregistrement sélectionné dans une requête
  • Parcours et modification d'un enregistrement
  • xBase
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
HModifie (Fonction)
En anglais : HModify
ODBCNon disponible avec ce type de connexion
Modifie l'enregistrement spécifié ou l'enregistrement présent en mémoire dans le fichier de données (la requête ou la vue). Les index correspondant à toutes les clés utilisées dans le fichier de données sont mis à jour automatiquement. Les mémos sont ajoutés si nécessaire si la gestion des mémos est active (HGèreMémo).
Après l'exécution de la fonction HModifie :
  • il est conseillé de réaliser une gestion des erreurs :
    WINDEV WINDEV propose une gestion automatique des erreurs pour les 5 types d'erreur suivants : Erreur de doublons, Erreur d'intégrité, Erreur de mot de passe, Erreur de conflit de modification et d'état lors du conflit de modification, Erreur de blocage. Pour plus de détails, consultez Gestion assistée des erreurs HFSQL.
  • si la gestion des doublons est activée et si le fichier de données contient une clé unique, la fonction HErreurDoublon renvoie Vrai si la valeur de la clé modifiée n'est pas unique. L'enregistrement n'est pas modifié.
  • si un problème de blocage est rencontré (tentative de modification d'un enregistrement bloqué), la fonction HErreurBlocage renvoie Vrai et l'enregistrement n'est pas modifié.

    Java Accès par JDBC : La gestion des blocages n'est pas disponible sur les bases de données accédées par JDBC.
  • le numéro de l'enregistrement en cours n'est pas modifié. Par défaut, le parcours en cours n'est pas affecté.
Remarque : Cette fonction peut être utilisée sur un fichier de données, une vue HFSQL ou une requête.
// Recherche l'enregistrement
HLitRecherchePremier(Client, Nom, "Moulin")

SI HTrouve() = Vrai ALORS
// Modification d'un enregistrement dans un fichier de données
// (enregistrement décrit par programmation)
Client.Prenom = "François"
Client.Ville = "Montpellier"
Client.CodeP = "34000"
Client.Pays = "France"
HModifie(Client)
FIN
// Modifie l'enregistrement en cours du fichier de données "Client"
// affiché dans une fenêtre
EcranVersFichier() 
HModifie(Client)
Syntaxe
<Résultat> = HModifie([<Fichier de données> [, <Numéro d'enregistrement> [, <Options>]]])
<Résultat> : Booléen
  • Vrai si l'enregistrement a été modifié,
  • Faux en cas de problème (erreur d'intégrité, de doublons, etc.) : l'enregistrement n'est pas modifié. La fonction HErreur permet d'identifier l'erreur.
<Fichier de données> : Chaîne de caractères optionnelle
Nom du fichier de données, de la vue HFSQL ou de la requête manipulé. Si ce nom n'est pas spécifié, la fonction HModifie va manipuler le dernier fichier de données utilisé par la dernière fonction de gestion HFSQL (fonction commençant par la lettre H).
<Numéro d'enregistrement> : Entier optionnel
Numéro de l'enregistrement à modifier. L'enregistrement chargé en mémoire est ré-écrit sur l'enregistrement spécifié.
Si ce numéro est supérieur au nombre d'enregistrements dans le fichier de données, des enregistrements supprimés intermédiaires seront créés pour que la lecture séquentielle du fichier de données (fonction HLit) soit cohérente.

Si ce paramètre n'est pas spécifié (est égal à 0 ou à la constante hNumEnrEnCours), la fonction HModifie va modifier l'enregistrement en cours dans le fichier de données.

ATTENTION : Il ne faut pas confondre le numéro d'enregistrement avec l'identifiant automatique associé à l'enregistrement. Dans une utilisation normale, ces deux numéros ne sont pas identiques. Le numéro d'enregistrement peut être connu par la fonction HNumEnr.

Pour utiliser le paramètre <Options>, il est nécessaire de préciser le paramètre <Numéro d'enregistrement>.
Hyper File 5.5 Ce paramètre n'est pas pris en compte.
OLE DBConnecteurs Natifs (Accès Natifs) Ce paramètre doit obligatoirement correspondre au numéro de l'enregistrement en cours (constante hNumEnrEnCours).
Java Accès par JDBC : Ce paramètre doit obligatoirement correspondre au numéro de l'enregistrement en cours (constante hNumEnrEnCours).
<Options> : Constante optionnelle
Paramètre :
  • l'influence de la modification sur le parcours en cours,
  • le mode de calcul de l'identifiant automatique,
  • le mode de blocage de l'enregistrement modifié. Si aucune constante de blocage n'est précisé, l'enregistrement modifié est débloqué.

    Java Accès par JDBC : La gestion des blocages n'est pas disponible sur les bases de données accédées par JDBC.
  • la gestion des doublons,
  • la gestion de l'intégrité.
Remarque : Pour utiliser ce paramètre, il est nécessaire de préciser le paramètre <Numéro d'enregistrement>.
Hyper File 5.5 Ce paramètre n'est pas pris en compte.
hAffecteParcoursInfluence de la modification sur le parcours : La modification affecte le parcours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HModifie positionne sur l'enregistrement suivant l'enregistrement modifié (en tenant compte de ses nouvelles valeurs).
ATTENTION : Dans tous les cas (constante hAffecteParcours utilisée ou non) : si la fonction HModifie est utilisée dans un parcours et si la valeur de la rubrique de parcours est modifiée, l'enregistrement en cours pourra être lu à nouveau dans la suite du parcours. En effet, la modification de la rubrique de parcours met à jour la clé d'index du fichier. Lors de la lecture des enregistrements suivants, cette modification est prise en compte.

La constante hAffecteParcours est prioritaire sur la constante hEcritureDéfaut.
hBlocageEcritureMode de blocage de l'enregistrement modifié : Blocage en écriture : l'enregistrement modifié sera bloqué en écriture. Cet enregistrement pourra être lu par une autre application mais ne pourra pas être modifié par une autre application. Seule l'application en cours pourra le modifier, ou le débloquer.


Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageLectureEcritureMode de blocage de l'enregistrement modifié : Blocage en lecture/écriture : l'enregistrement modifié sera bloqué en lecture et en écriture. Cet enregistrement ne pourra ni être lu ni être modifié par une autre application. Seule l'application en cours pourra le modifier, le lire ou le débloquer.


Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageNon
(valeur par défaut)
Mode de blocage de l'enregistrement modifié : Aucun blocage : l'enregistrement modifié ne sera pas bloqué.

Java Accès par JDBC : Cette constante n'est pas disponible.
hEcritureDéfaut
(valeur par défaut)
Influence de la modification sur le parcours : La modification n'affecte pas le parcours en cours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HModifie positionne sur l'enregistrement suivant l'enregistrement en cours avant la modification.

ATTENTION : Si la fonction HModifie est utilisée dans un parcours et si la valeur de la rubrique de parcours est modifiée, l'enregistrement en cours pourra être lu à nouveau dans la suite du parcours. En effet, la modification de la rubrique de parcours met à jour la clé d'index du fichier. Lors de la lecture des enregistrements suivants, cette modification est prise en compte.

La constante hAffecteParcours est prioritaire sur la constante hEcritureDéfaut.
hFalsifieHorodatageGestion des rubriques de type Horodatage : Par défaut, une rubrique de type Horodatage contient la date et l'heure de la création/modification de l'enregistrement, calculées automatiquement.
Cette constante empêche la mise à jour de la rubrique de type Horodatage : la dernière valeur présente dans l'enregistrement sera conservée.
hFixeIDAutoMode de calcul de l'identifiant automatique : L'identifiant automatique n'est pas calculé lors de l'ajout : la valeur de l'identifiant sera celle mémorisée au moment de l'ajout.
La prochaine valeur de l'identifiant calculée par le moteur HFSQL correspondra à la plus grande valeur de l'identifiant dans le fichier +1.
Si les constantes hFixeIDAuto et hForceIDAuto sont utilisées en même temps, une erreur WLangage est générée.
hForceIDAutoMode de calcul de l'identifiant automatique : L'identifiant automatique n'est pas calculé lors de l'ajout. L'identifiant correspond :
  • soit à la valeur affectée à la rubrique par programmation (par exemple CLCLEUNIK = 7)
  • soit à la valeur par défaut de l'identifiant spécifiée dans l'éditeur d'analyses (si le fichier de données vient d'être ouvert, sans lecture d'enregistrement)
  • soit à la valeur de l'identifiant présent en mémoire (valeur de l'identifiant pour le dernier enregistrement lu dans le fichier de données).
Après l'ajout de l'enregistrement, le prochain identifiant automatique calculé par défaut par le moteur HFSQL sera calculé sans tenir compte de la valeur ajoutée par hForceIDAuto.
Si les constantes hFixeIDAuto et hForceIDAuto sont utilisées en même temps, une erreur WLangage est générée.
hIgnoreDoublonMode de gestion des doublons : Ignore le contrôle des doublons pour cette opération, même si le contrôle automatique des doublons est branché (fonction HGèreDoublon).
Si les constantes hIgnoreDoublon et hVérifieDoublon sont utilisées en même temps, une erreur WLangage est générée.

Java Accès par JDBC : Cette constante n'est pas disponible.
hIgnoreIntégritéMode de gestion de l'intégrité : Ignore le contrôle d'intégrité sur cette opération d'ajout, même si le contrôle de l'intégrité automatique est branché (fonction HGèreIntégrité).
Si les constantes hIgnoreIntégrité et hVérifieIntégrité sont utilisées en même temps, une erreur WLangage est générée.

Java Accès par JDBC : Cette constante n'est pas disponible.
hRecalculeIDAutoMode de calcul de l'identifiant automatique : L'identifiant automatique de l'enregistrement sera re-calculé lors de l'écriture. Cette constante est prioritaire sur les constantes hForceIDAuto et hFixeIDAuto.
hVérifieDoublonMode de gestion des doublons : Contrôle les doublons pour cette opération, même si le contrôle des doublons est débranché (fonction HGèreDoublon).
Si les constantes hIgnoreDoublon et hVérifieDoublon sont utilisées en même temps, une erreur WLangage est générée.

Java Accès par JDBC : Cette constante n'est pas disponible.
hVérifieIntégritéMode de gestion de l'intégrité : Contrôle l'intégrité de l'opération même si le contrôle de l'intégrité automatique est débranché (fonction HGèreIntégrité).
Si les constantes hIgnoreIntégrité et hVérifieIntégrité sont utilisées en même temps, une erreur WLangage est générée.

Java Accès par JDBC : Cette constante n'est pas disponible.
Hyper File 5.5 Les rubriques de type texte sont automatiquement complétées par des espaces.
Remarques
WINDEVUniversal Windows 10 AppJavaLangage ExterneHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Gestion des Identifiants automatiques

Par défaut (sans utilisation des constantes de modification de l'identifiant automatique), la fonction HModifie utilisée sur un enregistrement actif ou rayé ne modifie pas l'identifiant automatique (même si l'identifiant automatique a été affecté dans le langage) : l'identifiant automatique présent dans le fichier de données est ré-utilisé.
Les constantes hForceIDAuto et hFixeIDAuto permettent de modifier le comportement par défaut de l'identifiant automatique.
Pour plus de détails sur la gestion de l'identifiant automatique lors de la modification d'un enregistrement, consultez Gestion de l'identifiant automatique lors d'une modification.
OLE DBConnecteurs Natifs (Accès Natifs)
  • Si la base de données génère un identifiant automatique, le moteur HFSQL conserve cette valeur. Si les constantes hForceIDAuto ou hFixeIDAuto sont précisées, le moteur HFSQL remplace la valeur générée par la valeur voulue.
    Remarque : la constante hForceIDAuto équivaut à hFixeIDAuto : l'identifiant automatique calculé par HFSQL lors du prochain ajout sera unique dans le fichier de données.
  • Si la base de données ne génère pas d'identifiant automatique, le moteur HFSQL génère la valeur et l'affecte à l'identifiant automatique.
WINDEVUniversal Windows 10 AppJavaLangage ExterneHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Modification des enregistrements supprimés ou rayés

La modification d'un enregistrement rayé ou supprimé réactive l'enregistrement.
WINDEVUniversal Windows 10 AppLangage ExterneHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Conflit de modification ou de suppression

Les erreurs de conflit de modification ou de conflit de suppression apparaissent uniquement si la fonction HModifie est utilisée sur l'enregistrement courant. En effet, si un numéro d'enregistrement est précisé, il ne peut y avoir de conflit, car l'enregistrement n'a pas été lu avant la modification.
Pour plus de détails sur la gestion automatique des erreurs de conflit, consultez Gestion assistée des erreurs HFSQL.

Gestion des doublons et de l'intégrité

Les contrôles d'intégrité et de doublons s'effectuent uniquement sur les clés pour lesquelles :
  • un contrôle est actif,

    et
  • la valeur de la rubrique est modifiée par rapport à l'enregistrement présent dans le fichier de données.
Exemple :
...
Client.Nom = "TREMOULET"
Client.Prénom = "Milo"
HAjoute(Client)  // contrôles intégrité et doublon effectués sur 
// Nom et sur Prénom si gestions actives
Client.Prénom = "Martin"
HModifie(Client)  // contrôles intégrité et doublon effectués sur 
// Prénom uniquement si gestions actives
...
WINDEVUniversal Windows 10 AppJavaHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Version du fichier de données après une modification

Si l'enregistrement a été modifié (pas d'erreur de doublons ou d'intégrité), le numéro de version du fichier de données est modifié. Pour connaître le numéro de version, utilisez la fonction HVersion.
WINDEVUniversal Windows 10 AppJavaHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)

Gestion des mémos binaires

Lors de la modification d'un enregistrement, les mémos sont modifiés si nécessaire (si la gestion des mémos est activée à l'aide de la fonction HGèreMémo).
Rappel : pour initialiser une rubrique de type mémo binaire, utilisez la fonction HAttacheMémo.
WINDEVUniversal Windows 10 AppJavaHFSQL ClassicHFSQL Client/ServeurProcédures stockées

Modification d'un enregistrement sélectionné dans une requête

La modification d'un enregistrement dans une requête peut être effectuée :
  • soit uniquement dans le résultat de la requête
  • soit directement dans les fichiers de données manipulés par la requête (constante hModifieFichier utilisée dans les fonctions HExécuteRequête ou HExécuteRequêteSQL). Dans ce cas, la constante hAvecFiltre est automatiquement sélectionnée.
Il est nécessaire de distinguer deux cas, en fonction du mode d'exécution de la requête (avec ou sans la constante hAvecFiltre).
Exécution de la requête avec la constante hAvecFiltre
  • Seule la modification de l'enregistrement courant est possible.
  • Si la fonction est exécutée pour modifier une requête basée sur plusieurs fichiers de données, la modification est répercutée sur les fichiers de données liés.
  • La modification du contenu d'une rubrique calculée provoque une erreur WLangage. Le contenu de ces rubriques est automatiquement calculé lors de la modification de l'enregistrement.
Exécution de la requête sans la constante hAvecFiltre
  • Si la fonction est exécutée pour modifier une requête basée sur plusieurs fichiers de données, la modification est répercutée sur les fichiers de données liés.
  • Si l'enregistrement modifié ne correspond plus à la sélection de la requête, l'enregistrement sera toujours présent dans le résultat de la requête
  • La modification du contenu d'une rubrique calculée provoque une erreur WLangage. Le contenu de ces rubriques est automatiquement calculé lors de la modification de l'enregistrement.
Attention :
  • Toute modification dans une requête utilisant les groupes ou les agrégats est interdite.
  • La gestion de l'intégrité et des doublons n'est pas réalisée lors d'opérations sur les requêtes multi-fichiers : il est conseillé d'utiliser les transactions pour éviter tout problème.
WINDEVJavaProcédures stockéesOLE DBConnecteurs Natifs (Accès Natifs)

Parcours et modification d'un enregistrement

Si la modification est réalisée pendant un parcours, l'enregistrement modifié sera visible dans le parcours en cours uniquement. Si d'autres parcours ont été définis sur cette base de données, l'enregistrement modifié ne sera visible qu'après ré-initialisation de ces parcours.
Si la constante hAffecteParcours est utilisée, la modification est plus lente car la table ou la requête est rafraîchie.
ATTENTION : Si la fonction HModifie est utilisée dans un parcours et si la valeur de la rubrique de parcours est modifiée, l'enregistrement en cours pourra être lu à nouveau dans la suite du parcours. En effet, la modification de la rubrique de parcours met à jour la clé d'index du fichier. Lors de la lecture des enregistrements suivants, cette modification est prise en compte.
WINDEVConnecteurs Natifs (Accès Natifs)

xBase

La fonction HSupprime a le même effet que la fonction HRaye : l'enregistrement est rayé et non supprimé. L'enregistrement peut donc être réactivé par la fonction HModifie. Dans ce cas, la fonction HEtat renvoie la constante hEtatRaye sur un enregistrement supprimé (et non la constante hEtatSup).
Classification Métier / UI : Code métier
Composante : wd290hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

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