[Résolu][Basic] Récupérer une fonction en Python
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
[Résolu][Basic] Récupérer une fonction en Python
Bonjour,
Pour l' instant, j' en suis au stade de la réflexion. Mon projet serait de transférer une base actuellement sous access pour la passer en LibreOffice. La base access me permet de gérer mes photos.Cette petite application sans prétention me permet de récupérer les données Exif et de trier, renommer déplacer etc cette collection. Bon, je me sers de Windows uniquement pour cette application et donc la transférer sous libreoffice base me faciliterai la vie bien que je suis bien conscient des faiblesses de LibreOffice.
Dans access, j' utilise l' excellent travail de monsieur Thierry GASPERMENT qui à développer une classe objet pour récupérer les informations contenues dans une prise de vue. Je ne m'y connais pas suffisament pour la transcrire en Basic. Il est sur que cela serait le plus efficace.
Le principal problème auquel je me heurte est bien sûr la récupération de ces données Exif. J' ai commencé à regarder du côté de ExifTool qui me parait puissant. Mes questions sont les suivantes:
Pour l' instant, ExifTool semble fonctionner uniquement par un terminal linux. Est-il envisageable et par macro de l'ouvrir depuis LibreOffice?
Les données trouvées, est-il possible de les enregistrer dans une table ?
Il est clair que si cette manipulation est envisageable,je pourrais cesser d' utliser access et donc de ne plus avoir qu' une partition Xubuntu.
Voila le début de mon gros problème?
Cordialement
Pour l' instant, j' en suis au stade de la réflexion. Mon projet serait de transférer une base actuellement sous access pour la passer en LibreOffice. La base access me permet de gérer mes photos.Cette petite application sans prétention me permet de récupérer les données Exif et de trier, renommer déplacer etc cette collection. Bon, je me sers de Windows uniquement pour cette application et donc la transférer sous libreoffice base me faciliterai la vie bien que je suis bien conscient des faiblesses de LibreOffice.
Dans access, j' utilise l' excellent travail de monsieur Thierry GASPERMENT qui à développer une classe objet pour récupérer les informations contenues dans une prise de vue. Je ne m'y connais pas suffisament pour la transcrire en Basic. Il est sur que cela serait le plus efficace.
Le principal problème auquel je me heurte est bien sûr la récupération de ces données Exif. J' ai commencé à regarder du côté de ExifTool qui me parait puissant. Mes questions sont les suivantes:
Pour l' instant, ExifTool semble fonctionner uniquement par un terminal linux. Est-il envisageable et par macro de l'ouvrir depuis LibreOffice?
Les données trouvées, est-il possible de les enregistrer dans une table ?
Il est clair que si cette manipulation est envisageable,je pourrais cesser d' utliser access et donc de ne plus avoir qu' une partition Xubuntu.
Voila le début de mon gros problème?
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: Base de données photos
Bonjour,
Je viens de faire quelques essais, et il semble relativement aisé de récupérer les données exif avec python, moyennant le recours à des bibliothèques externes.
Je joins un exemple bricolé à partir de la bibliothèque exifread, mais il existe d'autres projets, comme PyExifTool qui utilise la bibliothèque ExifTool que tu cites.
À partir de là, récupérer les valeurs et les injecter dans un fichier de base de données ne devrait pas être trop sorcier. La question importante sera : quelles données précisément et pour quels usages ?
Cordialement.
Je viens de faire quelques essais, et il semble relativement aisé de récupérer les données exif avec python, moyennant le recours à des bibliothèques externes.
Je joins un exemple bricolé à partir de la bibliothèque exifread, mais il existe d'autres projets, comme PyExifTool qui utilise la bibliothèque ExifTool que tu cites.
À partir de là, récupérer les valeurs et les injecter dans un fichier de base de données ne devrait pas être trop sorcier. La question importante sera : quelles données précisément et pour quels usages ?
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre hOOnoraire
- Messages : 135
- Inscription : 21 mai 2012 19:40
Re: Base de données photos
Supprimé
Dernière modification par psilocybe le 03 août 2020 09:44, modifié 2 fois.
LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python 3.10 - Java 11 OpenJDK amd64
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Base de données photos
Bonjour
Il est possible en basic et avec la version intégrée d'HSQLDB de récupérer les données Exif d'une photo.
Un petit exemple en utilisant Exiv2
Il existe sous Linux un tas de logiciels qui font déjà très bien le job.
Quand à passer à la version d'Hsqldb 2.4.1 sous Libo alors qu'ils annoncent abandonner HSQLDB pour FireBird à la prochaine version stable ?
A+
Il est possible en basic et avec la version intégrée d'HSQLDB de récupérer les données Exif d'une photo.
Un petit exemple en utilisant Exiv2
Maintenant je ne suis pas sûr, mis à part pour le fun, que vouloir gérer une collection de photos à partir de Base soit la meilleure solutionHubert Lambert a écrit :La question importante sera : quelles données précisément et pour quels usages ?
Il existe sous Linux un tas de logiciels qui font déjà très bien le job.
Quand à passer à la version d'Hsqldb 2.4.1 sous Libo alors qu'ils annoncent abandonner HSQLDB pour FireBird à la prochaine version stable ?
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonjour,
Merci à vous de vos conseils. Grosse journée au bois aujourd'hui, mais ce soir, je regarde vos propositions. Je n' ai jamais travaillé avec python mais pourquoi pas tenter l' expérience.
A très bientôt pour la suite de ce projet.
Cordialement
Merci à vous de vos conseils. Grosse journée au bois aujourd'hui, mais ce soir, je regarde vos propositions. Je n' ai jamais travaillé avec python mais pourquoi pas tenter l' expérience.
A très bientôt pour la suite de ce projet.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Après avoir regarder les solutions proposées, que se soit en python ou en basic, les deux solutions correspondent à l' objet de mes recherches.
La solution python me parait correspondre le mieux au but recherché. Le gros inconvénient est que je n' ai jamais programmé dans ce langage. J' ai trouvé sur ce site un tutoriel permettant de démarrer dans ce langage.
Pour ce qui est de la solution de Piaf, le problème est de savoir si avec firebird on peut obtenir le même résultat que celui présenté ci-dessus.
Pourquoi je persiste dans cette voie? En fait, dans l' application access, j' ai déjà enregistré environ 2000 photos sur un stock de 6000.
Je vais donc explorer ces deux voies. Je ne pense pas revenir sur cette discussion tout de suite. Je préfère avancer sur ce projet et vous communiquer mes premiers résultats.
A bientôt
Après avoir regarder les solutions proposées, que se soit en python ou en basic, les deux solutions correspondent à l' objet de mes recherches.
La solution python me parait correspondre le mieux au but recherché. Le gros inconvénient est que je n' ai jamais programmé dans ce langage. J' ai trouvé sur ce site un tutoriel permettant de démarrer dans ce langage.
Pour ce qui est de la solution de Piaf, le problème est de savoir si avec firebird on peut obtenir le même résultat que celui présenté ci-dessus.
Pourquoi je persiste dans cette voie? En fait, dans l' application access, j' ai déjà enregistré environ 2000 photos sur un stock de 6000.
Je vais donc explorer ces deux voies. Je ne pense pas revenir sur cette discussion tout de suite. Je préfère avancer sur ce projet et vous communiquer mes premiers résultats.
A bientôt
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Je continus cette discussion sur mon projet. Après avoir étudié ExifTool et commencé un début de programme sous Python, existe-t-il un module ou extension permettant de lire les données exif installable dans libreoffice base?
J' arrive à utiliser PyExifTool pour Python, toutefois, je ne peux appeler ce module depuis APSO dans LO
Cordialement
Je continus cette discussion sur mon projet. Après avoir étudié ExifTool et commencé un début de programme sous Python, existe-t-il un module ou extension permettant de lire les données exif installable dans libreoffice base?
J' arrive à utiliser PyExifTool pour Python, toutefois, je ne peux appeler ce module depuis APSO dans LO
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: Base de données photos
Le python embarqué avec LibreOffice est indépendant du python éventuellement installé sur le système. Si une bibliothèque tierce est ajoutée au niveau du système, elle restera invisible au python de LibO.Ernest a écrit :J' arrive à utiliser PyExifTool pour Python, toutefois, je ne peux appeler ce module depuis APSO dans LO
En l'occurrence, il te suffit de récupérer le fichier exiftool.py (ici par exemple) et de le copier dans un sous répertoire "pythonpath" au niveau du script qui doit l'utiliser. LibO le chargera automatiquement.
Si ton script se trouve dans <profil LibO>/Scripts/python/, copie le fichier exiftool.py dans <profil LibO>/Scripts/python/pythonpath/.
À ce stade, un "import exiftool" devrait s'exécuter sans heurt.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Merci beaucoup Hubert Lambert. J' ai suivi vos conseils et cela fonctionne. Petit détail, malgré tout, j' ai créer le dossier pythonpath dans ce dossier /Scripts/python/pythonpath/. pour y placer le dossier exiftool.py. Cela n' a pas fonctionné. Je l' ai donc placé dans /Scripts/python/ et la pas de soucis, j' ai pu importer exiftool.
Voila un premier pas franchi. Me reste plus qu' à traduire la macro réalisé en python pur en langage python compréhensible par le module base. Et la, comme dirait les gosses, c' est pas gagné
Encore merci et bonne continuation.
Merci beaucoup Hubert Lambert. J' ai suivi vos conseils et cela fonctionne. Petit détail, malgré tout, j' ai créer le dossier pythonpath dans ce dossier /Scripts/python/pythonpath/. pour y placer le dossier exiftool.py. Cela n' a pas fonctionné. Je l' ai donc placé dans /Scripts/python/ et la pas de soucis, j' ai pu importer exiftool.
Voila un premier pas franchi. Me reste plus qu' à traduire la macro réalisé en python pur en langage python compréhensible par le module base. Et la, comme dirait les gosses, c' est pas gagné
Encore merci et bonne continuation.
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Voila, après avoir mis au point une macro python pour récupérer les données exif, j' en suis à la traduire en python compréhensible par LO base. Je voulais utiliser une variable globale pour garder en mémoire le chemin d' accès à la photo sélectionnée, et la error!
pourriez-vous m' indiquer ou se situe mon erreur?
Pour commencer, le début de la macro python-LO:
et maintenant l' erreur renvoyée:
Mon soucis est que j' ai absolument besoin de garder en mémoire ce chemin de la photo afin de pouvoir extraire les données exif.
Par avance merci.
Cordialement
Voila, après avoir mis au point une macro python pour récupérer les données exif, j' en suis à la traduire en python compréhensible par LO base. Je voulais utiliser une variable globale pour garder en mémoire le chemin d' accès à la photo sélectionnée, et la error!
pourriez-vous m' indiquer ou se situe mon erreur?
Pour commencer, le début de la macro python-LO:
Code : Tout sélectionner
#!/usr/bin/env python3
from uno import *
from exiftool import *
from datetime import datetime
from fractions import *
from sys import *
global fchslc
def fntslc():
ctx = XSCRIPTCONTEXT.getComponentContext()
create = ctx.ServiceManager.createInstance
filepicker = create("com.sun.star.ui.dialogs.FilePicker")
filepicker.execute()
#return filepicker.Files[0]
fchslc = filepicker.Files[0]
fntslc()
print('Chemin du fichier : ', fchslc)
Visiblement, le couple python-LO ne supporterait pas la variable globale. Est-ce bien la que ce situe le problème?<class 'NameError'>: name 'fchslc' is not defined
File "/opt/libreoffice6.2/program/pythonscript.py", line 1047, in getScript
mod = self.provCtx.getModuleByUrl( fileUri )
File "/opt/libreoffice6.2/program/pythonscript.py", line 484, in getModuleByUrl
exec(code, entry.module.__dict__)
File "/home/elfouste/.config/libreoffice/4/user/Scripts/python/SlcFch_LO.py", line 21, in <module>
print('Chemin du fichier : ', fchslc)
Mon soucis est que j' ai absolument besoin de garder en mémoire ce chemin de la photo afin de pouvoir extraire les données exif.
Par avance merci.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: Base de données photos
Bonjour,
en python, on déclare une variable en lui affectant une valeur et non par un mot clé.
Remplace:
par
puis mets "global fchslc" dans la routine où tu veux utiliser cette variable.
Ceci dit, l'utilisation de variables globales est à proscrire autant que faire se peut pour des raisons de lisibilité du programme et de conflit éventuel avec LOo(je l'ai testé à mes dépends sans pouvoir expliquer quoi que ce soit). Dans ton cas, tu peux faire(non testé):
appelé dans le corps du programme par:
A plus.
en python, on déclare une variable en lui affectant une valeur et non par un mot clé.
Remplace:
Code : Tout sélectionner
global fchslc
Code : Tout sélectionner
fchslc = ""
Ceci dit, l'utilisation de variables globales est à proscrire autant que faire se peut pour des raisons de lisibilité du programme et de conflit éventuel avec LOo(je l'ai testé à mes dépends sans pouvoir expliquer quoi que ce soit). Dans ton cas, tu peux faire(non testé):
Code : Tout sélectionner
def fntslc():
ctx = XSCRIPTCONTEXT.getComponentContext()
create = ctx.ServiceManager.createInstance
filepicker = create("com.sun.star.ui.dialogs.FilePicker")
filepicker.execute()
return filepicker.Files[0]
Code : Tout sélectionner
fchslc = fntslc()
A jour de LibreOffice et de Ubuntu
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonjour,
Merci de vos conseils qui m' ont permis de continuer mon développement. Tout fonctionne tel que je le souhaitais. Il me reste maintenant à importer ces données dans une table.
Je ne manquerai pas de publier le résultat final si cela peut intéresser quelqu' un.
Cordialement
Merci de vos conseils qui m' ont permis de continuer mon développement. Tout fonctionne tel que je le souhaitais. Il me reste maintenant à importer ces données dans une table.
Je ne manquerai pas de publier le résultat final si cela peut intéresser quelqu' un.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonjour,
Me revoilà encore. J' ai voulu tester le début de la macro directement depuis un bouton sur un formulaire. Le système plante avec le message d' erreur suivant:
Je joins également le code de la macro:
Par avance, merci de votre soutien!
Cordialement
Me revoilà encore. J' ai voulu tester le début de la macro directement depuis un bouton sur un formulaire. Le système plante avec le message d' erreur suivant:
Visiblement, quelque chose ne va pas dans la fonction mais quoi?com.sun.star.uno.RuntimeException: Error during invoking function fntslc in module:///home/elfouste/.config/libreoffice/4/user/Scripts/python/SlcFch_LO.py
(<class 'TypeError'>fntslc()takes 0 positional arguments but 1 was given
File"/opt/libreoffice6.2/program/pythonscript.py"line 905, in invoke ret = self.func(*args))
Je joins également le code de la macro:
Code : Tout sélectionner
#!/usr/bin/env python3
from uno import *
from exiftool import *
from datetime import datetime
from fractions import *
from sys import *
# Sélectionner une photographie
fchslc = ' '
def fntslc():
ctx = XSCRIPTCONTEXT.getComponentContext()
create = ctx.ServiceManager.createInstance
filepicker = create("com.sun.star.ui.dialogs.FilePicker")
filepicker.execute()
return filepicker.Files[0]
global fchslc
fchslc = fntslc()
print(fchslc)
# Chemin du fichier
crt = 'h'
pstcrt = fchslc.rfind(crt)
crt1 = 's'
pstcrt1 = fchslc.rfind(crt1)
chmpht = fchslc[pstcrt-1:pstcrt1+2]
print(chmpht)
# Nom de la photo
crt2 = '.'
pstcrt2 = fchslc.rfind(crt2)
nmpht = fchslc[pstcrt1+2:pstcrt2]
print(nmpht)
# Extension du fichier
ext = fchslc[pstcrt2:]
print(ext)
# Fichier actuel
fchact = fchslc[pstcrt-1:]
#Extraction du fabricant de l' appareil
with ExifTool() as e:
marque = e.get_tag('Make', fchact)
# Sélection de la procédure en fonction du fabricant de l' appareil
if marque == None:
print ("Il n' y a pas de données exif pour cette photographie !")
sys.exit()
elif marque == 'Canon':
with ExifTool() as e:
modele = e.get_tag('Model', fchact)
dtcrt = e.get_tag('DateTimeOriginal', fchact)
lrg = e.get_tag('ImageWidth', fchact)
htr = e.get_tag('ImageHeight', fchact)
exposition = e.get_tag('ExposureTime', fchact)
vtsobturation = e.get_tag('ShutterSpeed', fchact)
focale = e.get_tag('FNumber', fchact)
iso = e.get_tag('Iso', fchact)
ouverture = e.get_tag('ApertureValue', fchact)
luminosite = e.get_tag('LightValue', fchact)
flash = e.get_tag('Flash', fchact)
lngfocale = e.get_tag('FocalLength', fchact)
elif marque == 'FUJIFILM':
with ExifTool() as e:
modele = e.get_tag('Model', fchact)
dtcrt = e.get_tag('DateTimeOriginal', fchact)
lrg = e.get_tag('ImageWidth', fchact)
htr = e.get_tag('ImageHeight', fchact)
extension = e.get_tag('FileTypeExtension', fchact)
exposition = e.get_tag('ExposureTime', fchact)
vtsobturation = e.get_tag('ShutterSpeed', fchact)
focale = e.get_tag('FNumber', fchact)
iso = e.get_tag('Iso', fchact)
ouverture = e.get_tag('ApertureValue', fchact)
luminosite = e.get_tag('LightValue', fchact)
flash = e.get_tag('Flash', fchact)
lngFocale = e.get_tag('FocalLength', fchact)
else:
with ExifTool() as e:
modele = e.get_tag('Model', fchact)
dtcrt = e.get_tag('DateTimeOriginal', fchact)
lrg = e.get_tag('ImageWidth', fchact)
htr = e.get_tag('ImageHeight', fchact)
extension = e.get_tag('FileTypeExtension', fchact)
exposition = e.get_tag('ExposureTime', fchact)
vtsobturation = e.get_tag('ShutterSpeed', fchact)
focale = e.get_tag('FNumber', fchact)
iso = e.get_tag('Iso', fchact)
ouverture = e.get_tag('ApertureValue', fchact)
luminosite = e.get_tag('LightValue', fchact)
flash = e.get_tag('Flash', fchact)
lngfocale = e.get_tag('FocalLength', fchact)
# Extraction de la date et de l' heure de prise de vue
dt = datetime.strptime(dtcrt,"%Y:%m:%d %H:%M:%S")
dtclc = dt.strftime('%d-%m-%Y')
hrprsv = dt.strftime('%H:%M:%S')
x = int(1 / exposition)
exp = Fraction(1,x)
y = int(1 / vtsobturation)
vtsobt = Fraction(1,y)
y = ouverture
ouv = format(y, '0.1f')
if flash == 16:
print ('Flash : ', 'Inactif')
else:
print ('Flash : ', 'Actif')
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: Base de données photos
Bonjour,
Lorsque tu appelles une macro depuis un bouton ou tout autre contrôle, le programme passe automatiquement un objet "event" en argument à cette macro, qui contient des informations sur l'origine de l'appel. Basic ne se plaint pas si la fonction ignore ce paramètre, mais python est plus strict.
Si tu veux pouvoir appeler la fonction directement (sans paramètre) et depuis un contrôle (avec paramètre), il suffit de faire :
Cordialement.
Lorsque tu appelles une macro depuis un bouton ou tout autre contrôle, le programme passe automatiquement un objet "event" en argument à cette macro, qui contient des informations sur l'origine de l'appel. Basic ne se plaint pas si la fonction ignore ce paramètre, mais python est plus strict.
Si tu veux pouvoir appeler la fonction directement (sans paramètre) et depuis un contrôle (avec paramètre), il suffit de faire :
Code : Tout sélectionner
def fntslc(event=None):
...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonjour,
Excellent, plus d' erreur. Il faut maintenant que je passe à l' enregistrement des données que j' ai pu récupérer. A ce sujet, existe-t-il une documentation adapté à python/LO Base. Je suis vraiment attiré par ce langage qui me parait relativement simple comparé à Basic. Par contre, il me semble demander beaucoup plus de rigueur dans la rédaction. Ce qui est intéressant se sont les messages d' erreur bien ciblé qui facilite grandement la correction des bugs que l' on rencontre.
Merci de votre aide précieuse.
Cordialement
Excellent, plus d' erreur. Il faut maintenant que je passe à l' enregistrement des données que j' ai pu récupérer. A ce sujet, existe-t-il une documentation adapté à python/LO Base. Je suis vraiment attiré par ce langage qui me parait relativement simple comparé à Basic. Par contre, il me semble demander beaucoup plus de rigueur dans la rédaction. Ce qui est intéressant se sont les messages d' erreur bien ciblé qui facilite grandement la correction des bugs que l' on rencontre.
Merci de votre aide précieuse.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: Base de données photos
Bonjour,
ce qui m'a bien aidé:
https://wiki.openoffice.org/wiki/FR/Doc ... _to_Python
https://forum.openoffice.org/fr/forum/v ... 37&t=53131
ainsi que les exemples du forum.
pour python proprement dit:
http://www.xavierdupre.fr/app/teachpyx/helpsphinx/introduction.html
https://docs.python.org/fr/3.6/library/intro.html pour tous les détals.
A plus.
ce qui m'a bien aidé:
https://wiki.openoffice.org/wiki/FR/Doc ... _to_Python
https://forum.openoffice.org/fr/forum/v ... 37&t=53131
ainsi que les exemples du forum.
pour python proprement dit:
http://www.xavierdupre.fr/app/teachpyx/helpsphinx/introduction.html
https://docs.python.org/fr/3.6/library/intro.html pour tous les détals.
A plus.
Dernière modification par Oukcha le 23 mai 2019 08:46, modifié 1 fois.
Raison : url non commerciales activées
Raison : url non commerciales activées
A jour de LibreOffice et de Ubuntu
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonjour,
Juste un mot car si les deux premiers liens fonctionnent, les deux suivants semblent morts.
Merci tout de même, je commence à étudier la doc LO afin de voir comment je peux faire le lien avec le résultat de la macro et l' enregistrement de ces données.
Je pense que je vais les afficher dans un formulaire puis les sauvegarder dans la table correspondante.
Cordialement
Juste un mot car si les deux premiers liens fonctionnent, les deux suivants semblent morts.
Merci tout de même, je commence à étudier la doc LO afin de voir comment je peux faire le lien avec le résultat de la macro et l' enregistrement de ces données.
Je pense que je vais les afficher dans un formulaire puis les sauvegarder dans la table correspondante.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: Base de données photos
Remplacez h**p par http. Les liens externes sont neutralisés ainsi.Ernest a écrit :les deux suivants semblent morts
L'avant dernier est actif.
Seul le dernier aboutit à 404 Not Found.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- ManitOOu
- Messages : 2744
- Inscription : 16 avr. 2010 13:31
Re: Base de données photos
Bonjour
A+
Non non, il est actif : https://docs.python.org/fr/3.6/library/intro.html c'est juste qu'à la suite du lien, joel275 à ajouté : "pour tous les détals".micmac a écrit :Seul le dernier aboutit à 404 Not Found.
A+
Dernière modification par Oukcha le 23 mai 2019 06:02, modifié 1 fois.
Raison : url activée, le site en question n'a pas de vocation commerciale
Raison : url activée, le site en question n'a pas de vocation commerciale
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
AOO
LibreOffice
Debian 10 et 11
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Malgré tous les exemples que vous m' avez conseillés, je sèche lamentablement. Voila ou j' en suis à l' heure actuelle.
Ma base de données est ouverte. Sur le formulaire actif, j' ai un bouton qui déclenche la macro. Cette dernière ouvre une boite de dialogue qui me permet de sélectionner une photo. La récupération des différents tag exif est effective.
Par contre, je n' arrive pas à enregistrer ces différentes données dans le formulaire. J' ai beau retourné le problème dans toutes les directions c' est le fiasco.
Avant de passer à la finalisation, je me suis créé une base contenant une table est un formulaire avec un bouton décjenchant une macro contenant le code ci-dessous:
le but: enregistrer le résultat de cette addition.dans un champ de la base.
Sauf erreur, il semble qu' il faut se connecter à cette base, puis au formulaire puis au champ correspondant.
J' ai tenté de me baser sur le basic mais bon je n' ai pour l' instant pas trouvé de solution!!!
Cordialement
Malgré tous les exemples que vous m' avez conseillés, je sèche lamentablement. Voila ou j' en suis à l' heure actuelle.
Ma base de données est ouverte. Sur le formulaire actif, j' ai un bouton qui déclenche la macro. Cette dernière ouvre une boite de dialogue qui me permet de sélectionner une photo. La récupération des différents tag exif est effective.
Par contre, je n' arrive pas à enregistrer ces différentes données dans le formulaire. J' ai beau retourné le problème dans toutes les directions c' est le fiasco.
Avant de passer à la finalisation, je me suis créé une base contenant une table est un formulaire avec un bouton décjenchant une macro contenant le code ci-dessous:
Code : Tout sélectionner
#!/usr/bin/env python3
from uno import *
a = 5
b = 10
x = a+b
Sauf erreur, il semble qu' il faut se connecter à cette base, puis au formulaire puis au champ correspondant.
J' ai tenté de me baser sur le basic mais bon je n' ai pour l' instant pas trouvé de solution!!!
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Base de données photos
Bonjour
Je ne pratique pas Python donc de ce côté là
A mon avis, Python est intéressant à partir du moment où il permet d'effectuer des actions que Basic ne permet pas, ou de les faciliter.
Ton exemple n'est donc pas très convaincant
Pour ce qui est du formulaire et du contrôle, il faut naturellement les identifier.. Comme tu déclenches ta macro à partir d'un bouton, il est très simple d'identifier le formulaire en utilisant l'événement déclencheur.
Une fois le formulaire identifié, il suffit de définir le contrôle voulu dans le formulaire.
Ce qui en basic pourrait donner (pour un contrôle Champ formaté Pour ton projet, c'est un peu plus compliqué
Le principe dans mon exemple en basic était de stocker les données Exif récupérées dans un fichier texte puis d'insérer ces donnée dans la table.
Quelque chose du genreA+
Je ne pratique pas Python donc de ce côté là
A mon avis, Python est intéressant à partir du moment où il permet d'effectuer des actions que Basic ne permet pas, ou de les faciliter.
Ton exemple n'est donc pas très convaincant
Pas si tu travailles à partir d'un formulaire ouvert, dans ce cas la connexion est déjà effective. Si tu as besoin d'une d'une référence à cette connexion, tu peux utiliser la connexion active du formulaire.Ernest a écrit :Sauf erreur, il semble qu' il faut se connecter à cette base
Pour ce qui est du formulaire et du contrôle, il faut naturellement les identifier.. Comme tu déclenches ta macro à partir d'un bouton, il est très simple d'identifier le formulaire en utilisant l'événement déclencheur.
Une fois le formulaire identifié, il suffit de définir le contrôle voulu dans le formulaire.
Ce qui en basic pourrait donner (pour un contrôle Champ formaté Pour ton projet, c'est un peu plus compliqué
Le principe dans mon exemple en basic était de stocker les données Exif récupérées dans un fichier texte puis d'insérer ces donnée dans la table.
Quelque chose du genre
Code : Tout sélectionner
.....
instrSQL = "INSERT INTO ""tExiv2"" (""Tag"", ""Valeur"",""refPhoto"") VALUES (?,?,?)"
maRequete = maConnexion.prepareStatement(instrSQL)
f1 = FreeFile
Open convertFromURL(nomChemin) & "DonneesExif.txt" For Input As #f1
Do While not Eof(f1)
Line Input #f1, uneLigne
txt = left(uneligne, InStr(uneLigne," ")-1) & ";" & LTrim(Mid(uneLigne,InStr(uneLigne," "))
maRequete.setString(1,Split(txt,";")(0))
maRequete.setString(2,Split(txt,";")(1))
maRequete.setInt(3,IdentifiantPhoto)
maRequete.execute
Loop
maRequete.dispose
oForm.getByName("sfmExif").reload
.....
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Merci piaf de ta réponse. Je vais creuser du côté du traitement des événements avec python.
Pour ce qui est de l' exemple, il est la juste pour clarifier le but à atteindre et rien d' autre. J' avais effectivement envisagé de passer par une table provisoire afin de récupérer la dizaine de tags que je souhaite sauvegarder. Mon problème est toujours de la créer dans le module base. Il y a bien un exemple de création table dans les scripts python mais toujours pareil pas dans une base de données.
Creusons, creusons !
Bien cordialement
Merci piaf de ta réponse. Je vais creuser du côté du traitement des événements avec python.
Pour ce qui est de l' exemple, il est la juste pour clarifier le but à atteindre et rien d' autre. J' avais effectivement envisagé de passer par une table provisoire afin de récupérer la dizaine de tags que je souhaite sauvegarder. Mon problème est toujours de la créer dans le module base. Il y a bien un exemple de création table dans les scripts python mais toujours pareil pas dans une base de données.
Creusons, creusons !
Bien cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Base de données photos
Bonjour
Le but de la manœuvre est de l'alimenter, le plus simple pour cela reste le sql.
A+
Pas compris, la table n'est pas provisoire, comme tu as une relation de un à plusieurs, elle doit exister dans la base.Ernest a écrit :J' avais effectivement envisagé de passer par une table provisoire
Le but de la manœuvre est de l'alimenter, le plus simple pour cela reste le sql.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Par provisoire, j' entends une table dont le contenu serait effacé après sauvegarde des données dans la table définitive. Le terme de provisoire n' était effectivement pas adapté dans ce cas. Il s' agissait des données qui sont provisoires.
Cordialement
Par provisoire, j' entends une table dont le contenu serait effacé après sauvegarde des données dans la table définitive. Le terme de provisoire n' était effectivement pas adapté dans ce cas. Il s' agissait des données qui sont provisoires.
Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06
-
- IdOOle de la suite
- Messages : 25184
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Base de données photos
Je ne vois pas trop ce que ce fil fait en section Projets.
La question est : [Basic] Récupérer le résultat d'une fonction Python
Et elle aurait dû être postée en section Macros tout simplement.
Si tu as du mal à mixer les deux, sers-toi de l'extension EasyDev
La question est : [Basic] Récupérer le résultat d'une fonction Python
Et elle aurait dû être postée en section Macros tout simplement.
Si tu as du mal à mixer les deux, sers-toi de l'extension EasyDev
-
- Membre hOOnoraire
- Messages : 143
- Inscription : 26 févr. 2019 14:56
Re: Base de données photos
Bonsoir,
Cette macro, objet de ce fil est tout simplement la pièce maîtresse du projet. Sans elle, il n'y a plus de projet. N' est-il pas possible de faire les choses simplement à savoir, la macro en python récupère très facilement les tags nécessaires au but recherché, il me semble dommage de passer au Basic pour finaliser cette action. C' est la raison pour laquelle je n' ai pas voulu basculer sur le forum Basic.
Cordialement
Cette macro, objet de ce fil est tout simplement la pièce maîtresse du projet. Sans elle, il n'y a plus de projet. N' est-il pas possible de faire les choses simplement à savoir, la macro en python récupère très facilement les tags nécessaires au but recherché, il me semble dommage de passer au Basic pour finaliser cette action. C' est la raison pour laquelle je n' ai pas voulu basculer sur le forum Basic.
Cordialement
La modération vous a écrit: Ajout au 20/05/2020 :
Votre projet n'ayant pas/plus bougé d'un iota en une année, le fil a été réintégré dans la bonne section.
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Libre Office 7.06