IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [AppleScript] Database Events ne fonctionne plus [Résolu]
Options
benja
posté 11 Dec 2014, 14:41
Message #1


Thalès du pavé
*****

Groupe : Membres
Messages : 2 520
Inscrit : 30 Jul 2004
Membre no 21 573



Bonjour à tous

Voilà, je me suis remis à l'AppleScript récemment et voilà que j'essaie d'utiliser "Database Events". Je reprend le code d'anciens scripts qui fonctionnaient très bien je pense à l'époque sous Snow Leopard.
J'essaie et POF ! Erreur. J'ai cherché un peu partout sur le net quelqu'un qui aurait des problèmes similaires aux miens sans succès. J'ai aussi consulté les changelogs d'AppleScript depuis 10.6 mais rien ne concerne "Database Events".

Je n'arrive tout simplement plus à créer la moindre entrée dans une base de données. En utilisant le script suivant :

Code
tell application "Database Events"
    make new database with properties {name:"MyDatabase"}
    tell database "MyDatabase"
        make new record with properties {name:"MyRecord"}
    end tell
end tell

J'obtiens l'erreur suivante :

Code
error "Erreur dans Database Events : Le gestionnaire AppleEvent a échoué." number -10000

Le "make new record" échoue systématiquement. La database est pourtant bien créée avec le bon nom car j'arrive à en extraire le nom et l'emplacement de sauvegarde.

Il me semble que mon code est juste, difficile de faire plus simple. Je soupçonne un bug mais avant de crier au bug j'aimerais savoir si certains d'entre vous rencontrent le même problème. Je suis sous OS X.10 (la X.10.1 ne m'a jamais été proposée par l'AppStore).

EDIT : Après avoir installé la MàJ X.10.1 qui est enfin apparue, le problème persiste.

Merci

Ce message a été modifié par benja - 16 Dec 2014, 12:47.


--------------------
Ryzen 3600 / GTX1080Ti / 32GB / Win 10 (Le nouveau mac pro quoi)
Go to the top of the page
 
+Quote Post
PBell
posté 12 Dec 2014, 07:37
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 264
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Je n'ai pas la 10.1, mais il se peut que, par défaut, le database event ne soit pas lancé dans cette version (comme c'était le cas au début de Tiger).
Essaye d'ajouter la commande "launch" sur une ligne juste après ton tell "Database Events"…

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post
Jaypee
posté 12 Dec 2014, 09:45
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Il faut légèrement changer le script :

make new database with properties {name:"MyDatabase"}

=>

set myLocation to choose folder with prompt "Choisir un dossier pour vos données :"
make new database with properties {name:"MyDatabase", location: myLocation}

ou directement

make new database with properties {name:"MyDatabase", location: "~/Documents/Données/"}

Avec ça, le script répond par un numéro d'enregistrement dans la fenêtre de résultat
J-P
Go to the top of the page
 
+Quote Post
benja
posté 12 Dec 2014, 11:29
Message #4


Thalès du pavé
*****

Groupe : Membres
Messages : 2 520
Inscrit : 30 Jul 2004
Membre no 21 573



Bonjour et merci pour vos réponses.

Citation
Bonjour,
Je n'ai pas la 10.1, mais il se peut que, par défaut, le database event ne soit pas lancé dans cette version (comme c'était le cas au début de Tiger).
Essaye d'ajouter la commande "launch" sur une ligne juste après ton tell "Database Events"…

Cordialement

Pas de soucis de ce côté là, Database Events se lance bien.

Citation
Il faut légèrement changer le script :

make new database with properties {name:"MyDatabase"}

=>

set myLocation to choose folder with prompt "Choisir un dossier pour vos données :"
make new database with properties {name:"MyDatabase", location: myLocation}

ou directement

make new database with properties {name:"MyDatabase", location: "~/Documents/Données/"}

Avec ça, le script répond par un numéro d'enregistrement dans la fenêtre de résultat
J-P

J'avais lu ça quelque part ailleurs mais cela ne change rien, j'obtiens la même erreur. Lorsque je crée une base, celle-ci est bien créée avec l'emplacement de sauvegarde par défaut que je peux récupérer avec :
Code
tell database "MyDatabase" to return location

Je ne peux simplement pas y créer de "record". Le pouvez-vous ?

Ce message a été modifié par benja - 12 Dec 2014, 11:32.


--------------------
Ryzen 3600 / GTX1080Ti / 32GB / Win 10 (Le nouveau mac pro quoi)
Go to the top of the page
 
+Quote Post
yponomeute
posté 12 Dec 2014, 12:41
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 969
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Salut,

J'ai le même comportement sur Mavericks. C'est l'enregistrement de la base de données sur le disque qui ne fonctionne pas. Tu peux le constater avec l'instruction save database "MyDatabse". La création d'un "record" nécessite au préalable l'enregistrement de la base de données sur le disque.
Je n'ai par contre aucune solution à apporter.


--------------------
MBP 2017 15" avec clavier pourri et touchbar inutile
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 12 Dec 2014, 16:14
Message #6





Guests






Bonjour,

Citation (yponomeute @ 12 Dec 2014, 06:41) *
J'ai le même comportement sur Mavericks. C'est l'enregistrement de la base de données sur le disque qui ne fonctionne pas. Tu peux le constater avec l'instruction save database "MyDatabse". La création d'un "record" nécessite au préalable l'enregistrement de la base de données sur le disque.
Je n'ai par contre aucune solution à apporter.

Le script du message #1 fonctionne sans erreur sur mon système (Mavericks).

Mais la commande save ou close saving yes me donne une erreur quand le dossier par défaut n'est pas créer dans le dossier "Documents".

Essaie ce script , la database s'enregistre sans erreur :
Code
quit application "Database Events"
set d to path to documents folder
my checkfolder(d, "Bases de données") -- sur un système dont le langage est en français

tell application "Database Events"
    launch
    set db to make new database with properties {name:"MyDatabase2"}
    tell db
        make new record with properties {name:"MyRecord2"}
        close saving yes
    end tell
    quit
end tell

on checkfolder(f, n)
    try
        ((f as text) & n) as alias
    on error
        tell application "Finder" to make new folder at f with properties {name:n}
    end try
end checkfolder


Ce message a été modifié par JacqR - 12 Dec 2014, 16:17.
Go to the top of the page
 
+Quote Post
benja
posté 16 Dec 2014, 12:47
Message #7


Thalès du pavé
*****

Groupe : Membres
Messages : 2 520
Inscrit : 30 Jul 2004
Membre no 21 573



Merci, je viens de comprendre.

Database Events échoue à modifier la base de données si l'emplacement de sauvegarde (le dossier parent, dans mon cas ~/Documents/Bases de données) n'existe pas. En fait j'ai l'impression lorsque la base de données est modifiée, les changements sont inscrits directement sur le disque même sans utiliser la commande "save".

Sous Snow Leopard, j'avais l'habitude de créer et modifier la base de données en mémoire puis la sauvegarder, moment où j'activais une routine pour vérifier l'emplacement de sauvegarde. Maintenant il faut vérifier l'emplacement directement avant la création. Il me reste à vérifier si la commande "save" à toujours une utilité.

Merci à tous, je vais pouvoir me remettre au travail !

EDIT : J'ai supprimé toutes les commandes "save" de mes scripts et tout semble fonctionner.

Ce message a été modifié par benja - 19 Dec 2014, 00:22.


--------------------
Ryzen 3600 / GTX1080Ti / 32GB / Win 10 (Le nouveau mac pro quoi)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th April 2024 - 09:04