[AppleScript] Database Events ne fonctionne plus [Résolu] |
Bienvenue invité ( Connexion | Inscription )
[AppleScript] Database Events ne fonctionne plus [Résolu] |
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)
|
|
|
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 |
|
|
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 |
|
|
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)
|
|
|
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
|
|
|
Guest_JacqR_* |
12 Dec 2014, 16:14
Message
#6
|
Guests |
Bonjour,
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. |
|
|
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)
|
|
|
Nous sommes le : 19th April 2024 - 09:04 |