[Résolu][Basic] Récupérer une fonction en Python

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

[Résolu][Basic] Récupérer une fonction en Python

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: Base de données photos

Message par Hubert Lambert »

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.
Pièces jointes
exif.ods
(76.79 Kio) Téléchargé 203 fois
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)
psilocybe
Membre hOOnoraire
Membre hOOnoraire
Messages : 132
Inscription : 21 mai 2012 21:40

Re: Base de données photos

Message par psilocybe »

Supprimé
Dernière modification par psilocybe le 03 août 2020 11:44, modifié 2 fois.
LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python 3.10 - Java 11 OpenJDK amd64
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Base de données photos

Message par Piaf »

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
Cliquer pour l'animation
Cliquer pour l'animation
Hubert Lambert a écrit :La question importante sera : quelles données précisément et pour quels usages ?
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 solution :)
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+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: Base de données photos

Message par Hubert Lambert »

Ernest a écrit :J' arrive à utiliser PyExifTool pour Python, toutefois, je ne peux appeler ce module depuis APSO dans LO :|
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.
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)
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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é :fou:

Encore merci et bonne continuation.
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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:

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)
et maintenant l' erreur renvoyée:
<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)
Visiblement, le couple python-LO ne supporterait pas la variable globale. Est-ce bien la que ce situe le problème?

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
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 09:05

Re: Base de données photos

Message par joel275 »

Bonjour,

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
par

Code : Tout sélectionner

fchslc = ""
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é):

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]
appelé dans le corps du programme par:

Code : Tout sélectionner

fchslc = fntslc()
A plus.
A jour de LibreOffice et de Ubuntu
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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:
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))
Visiblement, quelque chose ne va pas dans la fonction mais quoi?
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')
Par avance, merci de votre soutien!

Cordialement
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: Base de données photos

Message par Hubert Lambert »

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 :

Code : Tout sélectionner

def fntslc(event=None):
   ... 
Cordialement.
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)
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 09:05

Re: Base de données photos

Message par joel275 »

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.
Dernière modification par Oukcha le 23 mai 2019 10:46, modifié 1 fois.
Raison : url non commerciales activées
A jour de LibreOffice et de Ubuntu
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9224
Inscription : 28 août 2010 10:45

Re: Base de données photos

Message par micmac »

Ernest a écrit :les deux suivants semblent morts
Remplacez h**p par http. Les liens externes sont neutralisés ainsi.
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
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: Base de données photos

Message par OOotremer971 »

Bonjour
micmac a écrit :Seul le dernier aboutit à 404 Not Found.
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".
8)
A+
Dernière modification par Oukcha le 23 mai 2019 08:02, modifié 1 fois.
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
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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:

Code : Tout sélectionner

#!/usr/bin/env python3

from uno import *

a = 5
b = 10
x = a+b
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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Base de données photos

Message par Piaf »

Bonjour
Je ne pratique pas Python donc de ce côté là :oops:
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 :)
Ernest a écrit :Sauf erreur, il semble qu' il faut se connecter à cette base
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.
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é
cliquer pour l'animation
cliquer pour l'animation
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
ReBase.png
ReBase.png (9.04 Kio) Consulté 4530 fois

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
.....
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Base de données photos

Message par Piaf »

Bonjour
Ernest a écrit :J' avais effectivement envisagé de passer par une table provisoire
Pas compris, la table n'est pas provisoire, comme tu as une relation de un à plusieurs, elle doit exister dans la base.
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
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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
Xubuntu 20.04 en dual boot avec Win10
Libre Office 7.06
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Base de données photos

Message par Dude »

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
Avatar de l’utilisateur
Ernest
Membre hOOnoraire
Membre hOOnoraire
Messages : 143
Inscription : 26 févr. 2019 15:56

Re: Base de données photos

Message par Ernest »

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


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
Verrouillé