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

WinDev Discussion :

Problème avec HRestaureSauvegarde [WD22]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut Problème avec HRestaureSauvegarde
    Bonjour,

    Je transforme mon application HSFSQL classique en HSFSQL C/S

    J'ai défini 2 connexions au serveur ainsi :
    ________________
    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
    16
    17
    PROCEDURE CONNEX()
     
    FF est un booléen
    nomposte est une chaîne
    nomposte = NetNomMachine()
     
    MaConnexion est une Connexions
    MaConnexion..Utilisateur = "admin"
    MaConnexion..MotDePasse = ""
    MaConnexion..Serveur = nomposte+":4900"
    MaConnexion..BaseDeDonnées = "SQLAURELIE"
    MaConnexion..Provider = hAccèsHFClientServeur
    MaConnexion..Accès = hOLectureEcriture
     
    FF=HOuvreConnexion(MaConnexion)
    FF=HOuvreConnexion("ConnexionHFLocale", "admin", "",fRepEnCours(), "", hAccèsHF7)
    ____________________________________
    J'ai défini ma sauvegarde ainsi:
    ___________________________

    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
    16
    17
    PROCEDURE sauve_ordinaire()
     
    V est une chaîne
    s est un entier
    V=fRepEnCours()+"\"+"sauvegar\"
    hSvg est une hDescriptionSauvegarde
    hSvg..Activé = Vrai
    hSvg..AvecIndex = Vrai
    hSvg..Description = "Sauvegarde du "+ DateVersChaîne(DateSys(), maskDateSystème) +" à " + HeureVersChaîne(HeureSys(), "HH:MM:SS")
    hSvg..Destination = V
    hSvg..LimiteNombreSauvegarde = 5
    hSvg..Source = MaConnexion..BaseDeDonnées
    s=HSauvegarde(MaConnexion, hSvg)
    SI s=0 ALORS
    	Erreur("La sauvegarde rencontre un problème","Téléphoner au 06.........................")
    FIN
    _____________________________________________________
    Je demande ma restauration ainsi :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    LOCAL
     
    InfoSauvegarde est une chaîne
    CheminSauvegarde_comp est une chaîne
    desauve est une chaîne
    prg,lerep est une chaîne
     
    lerep=fRepEnCours+"\"+"SAUVEGAR\"
    prg=fRepSélecteur(lerep,"Choisir sa sauvegarde","",lerep,fCheminUNICODE)
     
     
     
    IF prg="" ALORS RETOUR
     
    InfoSauvegarde = HInfoSauvegarde(MaConnexion)
    desauve= ExtraitChaîne(InfoSauvegarde, 5, TAB)
    CheminSauvegarde_comp = ExtraitChaîne(InfoSauvegarde, 4, TAB)
     
    SI OuiNon(Oui,"Voulez vous vraiment restaurer la "+RC+desauve) ALORS
     
    	SI HFermeConnexion(MaConnexion) = Faux ALORS
    		Erreur(HErreurInfo())
    	SINON
    		Multitâche(100)
    	FIN
     
    	// Restauration de la sauvegarde
    	SI HRestaureSauvegarde(MaConnexion,CheminSauvegarde_comp) = Faux ALORS
    		Erreur("Echec de la restauration de la sauvegarde" + HErreurInfo(hErrMessage))
    		VersPressePapier(HErreurInfo())
    	SINON
    		Info("Restauration effectuée avec succès")
    FIN
    END
    _______________________________________________

    l'erreur est :

    Erreur renvoyée par le serveur <DESKTOP-3VEKOVJ:4900> :
    Vous ne pouvez pas procéder à la restauration de la base de données <SQLAURELIE> car la connexion <MaConnexion> ouverte depuis la machine <DESKTOP-3VEKOVJ> pour l'utilisateur <admin> utilise cette base de données.

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    D'après l'aide de la fonction hrestaureSauvegarde() https://doc.pcsoft.fr/fr-FR/?1000017...aureSauvegarde
    il faut :
    Pour restaurer tout le serveur (ou les bases __jnl et __trs), aucune autre application ne doit être connectée au serveur. La connexion utilisée ne doit pas être attachée à une base de données (lors de l'appel à la fonction HOuvreConnexion, le paramètre <Base de données> doit correspondre à chaîne vide ("")).
    Je pense que c'est ça.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    D'après l'aide de la fonction hrestaureSauvegarde() https://doc.pcsoft.fr/fr-FR/?1000017...aureSauvegarde
    il faut :


    Je pense que c'est ça.
    Bonjour,
    Tout d'abord merci de t'intéresser à mon problème.
    Mais j'ai fermé la connexion pour éviter ce problème
    Mais visiblement ca ne suffit pas

    Bien à toi

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Sur la ligne : RestaureSauvegarde(MaConnexion,CheminSauvegarde_comp), on a besoin d'une connexion.

    Celle-ci ne peut pas être fermée, et à priori, selon l'aide, il faut la paramétrer avec : MaConnexion..BaseDeDonnées = ""
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Sur la ligne : RestaureSauvegarde(MaConnexion,CheminSauvegarde_comp), on a besoin d'une connexion.

    Celle-ci ne peut pas être fermée, et à priori, selon l'aide, il faut la paramétrer avec : MaConnexion..BaseDeDonnées = ""
    J'ai essayé cela, avant et après... ca ne marche pas...
    Toujours la même erreur
    J'ai même essayé hchangeconnexion("...")

  6. #6
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut Merci tbc92...j'ai trouvé !
    Citation Envoyé par tbc92 Voir le message
    Sur la ligne : RestaureSauvegarde(MaConnexion,CheminSauvegarde_comp), on a besoin d'une connexion.

    Celle-ci ne peut pas être fermée, et à priori, selon l'aide, il faut la paramétrer avec : MaConnexion..BaseDeDonnées = ""

    En fait il fallait créer une nouvelle connexion :


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    PROCEDURE CONNEX()
    FF est un booléen
     
    nomposte = NetNomMachine()
     
    MaConnexion,ConnexionHFLocale,Nouvelle sont des Connexions
     
    /// Connexion principale
     
    MaConnexion..Utilisateur = "admin"
    MaConnexion..MotDePasse = ""
    MaConnexion..Serveur = nomposte+":4900"
    MaConnexion..BaseDeDonnées = "SQLAURELIE"
    MaConnexion..Provider = hAccèsHFClientServeur
    MaConnexion..Accès = hOLectureEcriture
    FF=HOuvreConnexion(MaConnexion)
     
    // Connexion pour la restauration
     
    Nouvelle..Provider = hAccèsHFClientServeur
    Nouvelle..Utilisateur = "admin"
    Nouvelle..MotDePasse =""
    Nouvelle..Serveur = nomposte+":4900"
    Nouvelle..BaseDeDonnées ="" // Pour restaurer une seule base, ne rien saisir ICI
    Nouvelle..Cryptage = hCryptageNon
     
    // Connexion pour pouvoir travailler en HSFSQL classique
     
    FF=HOuvreConnexion(ConnexionHFLocale, "admin", "",fRepEnCours(), "", hAccèsHF7)

    Ensuite, les codes de la sauvegarde :

    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
    16
    PROCEDURE sauve_ordinaire()
    V est une chaîne
    s est un entier
    V=fRepEnCours()+"\"+"sauvegar\"
     
    hSvg est une hDescriptionSauvegarde
    hSvg..Activé = Vrai
    hSvg..AvecIndex = Vrai
    hSvg..Description = "Sauvegarde du "+ DateVersChaîne(DateSys(), maskDateSystème) +" à " + HeureVersChaîne(HeureSys(), "HH:MM:SS")
    hSvg..Destination = V
    hSvg..LimiteNombreSauvegarde = 5
    hSvg..Source ="SQLAURELIE"
    s=HSauvegarde(Nouvelle, hSvg)
    SI s=0 ALORS
    	Erreur("La sauvegarde rencontre un problème","Téléphoner au 06..............")
    FIN
    Et voici le code qui restaure :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    LOCAL
     
    	InfoSauvegarde est une chaîne
    	CheminSauvegarde_comp est une chaîne
    	desauve est une chaîne
    	prg,lerep est une chaîne
     
     
    lerep=fRepEnCours+"\"+"SAUVEGAR\"
    prg=fRepSélecteur(lerep,"Choisir sa sauvegarde","",lerep,fCheminUNICODE)
     
     
     
    IF prg="" ALORS RETOUR
     
    InfoSauvegarde = HInfoSauvegarde(MaConnexion)
    desauve= ExtraitChaîne(InfoSauvegarde, 5, TAB)
    CheminSauvegarde_comp = ExtraitChaîne(InfoSauvegarde, 4, TAB)
     
    SI OuiNon(Oui,"Voulez vous vraiment restaurer la "+RC+desauve) ALORS
    HFermeConnexion(MaConnexion)	
    	// Restauration de la sauvegarde
    	SI HRestaureSauvegarde(Nouvelle,CheminSauvegarde_comp) = Faux ALORS
    		Erreur("Echec de la restauration de la sauvegarde" + HErreurInfo(hErrMessage))
    		VersPressePapier(HErreurInfo())
    	SINON
    		Info("Restauration effectuée avec succès")
    	FIN
    SINON
    	RETOUR
    END

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Nouvelle est déclarée comment, et initialisée comment ?
    Si on ne voit pas la déclaration de nouvelle dans ce morceau de code, c'est qu'elle est probablement déclarée en globale, ce qui ne facilite pas du tout la maintenance du code
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Nouvelle est déclarée comment, et initialisée comment ?
    Si on ne voit pas la déclaration de nouvelle dans ce morceau de code, c'est qu'elle est probablement déclarée en globale, ce qui ne facilite pas du tout la maintenance du code
    oui effectivement, la procédure connex() est globale...
    C'est pas bien ? si oui ? pourquoi svp ?
    je me suis basé sur l'aide suivante :

    https://doc.pcsoft.fr/fr-FR/?1000020...garde_fonction

    ils n'ont pas initialisé (pas de houvreconnexion)

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    J'organiserais le code ainsi :
    Pour le bouton 'Sauvegarde :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    // Variables
    gnIDSvg est un entier
    Nouvelle_connexion est une Connexion
     
    // Paramètres de la connexion
    Nouvelle_connexion..Provider = hAccèsHFClientServeur
    Nouvelle_connexion..Utilisateur = "PMO"
    Nouvelle_connexion..MotDePasse = "motdepasse"
    Nouvelle_connexion..Serveur = "MonServeurHF"
    Nouvelle_connexion..BaseDeDonnées = "" // Pour restaurer une seule base, ne rien saisir ICI
    Nouvelle_connexion..Cryptage = hCryptageNon
     
    // Création de la sauvegarde
    Sauvegarde_Doc est une hDescriptionSauvegarde
    Sauvegarde_Doc..Description = "Sauvegarde Doc"
    Sauvegarde_Doc..AvecIndex = Vrai
    Sauvegarde_Doc..Destination = "Sauvegarde"
    Sauvegarde_Doc..Source = "031951/*"
     
    gnIDSvg = HSauvegarde(Nouvelle_connexion, Sauvegarde_Doc)
    SI gnIDSvg = 0 ALORS
      Erreur(HErreurInfo())
    SINON
      Info("Sauvegarde créée, identifiant :" + gnIDSvg)
    FIN
     
    // Fermeture de la connexion
    SI HFermeConnexion(Nouvelle_connexion) = Faux ALORS
      Erreur(HErreurInfo())
    SINON
      Multitâche(100)
    FIN
    Et pour le bouton Restauration :
    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
    16
    17
     
     
    // Paramètres de la connexion
    Nouvelle_connexion..Provider = hAccèsHFClientServeur
    Nouvelle_connexion..Utilisateur = "PMO"
    Nouvelle_connexion..MotDePasse = "motdepasse"
    Nouvelle_connexion..Serveur = "MonServeurHF"
    Nouvelle_connexion..BaseDeDonnées = "" // Pour restaurer une seule base, ne rien saisir ICI
    Nouvelle_connexion..Cryptage = hCryptageNon
     
    // Restauration de la sauvegarde
    SI HRestaureSauvegarde(Nouvelle_connexion, gnIDSvg) = Faux ALORS
      Erreur("Echec de la restauration de la sauvegarde" + HErreurInfo(hErrMessage))
      VersPressePapier(HErreurInfo())
    SINON
      Info("Restauration effectuée avec succès")
    FIN
    A mon goût, c'est plus lisible.
    Si tu as une fenêtre, ou une classe dédiée à ces 2 opérations (Sauvegarde+restauration), alors ok, mettre l'initialisation de Nouvelle_connexion dans les déclaratives globales de cette fenêtre ou cette classe, ça se justifie.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Membre régulier
    Homme Profil pro
    Autodidacte
    Inscrit en
    Décembre 2016
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2016
    Messages : 195
    Points : 84
    Points
    84
    Par défaut
    Oui, j'ai une fenêtre dédiée à ces deux opérations
    Cela dit, tu as raison, "Nouvelle" ne sert qu'à cette fenêtre, et en procédure locale, c'est sans doute plus propre.
    FAIRE ATTENTION AUSSI POUR QUE LA RESTAURATION MARCHE DE FERMER LE CENTRE DE CONTRÔLE HSFSQL
    Merci en tout cas pour ta précieuse aide

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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