[Résolu]-Connection table libreoffice base python

Bonsoir,
J’ ai développé une application qui me permet de récupérer des données de page web. Pour continuer mon projet, j’ ai besoin de créer des diagrammes. Un rapport édité depuis une base libre office ne permet pas de les réaliser.
Je pensai donc extraire les données depuis une table de libre office base avec un script python puis d’ utiliser une des bibliothèques permettant d’ éditer un diagramme.
Depuis plusieurs jours, je recherche sur internet une solution mais j’ avoue que je n’ avance pas. La majorité des documents traitant de ce sujet sont plus sur un tableau Calc que sur le module base. De plus elles sont quasiment toutes en anglais ce qui me complique considérablement la tache.
Avez-vous déjà tenté cette opération?
Dans l’ idéal, un clic sur un bouton d’ un formulaire ouvrirai le diagramme.
Cordialement

Bonsoir,
Les deux questions sont différentes. Dans le premier cas, il s’ agissait de déclencher un script python depuis un formulaire LO. Ce script me permet de faire un calcul hors de LO.J’ ai ajouté dans mon script la fonction ci-dessous:

def Control_Action(ev):
ctrl = ev.Source
frm = ev.Source.Model.Parent
subform = frm.getByName("F_Ctn")

Dans le cas présent, je veux récupérer les données d’ une table existante. Pour le SQL, pas de soucis. Le problème est la connection à la table.
Cordialement

Bonjour,

Merci beaucoup de votre réponse. Pas de soucis pour le délai, je suis à la retraite et vous n’ avez pas que ce sujet à voir.
Votre code est vraiment très complet et je vais donc m’ atteler à le modifier pour l’ usage auquel je le destine.

Bonne continuation et encore merci

Bonjour @ElCatala

Tu avais déjà plus ou moins posé la même question et répondu finalement qu’il n’y avait pas de table ?

Sinon, pour l’exécution de SQL via script python dans base voir cette réponse.

[Ajout 17-04-21 10:35]

Désolé @ElCatala je n’ai pas été notifié de ta réponse, du coup avec beaucoup de retard ci-dessous un exemple de parcours de Table1 et affichage du champ Texte (à toi d’adapter les noms de champs et, je suppose stocker les valeurs en variables pour l’affichage du diagramme).

ctx = XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
oDoc = XSCRIPTCONTEXT.getDocument()
   
oCC = oDoc.getCurrentController()
oDS = oCC.DataSource
oAC = oDS.getConnection("","")
oRowSet = smgr.createInstanceWithContext("com.sun.star.sdb.RowSet", ctx)
oRowSet.ActiveConnection = oAC
oRowSet.CommandType = TABLE
oRowSet.Command = "Table1" 
oRowSet.execute()
oRowSet.beforeFirst()

while oRowSet.next():
    sTexte = oRowSet.getColumns().getByName("Texte").getString()
    MessageBox(WARNINGBOX, BUTTONS_OK, "Titre", sTexte)

Voir ParcourirTable.odb

Cordialement

1 Like