IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

Mise à jour fichiers HFSQL issue de Mariadb


Sujet :

HyperFileSQL

  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2026
    Messages : 5
    Par défaut Mise à jour fichiers HFSQL issue de Mariadb
    Bonjour à tous
    Je précise tout de suite que je suis une quiche en SQL
    Je souhaite utiliser une base Mariadb que l'on m'envoie pour la travailler dans WD
    J'ai réussi sans problème à importer la description de fichiers et les tables grâce au bouton importer de la fenêtre analyse.
    Par contre cette base SQL évolue régulièrement avec de nouveaux enregistrements.

    Pour mettre à jour mes fichiers HFSQL, je peux réimporter mais ça me réimporte toute la base à chaque fois (assez long et pas du tout optimisé)
    Pour faire simple, voici ma question : comment synchroniser à la demande la base Mariadb et mes fichiers HFSQL en ajoutant seulement les nouveaux enregistrements ?

    Merci d'avance

  2. #2
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 165
    Par défaut
    Citation Envoyé par LittleStars Voir le message
    Pour faire simple, voici ma question : comment synchroniser à la demande la base Mariadb et mes fichiers HFSQL en ajoutant seulement les nouveaux enregistrements ?
    Bonjour,

    Que les nouveaux, donc pas ceux qui ont été modifiés, et on laisse ceux qui ont été supprimés ?

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2026
    Messages : 5
    Par défaut
    Citation Envoyé par serendib Voir le message
    Bonjour,

    Que les nouveaux, donc pas ceux qui ont été modifiés, et on laisse ceux qui ont été supprimés ?
    Ce sont des archives, donc aucune modification et aucune suppression, juste des ajouts

  4. #4
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour,

    Tu as plusieurs solutions. La plus bourrin : lire un par un tous les enregistrements mariadb et regarder pour chaque s'il existe dans la base HF.

    Celle que je ferai : une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Côté HF :
    "Select IdQuiVaBien from MaTableHF"
    Pour tout ResRequete
    chn_In += ["',"]
    FIN
    chn_In = chaineconstruit("'%1'",chn_In)
    // Côté MariaDB :
    chaineconstruit("Select * from MaTableMDB WHERE IdQuiVaBien NOT IN (%1)", chn_In)
     
    Pour Tout resRequete
    hcopieEnreg(MaTableHF, resRequete)
    Hajoute(MaTableHF)
    Fin
    Le squelette est là. A toi d'adapter le truc à tes tables.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2026
    Messages : 5
    Par défaut
    Merci pour ta réponse, je vais regarder ça de près mais je pense que cette solution sera plus lente que recharger entièrement la base car il y a actuellement environ 485 000 enregistrements dans la base.

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour,

    Dans ce cas, tu peux rechercher les IdQuiVaBien sur la base Maria, rechercher ceux de la base HF et ne garder que ceux qui ne sont pas dans la base HF.

    Autre idée : tu as dis que tu n'as que des ajouts en base. Si tu as un idauto, tu fais la recherche du dernier idauto en HF, et tu fais une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HlitDernier(MaTableHF, IdQuiVaBien)
    chaineconstruit("Select * from MaTableMDB WHERE IdQuiVaBien > %1", numeriqueverchaine(MaTableHF.IdQuiVaBien)
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 165
    Par défaut
    Bonsoir,

    Dans la base Mariadb, il n'y a pas la date de création à chaque enregistrement ?

  8. #8
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2026
    Messages : 5
    Par défaut
    Il y a un champ date dans la bdd qui correspond à la date d'enregistrement.
    Par contre il y a plusieurs enregistrements crées le même jour.
    Donc le but est, par exemple, récupérer les nouvelles entrée depuis la dernière date + 1 jour de mon fichier HF, jusqu'à la date du jour - 1 jour de la base MariaDb

    Mais j'ai beaucoup de mal à comprendre le concept "coté Maria" et "coté HF"
    Coté HF, je suppose que c'est tout bêtement du code WD (en dur ou dans une req.)
    Coté Maria : une requête SQL ?
    Comment peut-on mélanger les 2 ?

    J'avais prévenu que j'étais une quiche en SQL dans WD !

  9. #9
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour,

    A ce stade, on n'est pas sur de la requête SQL, on est sur de l'algorithmique / de la logique de ce qu'il faut faire. Tu as 2 bases de données un locale (HF) et une distante (MariaDB)

    Il te faut donc faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    HlitDernier(MaTableHF, DateEnregistrement) // on recherche la dernière date dans la table locale / HF
    // > signifie qu'on aura bien le jour suivant dans la table distante / MariaDB
    // dateverschaine -> à voir s'il est nécessaire ou pas (avec ou sans accès natif). Si oui, vérifier le format des dates à utiliser dans MariaDB
    si pas HexecuteRequeteSQL(srcMdb, CnxMdb, hrequetesanscorrection, chaineconstruit("Select * from MaTableMDB WHERE DateEnregistrement> '%1'", dateverschaine(MaTableHF.DateEnregistrement) alors
       hannuledeclaration(srcMdb)
       erreur(herreurinfo(errcomplet))
       retour
    sinon
      // traitement de l'ajout en base HF
    fin
    hannuledeclaration(srcMdb)
    La requête peut être remplacée par un code (si tu as un accès natif) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hlitpremier(MaTableMDB , DateEnregistrement)
    TANTQUE PAS Hendehors(MaTableMDB)
       Si MaTableMDB.DateEnregistrement > MaTableHF.DateEnregistrement
          // traitement de l'ajout en base HF
       FIN
     
       hlitsuivant(MaTableMDB , DateEnregistrement)
    FIN
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  10. #10
    Membre Expert
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1 165
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    ,

    La requête peut être remplacée par un code (si tu as un accès natif) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hlitpremier(MaTableMDB , DateEnregistrement)
    TANTQUE PAS Hendehors(MaTableMDB)
       Si MaTableMDB.DateEnregistrement > MaTableHF.DateEnregistrement
          // traitement de l'ajout en base HF
       FIN
     
       hlitsuivant(MaTableMDB , DateEnregistrement)
    FIN
    Bonjour frenchsting,

    En commençant par le dernier on évite de lire tout le fichier non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    hlitDernier(MaTableMDB , DateEnregistrement)
    TANTQUE PAS Hendehors(MaTableMDB)
       Si MaTableMDB.DateEnregistrement > DateDuDernierHF  //(MaTableHF.DateEnregistrement)
          // traitement de l'ajout en base HF
          hlitPrecedent(MaTableMDB , DateEnregistrement)
       sinon 
          //On sort 
       FIN
    FIN

  11. #11
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour serendib,

    Ton code est plus optimisé que le mien.

    J'avoue que depuis que je bosse avec du postgrsql, j'ai abandonné les parcours hlitxxx / tantque pas hendehors() (et pas que sur les "vrais" SGBD). Ils sont très pénalisant en temps car l'accès natif crée et exécute une requête SQL pour chaque hlitxxx.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  12. #12
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2026
    Messages : 5
    Par défaut
    Je ne comprends toujours pas cette partie :

    hlitDernier(MaTableMDB , DateEnregistrement)
    TANTQUE PAS Hendehors(MaTableMDB)
    Si MaTableMDB.DateEnregistrement > DateDuDernierHF //(MaTableHF.DateEnregistrement)
    // traitement de l'ajout en base HF
    hlitPrecedent(MaTableMDB , DateEnregistrement)
    sinon
    //On sort
    FIN
    FIN


    Je ne peux pas accéder à ma tableMDB depuis du langage WD
    Je précise que ma table MariaDB n'est pas dans mon projet, elle est sur mon hdd et j'y accède en configurant une connexion après avoir lancé un serveur SQL

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    997
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 997
    Par défaut
    Bonsoir.
    Utilisez Hdéclareexterne.

    Selon l'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Ainsi il faudra préférer l'enchaînement :
    //HChangeConnexion 
    //HChangeRep 
    //HPasse 
    //HOuvreConnexion
    N'oubliez pas de copier libmariadb.dll dans le répertoire de "l'exe".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SI HChangeConnexion(sFichero, sConexion) = Faux ALORS
         // CONEXION FALLA
         bConnexionDistante = Faux
          Erreur(HErreurInfo())
    SINON
          // CONEXION CORRECTA
           SI HOuvreConnexion(sConexion) = Faux ALORS
                bConnexionDistante = Faux
                Erreur(HErreurInfo())
           SINON
                // CONEXION CORRECTA
                bConnexionDistante = Vrai
            FIN
    FIN

  14. #14
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 667
    Par défaut
    Bonjour,


    La librairie dont parle Yusep se trouve sur le site PCSOFT. Tu recherches les téléchargements correspondant à ta version de WD puis les connecteurs natifs.

    Tu peux également regarder du côté des alias (Halias / HchangeConnexion). Si j'ai bien compris, la table HF et la table MariaDB sont les mêmes.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

Discussions similaires

  1. Pb requete mise à jour avec paramètre issu d'un formulaire
    Par ver_for dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/11/2007, 20h23
  2. Mise à jour Fichiers
    Par med_ellouze dans le forum Langage
    Réponses: 4
    Dernier message: 12/08/2007, 17h52
  3. mise a jour fichier xml en java
    Par mehdidoch dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 12/08/2007, 04h09
  4. [BDD][XML] mise à jour fichier xml est-il possible ?!
    Par akara dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/07/2007, 14h15
  5. [WD9][Combo] Mise à jour fichier
    Par papyg dans le forum WinDev
    Réponses: 5
    Dernier message: 15/06/2007, 09h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo