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 :

Problème suppression enregistrement dans fichier hyperfile


Sujet :

HyperFileSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Points : 27
    Points
    27
    Par défaut Problème suppression enregistrement dans fichier hyperfile
    Bonjour,

    Je fais des sauvegardes régulières de ma bdd directement dans le répertoire contenant les fichiers hyperfile:
    exemple: dossier BaseDonnées : contient les fichiers des données hyperfile
    + des fichiers .zip qui servent de sauvegardes

    Quand je supprime un dossier dans mon application, il lit apparemment les sauvegardes () et supprime les données également dans les répertoires de sauvegarde!
    Du coup j'ai décidé de faire mes sauvegardes ailleurs. Mais le problème reste car quand je supprime un dossier, il cherche le répertoire de sauvegarde, ne le trouve pas et donc empêche la suppression...

    Quelqu'un aurait il une solution svp ? Je ne comprends pas comment il a mémorisé ce sous répertoire et où surtout!

    HLitRecherche(Dossiers, KDOSSIER, RefDossier)
    SI HTrouve() ALORS
    HSupprime(DossiersADS)
    FIN

    Le hlitrecherche cherche aussi dans les sous repertoires... comprends pas

  2. #2
    Membre éprouvé Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Désolé, j'ai du mal à te suivre.
    Tu parle de fichier physique,de répertoire et de .zip alors que le code que tu présente lit des enregistrement dans la base de donnée (fonction H..)

    Peux tu nous dire ce que fait ton appli, qu'est qu'un Dossier etc ... ?
    Christophe.

    Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Je plussoie Winbish. Tu ne joue pas sur le fichier mais sur son contenu...

    Les dossiers des fichiers HF (classic) peuvent être spécifiés à 3 endroits :
    1. Dans l'analyse
    2. Dans le code du programme : hancgerep, hsubstrep.
    3. Dans la création de l'exécutable.

    C'est dans cet ordre de priorité qu'ils sont recherché.

    Par exemple, tu as mis les fichiers dans le répertoire de l'exe (3.), tu fais un hchangerep("Monfichier","C:\toto") (2.) et tu as spécifié dans l'analyse (1.) que Monfichier se trouvera "C:\titi". Alors le programme cherchera dans c:\titi.
    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

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Dossier = dossier de client, = 12 pour l'exemple

    J'ai un bouton dans mon appli qui permet de supprimer un dossier et toutes les données associées à celui-ci dans les autres tables.
    Dans mon répertoire BDD (qui contient tout mes fichiers .fic) j'ai:
    BDD
    dossier.fic
    dossier.mmo
    adresse.fic
    adresse.mmo
    sauvegarde.zip
    sauvegarde (un répertoire) qui contient
    dossier.fic
    dossier.mmo
    adresse.fic
    adresse.mmo

    Le fichier sauvegarde a apparemment été dézippé puis supprimé. (j'ai récupéré ces données chez un client)

    1) le dossier 12 est présent dans le répertoire sauvegarde et dans le dossier.fic à la racine de BDD.

    2) Quand je fais le hlitrecherche, puis le hsupprime:
    mon dossier 12 est supprimé :
    - dans le fichier dossier.fic (et les données liées dans les autres fichiers comme adresse.fic) à la racine de BDD : normal
    ET
    - dans le répertoire sauvegarde/dossier.fic (et les données liées dans les autres fichiers comme adresse.fic) : pas normal

    J'ai enlevé le répertoire sauvegarde, mais le problème persiste: windev veut toujours supprimer le dossier 12 dans BDD/sauvegarde/dossier.fic et j'ai donc un message d'erreur car il ne trouve pas le répertoire.

    Est-ce que c'est plus clair ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    arborescence:

    BDD
    ---dossier.fic
    ---dossier.mmo
    ---adresse.fic
    ---adresse.mmo
    ---sauvegarde.zip
    ---sauvegarde (un répertoire) qui contient
    ------------dossier.fic
    ------------dossier.mmo
    ------------adresse.fic
    ------------adresse.mmo

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Je commence à comprendre : si tu supprimes un enregistrement de la table dossier, tous les enregistrements associés dans les autres tables sont supprimés. Ca c'est logique.

    Par contre, tu as une sauvegarde dans un répertoire BDD (par exemple) et là aussi c'est supprimé et ça le devrait pas.

    2 choses à vérifier :
    - Que tu ne joues pas avec des Halias, HchangeRep ou HSubstRep.
    - Que tu ne lances pas une sauvegarde après avoir fait ta suppression (je penche là dessus).

    Fait une exécution jusqu'à ton dernier hsupprime() -> mets un point d'arrêt,
    Regarde si tes fichiers sont à jour dans le répertoire initial,
    Regarde si tes fichiers sont à jour dans le répertoire de sauvegarde,
    Regarde ton code à partir de ce point...
    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
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Merci pour ta réponse.

    Pour qu'on se comprenne bien: la sauvegarde est dans le même répertoire que les "bonnes" données BDD :
    le répertoire BDD contient :
    ---dossier.fic
    ---dossier.mmo
    ---adresse.fic
    ---adresse.mmo
    ---sauvegarde.zip
    ---sauvegarde (un répertoire) qui contient
    ------------dossier.fic
    ------------dossier.mmo
    ------------adresse.fic
    ------------adresse.mmo

    Ce problème existe depuis que j'ai mis en place ce système sauvegarde.

    Je ne fais pas de Halias, HchangeRep ou HSubstRep. sauf bien spur au tout début, à l'ouverture de l'appli et c tout
    Je ne fais pas non plus de sauvegarde de la bdd après la suppression

    Ce message d'erreur arrive dès le premier hsupprime de Dossiers, donc je ne peux pas débugger plus loin. Ce qui voudrait dire qu'il est déjà dans le répertoire de sauvegarde (?!)

    Voiloà mon code:
    HTransactionDébut()

    HLitRecherche(Dossiers, KDOSSIER, RefDossier)
    SI HTrouve() ALORS
    SI PAS HSupprime(Dossiers) ALORS
    SI bMessage ALORS
    Erreur("Impossible de supprimer le dossier n° "+ RefDossier +" dans Dossiers", HErreurInfo())
    FIN
    SI PAS HTransactionAnnule() ALORS
    SI bMessage ALORS
    Erreur("Impossible d'annuler les transactions sur la base de données", HErreurInfo())
    FIN
    FIN
    RENVOYER Faux
    FIN

    HLitRecherchePremier(Adresse, KAdresse, RefDossier)
    TANTQUE PAS HEnDehors(Demandeur)
    SI Demandeur.KDOSSIER = RefDossier ALORS
    SI PAS HSupprime(Demandeur) ALORS
    SI bMessage ALORS
    Erreur("Impossible de supprimer le dossier n° "+ RefDossier +" dans Adresse", HErreurInfo())
    FIN
    SI PAS HTransactionAnnule() ALORS
    SI bMessage ALORS
    Erreur("Impossible d'annuler les transactions sur la base de données", HErreurInfo())
    FIN
    FIN
    RENVOYER Faux
    FIN
    FIN
    HLitSuivant(Demandeur, KDOSSIER)
    FIN
    HTransactionFin()

    CAS EXCEPTION:

    SI bMessage ALORS
    Erreur("(Exception)","Impossible de supprimer le dossier n° "+ RefDossier, HErreurInfo())
    FIN
    SI PAS HTransactionAnnule() ALORS
    SI bMessage ALORS
    Erreur("Impossible d'annuler les transactions sur la base de données",HErreurInfo())
    FIN
    FIN
    bRetour = Faux


    J'ai le message d'erreur suivant :
    (Exception)
    Ompossible de supprimer le dossier n°12
    Erreur renvoyée par le serveur <elodie:4900>
    Erreur d'intégrité
    Impossible d'ouvrir le fichier
    <BDD\sauvegarde\adresse.fic>
    Problème rencontré pendant l'annulation du rayage de l'enregistrement n°14987 du fichier <code postal>

    Bizarre quand même:
    ça plante lors de la suppression dans Dossier, le message d'erreur est sur deux autres fichiers: adresse.fic et codepostal.fic.

  8. #8
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    Je précise qu'il devrait chercher dans BDD\dossier.fic et non pas BDD\sauvegarde\dossier.fic

  9. #9
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Une réflection :

    Ton message d'erreur concerne une erreur d'intégrité -> tu supprimes le client mais tu as une cardinalité avec le fichier adresse. Il faut que tu commences par supprimer l'adresse, puis le client. (ou que tu modifies ton anlayse pour qu'il gère tout seul).

    Autre question :

    Comment font tes fichiers pour "arriver" dans le dossier sauvegarde ?

    Edit : tu as ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TANTQUE PAS HEnDehors(Demandeur)
    mais tu n'inities pas le parcours par un hlitpremier()
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Le problème posé ici est bien réel.
    En effet windev, affiche un message d'erreur d'intégrité alors que l'intégrité comme telle n'a pas encore été vérifiée.
    Je m'explique, lorsque l'on arrive sur la fonction Hsupprime, Windev va chercher le fichier physique associé à la table dont on veut supprimer l'enregistrement. Malheureusement, il ne le trouve pas comme le fichier a déjà été supprimé.
    La question qui reste, alors, posée et dont je continue aussi à chercher la réponse : à quel endroit Windev sauvegarde l'information sur les emplacements des fichiers concernés par une suppression, une modification,... pour pouvoir vérifier les contraintes d'intégrité ?
    Si on pouvait avoir la réponse à cette question, il me semble qu'il ne suffirait plus qu'à procéder à un nettoyage des liaisons qui ne sont pas pertinentes (c.à.d celles relatives à des fichiers qui n'existent plus, par exemple).

  11. #11
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par ramazani Voir le message
    La question qui reste, alors, posée et dont je continue aussi à chercher la réponse : à quel endroit Windev sauvegarde l'information sur les emplacements des fichiers concernés par une suppression, une modification,... pour pouvoir vérifier les contraintes d'intégrité ?
    Dans les fichiers concernés, logiquement...

    Citation Envoyé par ramazani Voir le message
    Si on pouvait avoir la réponse à cette question, il me semble qu'il ne suffirait plus qu'à procéder à un nettoyage des liaisons qui ne sont pas pertinentes (c.à.d celles relatives à des fichiers qui n'existent plus, par exemple).
    2 solutions s'offrent à toi :
    soit utiliser hegereintegrité(),
    soit dans l'analyse demander à ce que la suppression soit faite automatiquement
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour enregistrer dans un fichier XML
    Par Jb_One73 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/02/2015, 08h22
  2. problème d'enregistrement dans un fichier txt
    Par constantin22 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 09/10/2012, 06h34
  3. Problème enregistrement dans fichier XML
    Par banana130390 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 16/10/2011, 10h44
  4. Problème d'enregistrement dans un fichier.
    Par Ed.11 dans le forum C#
    Réponses: 2
    Dernier message: 02/08/2010, 12h39
  5. Probléme d'enregistrement dans un fichier ini
    Par jv2759 dans le forum Delphi
    Réponses: 2
    Dernier message: 19/05/2006, 15h30

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