Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/09/2024, à 19:29

El Catala

[Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonsoir,
Depuis un moment, j' essaie de mettre à jour une table de Lo avec un script Python.
Je lance le script depuis un bouton placé sur un formulaire.
En fait, rien ne se passe:
Pas d' insertion de données
Aucun message d' erreur.
Aucun retour d' informations depuis les nombreux print que j' ai placé au fil du script.

#!/usr/bin/env python3

import pyuno

def miseajourTable(event = True):
   # Obtenir le contexte du composant
    context = XSCRIPTCONTEXT.getComponentContext()
    # Accéder au document actuel
    document = XSCRIPTCONTEXT.getDocument()
     # Accéder à la base de données via le document
    connection = None
    try:
        print("Tentative de connexion à la base de données...")
        # Accéder à l'interface de base de données
        database_context = context.getByName("/com/sun/star/sdb/DatabaseContext")
        data_source = database_context.getByName("/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test")
        # Établir la connexion
        connection = data_source.getConnection("", "")
        if connection:
            print("Connexion réussie.")
            # Créer une instruction
            stmt = connection.createStatement()
            # Insertion dans la table T_Departement
            sql = "INSERT INTO T_Departement(Numero, Departement) VALUES (88, 'Vosges')"
            print("Exécution de la requête SQL :", sql)
            stmt.execute(sql)
            connection.commit()
            print("Insertion réussie.")

    except Exception as e:
        print("Erreur lors de l'accès à la source de données :", str(e))
    finally:
        if 'connection' in locals() and connection:
            connection.close()

g_exportedScripts = (miseajourTable(),)

Ceci n' est qu' un test car la finalité, lorsque le script sera fonctionnel, est de modifier des champs d' une table à l' aide de données contenu dans un fichier.csv.
Je ne vois vraiment pas comment régler ce problème.
Cordialement

Dernière modification par El Catala (Le 06/10/2024, à 13:10)


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#2 Le 27/09/2024, à 08:22

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
tu es bien dans un formulaire LO Base, pas dans Calc ?
J'ai déjà fait ça dans Base, mais en basic, pas en python.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#3 Le 27/09/2024, à 12:01

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour;
Pas de soucis, je suis bien dans LO Base. Un débogage sous APSO m' a permis de trouver enfin la ligne en erreur. Cette ligne de commande est:

 database_context = context.getByName("/com/sun/star/sdb/DatabaseContext")

L' erreur est: attibut error
Il semblerai que l' on ne puisse aps utiliser getByName. Je ne vois pas ou chercher pour remplasser cette ligne.
Cordialment


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#4 Le 27/09/2024, à 12:18

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

D'après la doc, l'interface XScriptContext a bien une fonction getComponentContext qui renvoie un objet ::com::sun::star::uno::XComponentContext
A partir duquel tu as une fonction publique getValueByName
Essaie avec:

 database_context = context.getValueByName("/com/sun/star/sdb/DatabaseContext")

Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#5 Le 27/09/2024, à 16:39

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonsoir,
Effectivement, dans la ligne de code:

 database_context = context.getValueByName("/com/sun/star/sdb/DatabaseContext")

il n' y aplus d' erreur.
Par contre, dans la ligne suivante,

data_source = database_context.getByName("/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test")

dans le cas de la forme getByName l' erreur suivante est levée:

None Type , object has no attribute getByName

le résultat est le même avec getValueByName.
Je vais approfondir cette documentation que vous m' avez transmise pour tenter dit voir plus clair.
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#6 Le 27/09/2024, à 17:17

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Je sais pas de quel exemple tu es parti, mais il y a un truc qui me parait bizarre, puisque tu es déjà dans la base de données et que tu lances une macro, il n'est pas nécessaire de préciser le chemin pour accéder à cette base, la ligne

data_source = database_context.getByName("/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test")

me semble inutile.
En basic, on utilise l'object "ThisDatabaseDocument" qui représente la base de données courante et pour ouvrir la connection

ThisDatabaseDocument.CurrentController.connect("","")
maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection

Je pourrais pas t'aider plus en Python.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#7 Le 29/09/2024, à 09:59

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
Bon, suite aux nombreuses recherches effectuées sur le net, j' ai trouvé un script pour vérifier l' etat de la connection. En retour de son execution, j' ai le message d' erreur suivant:

Erreur de connexion: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Il semblerai qu' il manque un driver ?
Voici le script:

#! /usr/bin/env python3

import pyodbc

try:
    conn = pyodbc.connect('DSN=Base_Test;')
    print("Connection réussie")
except pyodbc.Error as e:
    print("Erreur de connexion:", e)

Avez-vous une idée pour s' en sortir!!!
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#8 Le 30/09/2024, à 07:30

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
à mon avis, ta base n'est pas enregistrée au niveau système, c'est pour ça qu'elle n'est pas visible via DSN.
Quand tu crées une nouvelle base de données, on te demande si tu veux que la base soit référencée, il faut cocher Oui.
Tu peux l'enregistrer à posteriori via le menu Options->Libre Office Base->Bases de données
puis cliquer sur nouveau pour enregistrer ta base.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#9 Le 30/09/2024, à 19:20

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonsoir,
J' ai suivi votre conseil, la base est maintenant enregistrée. Malheureusement cela ne change rien.
Je ne comprends vraiment pas pourquoi cela ne veut pas marcher.
Cordialement et merci de votre aide.


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#10 Le 30/09/2024, à 19:35

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Si tu veux faire ça en basic, je peux t'aider, mais pas en python, désolé.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#11 Le 30/09/2024, à 20:15

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

C' est d' autant plus incompréhensible que j' ai des script en scrptforge python qui interréagissent avec des formulaires des bases libreoffice .
Je vais encore tester deux trois choses avant de retourner au Basic( que je n' aime pas du tout).
Merci de votre proposition. Comme on dit à suivre.
Bonne soirée


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#12 Le 01/10/2024, à 13:03

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
Au final, je me demande si, à force de réaliser des tests, ma version de LibreOffice n' est pas dégradée. J' ai 4 bases de données réalisées avec LO Base Hsqldb.
Une pour gérer mes photos.
Une pour gérer mes plans pour le bricolage.
Une pour gérer des finances.
Et, enfin une qui me permet de réaliser les tests de scripts.
Ces quatres bases utilisent les même routines pour la gestions des formulaires et autres. Seul le préfixe change suivant la base concernée, par exemple:
phtMn.py, brsMn.py, plnMn.py et tstMn.py.
Alors que pour les trois premières, les scripts python fonctionnent sans problème, pour la dernière, (celle des tests), plus rien ne se passe.
Pire encore, j' utilise scriptforge python pour l' ensemble des BD, en voulant créer un nouveau script de test, le module n' existerait plus. Pas normal puisque les anciens scripts se déroulent sans erreur.
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#13 Le 01/10/2024, à 13:30

Rafbor

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

A tout hasard (source)

• Les scripts Python nécessitent un import depuis le module scriptforge :
from scriptforge import CreateScriptService

Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#14 Le 01/10/2024, à 13:39

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
C' est tout à fait cela. Sur le nouveau script que j' ai voulu créer j' ai le message d' erreur "inconnu au bataillon". Cette erreur m' est transmise aussi bien par APSO que par Thonny, mon IDe habituel.
Pourtant, ce module doit bien exister puisqu' il fonctionne sur les trois premières bases!!!
Ou alors, c' est ma base test qui est pollué. Cela mérite que j' en créer une autre pour en avoir le coeur net.
Cordialement

Dernière modification par El Catala (Le 01/10/2024, à 13:40)


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#15 Le 03/10/2024, à 17:35

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonsoir,
Bon j' ai remanié un script test afin d' arrivée comprendre les problèmes rencontrés:

#! /user/bin/env python3

from scriptforge import CreateScriptService
import uno

def ouvrirTable(event = True):
    ui = CreateScriptService('ui')
    db = ui.GetDocument('/mnt/El_Casot/Yvon/Informatique/LibreOffice/Base_Test.odb')
    base = db.GetDatabase()
    #base.openTable('T_Departement')
    #Requête à executer
    rqt = 'INSERT INTO "T_Departement" ("Numero", "Departement") VALUES(1, "Ain")'
    
    try:
        base.RunSql(rqt, directsql=True)
    except Exception as e:
        print(f"Une erreur est survenue : {e}")
    
ouvrirTable()

Ce code, dans l' état, ouvre sans problème une table (T_Departement). Cette ligne est pour l' instant fermée.
Par contre, il reste un soucis avec la requête SQL. Avec l' outil incorporé dans LO, elle fonctionne.
Dans le script, une erreur de syntaxe est relevée.
A force de la lire, je ne vois pas ou cela peche. Si vous connaissez un tuto traitant de SQL dans scriptforge, je suis preneur.
Par avance merci.
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#16 Le 04/10/2024, à 08:44

Dude

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Le numéro est-il déclaré en clé primaire ?

Hors ligne

#17 Le 04/10/2024, à 19:09

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonsoir,
Non, Numero n' est pas déclaré en clé primaire. Dans ce champ, on trouve le numéro du département.
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne

#18 Le 06/10/2024, à 13:07

El Catala

Re : [Impossible]-Ajouter données dans LO Base HSQLDB Script Python3

Bonjour,
Visiblement, python ne peut pas fonctionner avec LibreOffice Base!!! Dommage
Cordialement


PC portable HP Laptop 17
Xubuntu 22.04.2 Lts
Dual boot Win 11
LibreCad 2.2 : Freecad 0.21: LibreOffice 7: Ancestris 0.12:

Hors ligne