PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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.
    WEBDEV - Code ServeurWindows Mobile Il est conseillé de vérifier qu'aucune erreur n'a été générée : 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. 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é.
    Windows Mobile La gestion des blocages est réalisée uniquement sur les fichiers de données HFSQL Client/Serveur ou manipulés par un accès natif. Il n'est pas possible de bloquer un enregistrement HFSQL Mobile. En effet, le système d'exploitation du Pocket PC ne permet pas de bloquer des enregistrements.
    PHP La gestion des blocages n'est pas disponible.
    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.
Versions 15 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Android Cette fonction est désormais disponible pour les applications Android.
Android Cette fonction est désormais disponible pour les applications Android.
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
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.
Nouveauté 18
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.
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.
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.
// Recherche l'enregistrement
HLitRecherchePremier(Client, Nom, "Moulin")

SI HTrouve() = Vrai ALORS
       // Modification d'un enregistrement dans un fichier
        // (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 "Client"
// affiché dans une fenêtre
EcranVersFichier()
HModifie(Client)
Syntaxe
<Résultat> = HModifie([<Nom du fichier> [, <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.
<Nom du fichier> : Chaîne de caractères optionnelle (avec ou sans guillemets)
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.
PHPOLE DBAccè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é.
    Windows Mobile La gestion des blocages est réalisée uniquement sur les fichiers de données HFSQL Client/Serveur ou manipulés par un accès natif. Il n'est pas possible de bloquer un enregistrement HFSQL Mobile. En effet, le système d'exploitation du Pocket PC ne permet pas de bloquer des enregistrements.
    PHP La gestion des blocages n'est pas disponible.
    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.
hBlocageNon
(valeur par défaut)
Mode de blocage de l'enregistrement modifié : Aucun blocage (même si la fonction HDébutVerrou a été utilisée) : l'enregistrement modifié ne sera pas bloqué.
PHP Cette constante n'est pas disponible.

Java Accès par JDBC : Cette constante n'est pas disponible.
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.

Windows Mobile Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Accès Natifs. Cette constante n'est pas disponible pour HFSQL Mobile. En effet, il n'est pas possible de bloquer un enregistrement. Cette limitation est due au système d'exploitation du Pocket PC.

PHP Cette constante n'est pas disponible.

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.

Windows Mobile Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Accès Natifs. Cette constante n'est pas disponible pour HFSQL Mobile. En effet, il n'est pas possible de bloquer un enregistrement. Cette limitation est due au système d'exploitation du Pocket PC.

PHP Cette constante n'est pas disponible.

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.
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.
PHP Cette constante n'est pas disponible.

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.
PHP Cette constante n'est pas disponible.

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.
PHP Cette constante n'est pas disponible.
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.
PHP Cette constante n'est pas disponible.

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.
PHP Cette constante n'est pas disponible.

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
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppJavaPHPAjaxLangage ExterneHFSQLHFSQL 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.
PHPOLE DBAccè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.
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppJavaPHPAjaxLangage ExterneHFSQLHFSQL 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.
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppPHPAjaxLangage ExterneHFSQLHFSQL 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
...
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppJavaPHPAjaxHFSQLHFSQL 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.
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppJavaPHPAjaxHFSQLHFSQL Client/ServeurProcédures stockéesHyper File 5.5OLE DBAccè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.
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 AppJavaPHPAjaxHFSQLHFSQL 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.
WINDEVWEBDEV - Code ServeurWindows MobileJavaPHPAjaxProcédures stockéesOLE DBAccè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.
WINDEVWEBDEV - Code ServeurAccè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).
Composantes
WINDEVWEBDEV - Code Serveur wd220hf.dll
Windows Mobile wp220hf.dll
Java wd220java.jar
Linux wd220hf.so
Android wd220android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire