FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017 Ajouter une question
Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).
Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.
- Comment se connecter à une base et créer une requête par macro ?
- Quelles sont les méthodes pour lire le contenu d'une requête ?
- Comment ajouter un enregistrement dans une table ?
- Comment supprimer des enregistrements dans une table ?
- Comment mettre à jour des enregistrements dans une table ?
- Comment ajouter une nouvelle table par macro ?
- Comment activer/enregistrer une source de données ?
- Comment désactiver une source de données ?
Cet exemple effectue une requête dans la base de données enregistrée « Bibliography » (base démo fournie dans le pack d'installation Open Office).
Une base est dite enregistrée lorsque vous pouvez la visualiser en utilisant le menu Afficher/Sources de données (ou par la touche raccourci F4) depuis Tableur et Traitement de texte.
Pour enregistrer une base :
- menu Outils ;
- Options ;
- sélectionnez « Base » dans l'arborescence ;
- double cliquez sur « Bases de données » ;
- cliquez sur le bouton « Nouveau » ;
- utilisez le bouton « Parcourir » pour rechercher la base sur le disque ;
- puis Validez en cliquant sur OK dans toutes les boîtes de dialogue.
Remarque :
Le nom des champs et des tables est encadré par des doubles guillemets dans la requête.
Code vb : | Sélectionner tout |
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 35 36 37 38 39 40 41 42 | Sub RequeteBase_V01 Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As Object Dim strSQL As String oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") 'Connexion à la base de données enregistrée "Bibliography" '(Base démo fournie dans le pack d'installation Open Office) 'Une base est dite enregistrée lorsque vous pouvez la visualiser 'en utilisant le menu Afficher/Sources de données(ou par la touche raccourci F4). 'Pour enregistrer une base : 'Menu Outils 'Options 'Sélectionnez "Base" dans l'arborescence 'Double cliquez sur "Bases de données" 'Cliquez sur le bouton "Nouveau" 'Utilisez le bouton "Parcourir" pour rechercher la base sur le disque 'Puis Validez en cliquant sur OK dans toutes les boîtes de dialogue. oDB = oDBContext.getbyName("Bibliography") 'Si la base est protégée par un mot de passe, utilisez 'oBase = oDB.getConnection("Login", "MotDePasse") oBase = oDB.getConnection("","") oStatement = oBase.createStatement() strSQL = "SELECT ""Identifier"",""Publisher"",""ISBN"" FROM ""biblio"" " & _ "WHERE ""Author""='Böhm, Franz'" oRequete = oStatement.executeQuery( strSQL ) If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) & " / " & _ oRequete.getString(2) & " / " & oRequete.getString(3) Wend End If oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub |
Cet autre exemple permet de se connecter à une base non enregistrée.
Code vb : | Sélectionner tout |
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 | Sub RequeteBase_V02 Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As Object Dim strSQL As String , Fichier As String Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName(Fichier) oBase = oDB.getConnection("","") oStatement = oBase.createStatement() strSQL = "SELECT ""ID"",""Champ1"",""Champ2"" FROM ""maTable"" " & _ "WHERE ""Champ2""=12345" oRequete = oStatement.executeQuery( strSQL ) If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) & " / " & _ oRequete.getString(2) & " / " & oRequete.getString(3) Wend End If oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub |
Comme vous pouvez le voir dans l'exemple précédent, la méthode getString permet de lire le contenu de la requête au format texte.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | 'Vérifie que le résultat de la requête n'est pas vide. If Not IsNull(oRequete) Then 'Boucle sur chaque ligne résultat de la requête While oRequete.next 'Exemple pour 3 champs type String. 'Les paramètres 1, 2 et 3 définissent les numéros de colonnes. MsgBox oRequete.getString(1) & " / " & _ oRequete.getString(2) & " / " & oRequete.getString(3) Wend End If |
Quelques méthodes disponibles en fonction du type de champ à lire dans la base :
Méthode (Type de donnée)
getString (String)
getBoolean (Boolean)
getDouble (Double)
getDate (Date)
getTime (Time)
getTimestamp (DateTime)
Exemple de lecture d'un champ Date au format JJ/MM/AA hh:mm:ss dans la base :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) 'renvoie un format AAAA-MM-JJ MsgBox oRequete.getDate(1)'.Year 'renvoie un format AAAA 'MsgBox oRequete.getDate(1).Month 'renvoie un format MM 'MsgBox oRequete.getDate(1).Day 'renvoie un format JJ MsgBox oRequete.getTimestamp(1).Year 'renvoie un format AAAA MsgBox oRequete.getTimestamp(1).Month 'renvoie un format MM 'MsgBox oRequete.getTimestamp(1).Day 'renvoie un format JJ MsgBox oRequete.getTimestamp(1).Hours 'renvoie un format hh 'MsgBox oRequete.getTimestamp(1).Minutes 'renvoie un format mm 'MsgBox oRequete.getTimestamp(1).Seconds 'renvoie un format ss 'MsgBox oRequete.getTimestamp(1).HundredthSeconds Wend End If |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub AjoutEnregistrement Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As Object Dim strSQL As String , Fichier As String Fichier = ConvertToURL("C:\Documents and Settings\mimi\OOoBase.odb") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName(Fichier) oBase = oDB.getConnection("","") oStatement = oBase.createStatement() '--- Ajoute un enregistrement --- strSQL = _ "INSERT INTO ""maTable"" (""ChampTexte"", ""ChampNum"") Values('azerty', 12345)" oRequete = oStatement.executeQuery( strSQL ) '-------------------------------- oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub SupprimerEnregistrement Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As Object Dim strSQL As String , Fichier As String Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName(Fichier) oBase = oDB.getConnection("","") oStatement = oBase.createStatement() 'Supprime les enregistrements si le Champ2 contient la valeur 12345 strSQL = "DELETE FROM ""maTable"" WHERE ""Champ2""=12345 " oRequete = oStatement.executeQuery( strSQL ) '------------------------------------------------------------------ oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub |
Code vb : | Sélectionner tout |
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 | Sub MiseAJourEnregistrement Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As Object Dim strSQL As String , Fichier As String Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName(Fichier) oBase = oDB.getConnection("","") oStatement = oBase.createStatement() 'Mise à jour d'enregistrements : 'Insère le mot "Cloture" dans le Champ1 si le Champ2 contient la valeur 10 strSQL = "UPDATE ""maTable"" SET ""Champ1""='Cloture' WHERE ""Champ2"" = 10" oRequete = oStatement.executeQuery( strSQL ) '----------------------------- oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub |
Code vb : | Sélectionner tout |
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 35 36 37 38 39 40 41 | Sub CreerTable Dim oDBContext As Object , oDB As Object , oBase As Object Dim Fichier As String Dim NouvelleTable As Object, CollectionTables As Object, NouveauChamp As Object Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName(Fichier) oBase = oDB.getConnection("","") 'Création nouvelle table CollectionTables = oBase.Tables NouvelleTable = CollectionTables.createDataDescriptor NouvelleTable.Name = "gestionStock" 'nom de la nouvelle table 'Description 1er champ NouveauChamp = NouvelleTable.Columns.createDataDescriptor NouveauChamp.Name = "NomProduit" 'nom champ NouveauChamp.Type = com.sun.star.sdbc.DataType.VARCHAR '(1) champ type texte NouveauChamp.Precision = 200 NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'ajout du champ 'Description 2eme champ NouveauChamp = NouvelleTable.Columns.createDataDescriptor NouveauChamp.Name = "NbStock" 'nom champ NouveauChamp.Type = com.sun.star.sdbc.DataType.INTEGER '(2) champ type numérique NouveauChamp.Precision = 10 NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'Insertion de la nouvelle table CollectionTables.appendByDescriptor(NouvelleTable) '---------------------------------------- oBase.Close oBase.Dispose End Sub |
Une source est dite enregistrée lorsque vous pouvez la visualiser en utilisant le menu Afficher/Sources de données (ou par la touche raccourci F4) depuis Tableur ou Traitement de texte.
Code vb : | Sélectionner tout |
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 | Sub Integrer_SourceDonnees() Dim oDBContext As Object, oDataSource As Object Dim Source As String, Chemin As String Dim Array() 'Le nom qui s'affichera quand vous visualiserez 'la source depuis Tableur ou Traitement de texte (touche F4). Source = "OOoBase" 'Répertoire contenant la base de données Chemin = ConvertToURL("C:\Documents and Settings\mimi\dossier") oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDataSource = createUnoService("com.sun.star.sdb.DataSource") 'Vérifie s'il existe déjà une base intégrée portant ce nom If oDBContext.hasByName(Source) then MsgBox "Opération annulée. Vérifiez le nom." , , "Message" Exit Sub End If 'Attention au format URL: bien saisir un Slash / 'Chemin & "/OOoBase.odb" correspond au chemin complet de votre base de données oDataSource.databaseDocument.storeAsURL(Chemin & "/OOoBase.odb", Array()) Chemin = "sdbc:dbase:" & Chemin oDBContext.registerObject(Source , oDataSource) oDataSource.setPropertyValue("URL", Chemin) oDataSource.databaseDocument.Store()'Sauvegarde 'oDataSource.databaseDocument.Close(True) End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub Desactiver_SourceDeDonnees() Dim oDBContext As Object, Source As String 'Le nom de la source à désactiver Source = "OOoBase" oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") If oDBContext.hasByName(Source) Then oDBContext.revokeObject(Source) Else MsgBox "Opération annulée. Vérifiez le nom." , , "Message" End If End Sub |
Pour désactiver une source manuellement :
- menu Outils ;
- Options ;
- sélectionnez « Base » dans l'arborescence ;
- double cliquez sur « Bases de données » ;
- sélectionnez une source dans la liste ;
- cliquez sur le bouton « Annuler » pour désactiver la source de données ;
- puis Validez en cliquant sur OK dans toutes les boîtes de dialogue ;
- la source n'est plus visible en utilisant le menu Afficher/Sources de données (ou par la touche raccourci F4) depuis Tableur ou Traitement de texte.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.