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