DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Gestion des Identifiants automatiques
  • Réutilisation des enregistrements supprimés ou libérés
  • Version du fichier de données après un ajout
  • Ajout d'un enregistrement dans une requête
  • Ajout d'enregistrements dans une vue
  • Parcours et ajout d'enregistrements
  • Problème de lenteur lors du premier ajout ou de la première suppression dans un fichier de données HFSQL
  • Ajout dans une base de données au format Hyper File 5.5
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
Ajoute :
  • l'enregistrement présent en mémoire dans le fichier de données (la requête ou la vue).
  • WINDEVWEBDEV - Code ServeurAndroidWidget Android l'enregistrement présent dans une variable de type Enregistrement 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 éventuels sont ajoutés si la gestion des mémos est active (fonction HGèreMémo).
Après l'exécution de la fonction HAjoute :
  • Une gestion automatique des erreurs est proposée pour plusieurs types d'erreurs : 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é ajoutée n'est pas unique. L'enregistrement n'est pas ajouté.
  • L'enregistrement ajouté devient l'enregistrement en cours. L'identifiant automatique est automatiquement renseigné. Par défaut, le parcours en cours n'est pas affecté.
Note : La totalité de l'enregistrement en mémoire est écrite dans le fichier de données avec les valeurs qui lui ont été affectées (et à défaut, le contenu de l'enregistrement précédemment lu). Pour vider les valeurs de l'enregistrement en mémoire, il suffit d'utiliser la fonction HRAZ.
Exemple
// Ajout d'un enregistrement dans un fichier de données
// (enregistrement décrit par programmation)
Client.Nom = "Moulin"
Client.Prenom = "François"
Client.Adresse = "Impasse des palmiers"
Client.Ville = "Perpignan"
Client.CodeP = "66000"
Client.Pays = "France"
HAjoute(Client)
WINDEVUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPadWidget IOSJavaHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5OLE DBConnecteurs Natifs (Accès Natifs)
// Ajout d'un enregistrement saisi dans une fenêtre
// dans le fichier de données Client
EcranVersFichier()
HAjoute(Client)
Syntaxe

Ajouter l'enregistrement en mémoire dans un fichier de données, une vue ou une requête Masquer les détails

<Résultat> = HAjoute([<Fichier de données> [, <Options>]])
<Résultat> : Booléen
  • Vrai si l'enregistrement a été ajouté,
  • Faux en cas de problème (erreur d'intégrité, de doublons, ...). 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 ou de la requête manipulé.
Si ce nom n'est pas spécifié, la fonction HAjoute va manipuler le dernier fichier de données utilisé par la dernière fonction de gestion HFSQL (fonction commençant par la lettre H).
<Options> : Constante optionnelle
Permet de paramétrer :
  • l'influence de l'ajout sur le parcours en cours.
  • le mode de calcul de l'identifiant automatique. Pour plus de détails, consultez Gestion de l'identifiant automatique lors d'un ajout.
  • le mode de blocage de l'enregistrement ajouté.
    • PHP La gestion des blocages n'est pas disponible en PHP.
    • AndroidWidget Android La gestion des blocages n'est pas disponible sur les bases de données SQLite.
    • 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é.
Hyper File 5.5 Ce paramètre n'est pas pris en compte.
hAffecteParcoursInfluence de l'ajout sur le parcours : L'ajout affecte le parcours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HAjoute positionne sur l'enregistrement suivant l'enregistrement ajouté.
La constante hAffecteParcours est prioritaire sur la constante hEcritureDéfaut.
hBlocageEcritureMode de blocage de l'enregistrement ajouté : Blocage en écriture : l'enregistrement ajouté 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.

Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Connecteurs Natifs.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageLectureEcritureMode de blocage de l'enregistrement ajouté : Blocage en lecture/écriture : l'enregistrement ajouté 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.

Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Connecteurs Natifs.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageNon
(valeur par défaut)
Mode de blocage de l'enregistrement ajouté : Aucun blocage : l'enregistrement ajouté ne sera pas bloqué.
AndroidWidget AndroidPHP 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 l'ajout sur le parcours : L'ajout n'affecte pas le parcours en cours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HAjoute positionne sur l'enregistrement suivant l'enregistrement en cours avant l'ajout.
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.
AndroidWidget AndroidPHP 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.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : 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.
AndroidWidget AndroidPHP 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.
AndroidWidget AndroidPHP Cette constante n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
WINDEVWEBDEV - Code ServeurAndroidWidget Android

Ajouter le contenu d'une variable de type Enregistrement dans un fichier de données, une vue ou une requête Masquer les détails

<Résultat> = HAjoute(<Fichier de données> , <Enregistrement> [, <Options>])
<Résultat> : Booléen
  • Vrai si l'enregistrement a été ajouté,
  • Faux en cas de problème (erreur d'intégrité, de doublons, ...). La fonction HErreur permet d'identifier l'erreur.
<Fichier de données> : Chaîne de caractères
Nom du fichier de données, de la vue ou de la requête manipulé.
<Enregistrement> : Variable de type Enregistrement
Nom de la variable de type Enregistrement contenant les différentes valeurs des rubriques.
<Options> : Constante optionnelle
Permet de paramétrer :
  • l'influence de l'ajout sur le parcours en cours.
  • le mode de calcul de l'identifiant automatique. Pour plus de détails, consultez Gestion de l'identifiant automatique lors d'un ajout.
  • le mode de blocage de l'enregistrement ajouté.
  • la gestion des doublons.
  • la gestion de l'intégrité.
Hyper File 5.5 Ce paramètre n'est pas pris en compte.
hAffecteParcoursInfluence de l'ajout sur le parcours : L'ajout affecte le parcours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HAjoute positionne sur l'enregistrement suivant l'enregistrement ajouté.
La constante hAffecteParcours est prioritaire sur la constante hEcritureDéfaut.
hBlocageEcritureMode de blocage de l'enregistrement ajouté : Blocage en écriture : l'enregistrement ajouté 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.

Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Connecteurs Natifs.
AndroidWidget Android Cette constante n'est pas disponible.
hBlocageLectureEcritureMode de blocage de l'enregistrement ajouté : Blocage en lecture/écriture : l'enregistrement ajouté 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.

Cette constante est disponible uniquement pour HFSQL Client/Serveur et les Connecteurs Natifs.
AndroidWidget Android Cette constante n'est pas disponible.
hBlocageNon
(valeur par défaut)
Mode de blocage de l'enregistrement ajouté : Aucun blocage : l'enregistrement ajouté ne sera pas bloqué.
AndroidWidget Android Cette constante n'est pas disponible.
hEcritureDéfaut
(valeur par défaut)
Influence de l'ajout sur le parcours : L'ajout n'affecte pas le parcours en cours.
Par exemple, la fonction HLitSuivant utilisée après la fonction HAjoute positionne sur l'enregistrement suivant l'enregistrement en cours avant l'ajout.
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.
AndroidWidget Android 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.
AndroidWidget Android 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.
AndroidWidget Android 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.
AndroidWidget Android Cette constante n'est pas disponible.
Remarques

Gestion des Identifiants automatiques

Par défaut, lors de l'ajout d'un enregistrement dans un fichier de données, la rubrique de type "Identifiant automatique" est automatiquement mise à jour. Il n'est pas nécessaire de relire l'enregistrement pour connaître la valeur de l'identifiant automatique. Il suffit d'utiliser la syntaxe <Nom Fichier>.<Nom rubrique Identifiant automatique>.
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 l'ajout d'un enregistrement, consultez Gestion de l'identifiant automatique lors d'un ajout.
AndroidWidget AndroidJavaPHPOLE DBConnecteurs Natifs (Accès Natifs) Cas particulier
  • 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 le moteur 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 ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSJavaLangage ExternePHPAjaxHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Réutilisation des enregistrements supprimés ou libérés

Lors de l'ajout d'un nouvel enregistrement, le moteur HFSQL optimise le remplissage du fichier de données. L'espace correspondant aux enregistrements supprimés ou libérés est utilisé prioritairement lors de l'ajout d'un nouvel enregistrement.
Les enregistrements rayés ne sont pas ré-utilisés.
WINDEVWEBDEV - Code ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSJavaLangage ExternePHPAjaxHFSQL ClassicHFSQL Client/ServeurProcédures stockéesHyper File 5.5

Version du fichier de données après un ajout

Si l'enregistrement a été ajouté au fichier de données (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.

Ajout d'un enregistrement dans une requête

L'ajout d'un enregistrement dans une requête peut être effectué :
  • 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.
Quel que soit le mode d'exécution de la requête (avec ou sans la constante hAvecFiltre), l'ajout d'enregistrement dans une requête n'est possible que pour les requêtes mono fichier. Les rubriques calculées précisées lors de l'ajout sont ignorées. Elles sont automatiquement calculées.
Attention :
  • Tout ajout dans une requête utilisant les groupes ou les agrégats est interdit.
  • 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 ServeurUniversal Windows 10 AppiPhone/iPadWidget IOSLangage ExterneAjaxHFSQL ClassicHFSQL Client/ServeurProcédures stockées

Ajout d'enregistrements dans une vue

Il est possible d'ajouter des enregistrements dans une vue réalisée sur des fichiers de données au format HFSQL Classic. Ces enregistrements sont uniquement ajoutés en mémoire. Pour les ajouter dans le fichier de données lié à la vue (cas d'une vue simple par exemple), il faut utiliser la fonction HVueVersFichier.

Parcours et ajout d'enregistrements

Il est possible de paramétrer l'influence de l'ajout d'un enregistrement pendant le parcours d'un fichier de données (constantes hEcritureDéfaut et hAffecteParcours). Le fonctionnement des versions précédentes est conservé grâce à la constante hAffecteParcours.
JavaPHPOLE DBConnecteurs Natifs (Accès Natifs) Cas particuliers
Si l'ajout est réalisé pendant un parcours, le nouvel enregistrement sera visible dans le parcours en cours uniquement. Si d'autres parcours ont été définis sur cette base de données, le nouvel enregistrement ne sera visible qu'après ré-initialisation de ces parcours.

Problème de lenteur lors du premier ajout ou de la première suppression dans un fichier de données HFSQL

Un problème de lenteur inexpliqué peut apparaître lors du premier accès à un enregistrement d'un fichier de données HFSQL. Pour corriger ce problème :
  • Désactivez l'antivirus pour l'analyse des fichiers .FIC, .NDX, .MMO et .REP.
  • Désactivez l'option "Restauration du système" sous Windows XP.
WINDEVWEBDEV - Code ServeurLangage ExterneAjaxProcédures stockéesHyper File 5.5

Ajout dans une base de données au format Hyper File 5.5

Si vous utilisez la fonction HAjoute avec une base de données au format Hyper File 5.5 :
  • Les options d'ajout (paramètre <Options>) ne sont pas prises en compte.
  • Les rubriques de type TEXTE seront automatiquement complétées par des espaces.
  • La fonction HAjoute ne peut pas être utilisée avec une vue créée sur des fichiers de données au format Hyper File 5.5.
Classification Métier / UI : Code métier
Composante : wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Ajout d'une variable de type Enregistrement
Attention :
Si vous copiez un enregistrement d'un fichier dans une variable de type enregistrement, est que celui-ci contient des rubriques Mémo texte, la remise à blanc via :
monEnregistrement.maRubriqueMemoTexte = ""

est prise en compte dans la variable mais lors de l'ajout le contenu est remis !

Faire un Hmodifie(..) derrière pour contourner le problème.
Laurent
26 juil. 2017

Dernière modification : 04/07/2023

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