Base de données photos

Discussions sur les projets et applications développés en liaison avec une suite bureautique libre.

Modérateur: Vilains modOOs

Base de données photos

Messagepar Ernest » 23 Mars 2019 07:46

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Hubert Lambert » 26 Mars 2019 21:25

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é 60 fois
AOOo 4.1.2 sur Win7
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
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1137
Inscrit le : 06 Avr 2016 08:26

Re: Base de données photos

Messagepar psilocybe » 26 Mars 2019 23:03

Salut,

Par expérience , il est plus aisé d'utiliser une base de donnée rapportée (par exemple: Hsqldb 2.4.1 qui supporte toutes les dernières technologie SQL: Trigger, Array, etc..) que d'utiliser la Base de données intégrée à LibreOffice ( Hsqldb 1.8 ) qui est franchement obsolète et plein de dysfonctionnements.
Cette intégration peut se faire de façon transparente, et à mon sens, n'apporte que des avantages.
Par contre je te conseil vivement l'utilisation de Python plutôt que Basic, qui t'offre:
- la possibilité de produire des extensions Open/LibreOffice.
- la création de services Uno permettant une totale intégration au sein de Libre/OpenOffice.
- l’accès à toutes les bibliothèques (module) disponibles sous Python.
- et encore plein d'avantages.
Dernière édition par psilocybe le 29 Mars 2019 08:57, édité 1 fois.
LibreOffice 5.3.3.2 - Lubuntu 16.10 - LxQt 0.11.0.3
psilocybe
Membre lOOyal
Membre lOOyal
 
Message(s) : 39
Inscrit le : 21 Mai 2012 20:40

Re: Base de données photos

Messagepar Piaf » 27 Mars 2019 18:02

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
Exif.gif
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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: Base de données photos

Messagepar Ernest » 28 Mars 2019 07:54

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Ernest » 31 Mars 2019 17:18

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Ernest » 11 Mai 2019 17:38

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Hubert Lambert » 11 Mai 2019 18:21

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.2 sur Win7
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
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1137
Inscrit le : 06 Avr 2016 08:26

Re: Base de données photos

Messagepar Ernest » 12 Mai 2019 18:00

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Ernest » 15 Mai 2019 20:07

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   AgrandirRéduire
#!/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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar joel275 » 17 Mai 2019 06:34

Bonjour,

en python, on déclare une variable en lui affectant une valeur et non par un mot clé.
Remplace:
Code : Tout sélectionner   AgrandirRéduire
global fchslc

par
Code : Tout sélectionner   AgrandirRéduire
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   AgrandirRéduire
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   AgrandirRéduire
fchslc = fntslc()


A plus.
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
PassiOOnné
PassiOOnné
 
Message(s) : 730
Inscrit le : 10 Jan 2009 09:05

Re: Base de données photos

Messagepar Ernest » 18 Mai 2019 14:04

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Ernest » 18 Mai 2019 15:49

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   AgrandirRéduire
#!/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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Hubert Lambert » 19 Mai 2019 00:23

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   AgrandirRéduire
def fntslc(event=None):
   ...

Cordialement.
AOOo 4.1.2 sur Win7
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
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1137
Inscrit le : 06 Avr 2016 08:26

Re: Base de données photos

Messagepar Ernest » 20 Mai 2019 06:32

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar joel275 » 20 Mai 2019 20:42

Bonjour,

ce qui m'a bien aidé:
https://wiki.openoffice.org/wiki/FR/Documentation/Python/Transfer_from_Basic_to_Python
https://forum.openoffice.org/fr/forum/viewtopic.php?f=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 édition par Oukcha le 23 Mai 2019 09:46, édité 1 fois.
Raison: url non commerciales activées
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
PassiOOnné
PassiOOnné
 
Message(s) : 730
Inscrit le : 10 Jan 2009 09:05

Re: Base de données photos

Messagepar Ernest » 22 Mai 2019 06:43

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar micmac » 22 Mai 2019 07:38

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.
Les formats ouverts assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6233
Inscrit le : 28 Août 2010 09:45

Re: Base de données photos

Messagepar OOotremer971 » 23 Mai 2019 03:08

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 édition par Oukcha le 23 Mai 2019 07:02, édité 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
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2127
Inscrit le : 16 Avr 2010 14:31

Re: Base de données photos

Messagepar Ernest » 25 Mai 2019 19:37

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   AgrandirRéduire
#!/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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Piaf » 26 Mai 2019 19:51

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é
a+b.gif
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é 768 fois
Code : Tout sélectionner   AgrandirRéduire
.....
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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: Base de données photos

Messagepar Ernest » 27 Mai 2019 17:39

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Piaf » 27 Mai 2019 17:51

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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: Base de données photos

Messagepar Ernest » 27 Mai 2019 19:01

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 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56

Re: Base de données photos

Messagepar Dude » 28 Mai 2019 16:31

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21049
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Base de données photos

Messagepar Ernest » 28 Mai 2019 18:55

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
Xubuntu 18.04 en dual boot avec Win10
Libre Office 6.2.8
Avatar de l’utilisateur
Ernest
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 26 Fév 2019 15:56


Retour vers Projets

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)