Poser votre question
0

Sauvegarde automatique sur fermeture module base

posée 2019-07-31 13:47:20 +0200

Image Gravatar de El Catala

updated 2019-08-01 07:55:12 +0200

Bonjour,

J' ai créé des bases de données avec le module base de LibreOffice. Chacune de ces bases contient un programme qui se déclenche par l' appui sur un bouton du menu général. Cette macro effectue une sauvegarde de la base en cours dans un fichier alloué à cet usage, puis ferme LibreOffice. En effectuant un contrôle de routine de ces sauvegardes, je m' aperçois que malgré l' extension ".odb", c' est un document writer qui s' ouvre. Plus de tables, de formulaires autre que le menu général ni de macros. Je ne comprends pas ce qu' il se passe alors que jusqu' à présent, cette procédure fonctionnait et que j' avais pu récupérer les bases suite à des plantages. Je vous joins le code. Cela vous permettra peut-être de comprendre le pourquoi!!!

Sub BtnQtr()

Dim Qtr As Object
Dim Bdd As Object

    Bdd = ThisDataBaseDocument
    Qtr = Bdd.FormDocuments.getByName("Mn_Gn")
    LstFch
    SvgFch
    Qtr.close
    Qtr.dispose
    If Bdd.ismodified Then
        Bdd.store
    End If

    Bdd.close(True)
    Bdd.dispose

End sub '=============================================================================================================== Function SvgFch

    Dim Fch As String 
    Dim Args(0) As New com.sun.star.beans.PropertyValue 

    Fch = ConvertToURL("/media/elfouste/El_Casot/Yvon/Phototeque/SvgBdd/SvgLO/Pht-" & NvlNdc & ".odb") 
    ThisComponent.storeToURL(Fch,Args()) 

End Function

Par avance, merci de votre aide.

PS: Je viens de m' apercevoir qu' il manquait une partie du code. Avec toutes mes excuses. Code complémentaire: Function LstFch 'Liste tous les fichiers d'un répertoire

Dim Fch As String, Resultat As String 
Dim LngFch as integer, NcnNdc as integer, d as integer, NbrFch as Integer
Dim i as integer, x as integer, z as integer, b As integer

    Fch=Dir("/media/elfouste/El_Casot/Yvon/Phototeque/SvgBdd/SvgLO/*.odb")

    NcnNdc = 0

    Do While Len(Fch) > 0 
        Resultat = Resultat & Chr(13) & Fch
        'Recherche du plus grand indice des dossiers
        LngFch = Len(Fch)
        z=InStr(Fch,"-")
        d = LngFch-(z+4)
        b = mid(Fch,z+1,d)
        if b > NcnNdc then
            NcnNdc = b
        end if
        ' Compte le nombre de fichiers 
        NbrFch = NbrFch +1 
    Fch=Dir() 
Loop

if NbrFch = 10 then
    For i = 1 to 5
    x = NcnNdc - (NbrFch-i)
    Kill ("/media/elfouste/El_Casot/Yvon/Phototeque/SvgBdd/SvgLO/Pht-" & x & ".odb")
    next i
End If
' Nouvel indice du dossier a sauvegardé
NvlNdc = NcnNdc + 1 

End Function

Blockquote

éditer requalifier signaler fermer fusionner supprimer

Commentaires

Effectivement et sur le principe, pas de soucis avec un bash. Toutefois, la macro jointe avait le mérite de la sécurité. En effet, à chaque fermeture de la base j' avais automatiquement une copie à jour. Le soucis avec le bash c' est qu'il faut penser à effectuer une sauvegarde. Le problème proviendrait-il du passage de hsqlbd à firebird ? Cordialement

Image Gravatar de El CatalaEl Catala ( 2019-08-02 18:09:09 +0200 )éditer

Lorsque vous commentez, il serait bien de le faire sous le bon message. Sans quoi on y comprend plus rien.

Penser à quoi ? Cron est un planificateur de tâches, une fois programmé, tout se fait automatiquement.

Image Gravatar de ValioudValioud ( 2019-08-09 12:23:11 +0200 )éditer

2Réponses

0

répondue 2019-08-09 07:46:36 +0200

Image Gravatar de El Catala

Bonsoir,

Je pense avoir trouvé la solution au problèmes. Dans la "Function SvgFch", il faut remplacer la ligne: ThisComponent.storeToURL(Fch,Args()) par celle-ci: ThisDataBaseDocument.storeToUrl(Fch,Args()) Les tests effectués donnent le résultat recherché. Je sauvegarde bien la BDD et je peux l' ouvrir sans problème.

Cordialement

éditer signaler supprimer permalien plus
0

répondue 2019-08-02 11:48:51 +0200

Image Gravatar de Valioud

En principe, les tâches de sauvegarde sont du ressort du système d'exploitation.

Il semble que vous soyez sous Linux.

Donc un script Bash de copie et programmé dans Cron devrait suffire.

éditer signaler supprimer permalien plus
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2019-07-31 13:47:20 +0200

Consultée: 23 fois

Mise à jour: Aug 09