Voici ce que je souhaite faire à l'ouverture d'une base intégrée :
1. Vérifier si la source existe, si oui : la mettre à jour, sinon la créer (pour le moment çà va)
2. Faire un checkpoint defrag avant de commencer à travailler sur la base (là... çà va plus...)
Il me dit que ma base est en mode ReadOnly et tout s'arrête. J'ai vérifié et mon fichier de base de donné n'est pas coché "ReadOnly", il semble que cela se produise au moment de la "création/mise à jour" de la source.
Du coup, je me dis que je vais mettre ma connexion en ReadOnly = False et que le tour sera joué... que neni... j'ai un autre message d'erreur
Voici mon code :
Code : Tout sélectionner
option explicit
Sub CreaSource
Dim dbContexte As Object, maSource As Object
Dim maConnexion As Object
Dim nomSource As String, cheminBdd As String
Dim stmt as object
cheminBdd = ThisComponent.location
nomSource = "BaseTest"
dbContexte = CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = dbContexte.getbyname(nomsource)
if not dbContexte.hasByName(nomSource) then
maSource = dbContexte.getByName(cheminBdd)
dbContexte.registerObject(nomSource, maSource)
MsgBox("La source a été créée avec succès.", 64)
else
dbContexte.revokeObject(nomSource)
maSource = dbContexte.getByName(cheminBdd)
dbContexte.registerObject(nomSource, maSource)
MsgBox("La source existait déjà et a été actualisée." & chr(13) & _
"Vous pouvez continuer.", 64)
endif
maConnexion = maSource.getconnection("","")
'maConnexion.setReadOnly(False) 'Je rajoute cette ligne (sans l'apostrophe devant) une fois que j'ai eu mon premier message d'erreur, et cela provoque une autre erreur
if IsNull(maConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if
stmt = maConnexion.CreateStatement
stmt.executeQuery( "CHECKPOINT DEFRAG" ) 'C'est ici que çà plante une première fois
maconnexion.dispose
MsgBox ("La défragmentation de : " & chr(13) & nomSource & chr(13) & "est maintenant terminée..."', ,")
End Sub
- soit mettre ReadOnly = False quelque part
- soit par une autre solution réussir à réaliser les points 1 et 2 au démarrage de ma base
Merci d'avance pour votre aide.