J'ai récemment reçu quelques questions de clients sur la manière d'effectuer des opérations de base de données à l'aide de JMP. Une question est de savoir si vous pouvez utiliser JMP pour vous connecter à des bases de données. Avec JMP Oui, vous pouvez vous connecter à une base de données compatible ODBC à l'aide du langage de script JMP ou de l'interface de dialogue Ouvrir une base de données. Si le pilote ODBC approprié est installé (et que le nom de la source de données ou le DSN a été défini), utilisez la commande Fichier -> Base de données -> Ouvrir la base de données pour vous connecter à la base de données et ouvrir la table spécifiée dans JMP. Ce vide o montre comment configurer un DSN ODBC à l'aide d'un fichier de base de données Microsoft Access.
Dans l'exemple de ce message, je me suis connecté à une base de données Microsoft Access à l'aide d'un nom de source de données machine et j'ai sélectionné la table de base de données tblVehicle. J'aurais aussi pu me connecter à un SGBD ORACLE, à une base de données MySQL ou même à une base de données SQL Server.

Si vous préférez ne pas utiliser l'option de menu, vous pouvez également utiliser la même méthode avec JSL. Dans cet exemple de script fourni à des fins de démonstration, je me suis connecté à la base de données Microsoft Access et j'ai renvoyé tous les enregistrements de la table intitulée "tblVehicle" (voir ci-dessus).
// Se connecter à la base de données et sélectionner la table
Ouvrir la base de données (
"DSN = base de données MS Access; DBQ = C: \ Utilisateurs \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = Accès MS; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"SELECT * FROM tblVehicle",
"tblVehicle"
) ;

Une autre question que j'ai récemment posée aux clients est de savoir si vous pouvez utiliser JMP pour insérer des enregistrements dans une base de données. Encore une fois, la réponse est oui, vous le pouvez. Vous pouvez effectuer des analyses avec JMP, puis insérer un tableau de résultats d'analyse ou même un seul enregistrement dans la base de données.
Le script de démonstration permettant d'insérer un seul enregistrement dans une table de base de données est présenté ci-dessous.
// Se connecter à la base de données et insérer un nouvel enregistrement
Ouvrir la base de données ( "DSN = base de données MS Access; DBQ = C: \ Utilisateurs \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = Accès MS; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"INSERER DANS LE VEHICULE
(VehicleID, LicensePlateNum, Axle, Color)
VALUES ('TRK-199', 'JMP 429', 4, 'Blue'); " ) ;
En utilisant le même fichier JSL soumis précédemment, je peux afficher le tableau dans JMP avec le nouvel enregistrement inséré sélectionné.

Vous pouvez également ordonner les enregistrements, créer un sous-ensemble de données avec une clause where, soumettre une sous-requête imbriquée ou supprimer un seul enregistrement, le tout dans le confort de JMP.
Une fois que vous avez terminé toutes vos actions de base de données, n'oubliez pas de fermer la connexion à la base de données. Là encore, vous pouvez utiliser le bouton Déconnecter de la boîte de dialogue Ouvrir une base de données ou JSL.
Pour plus d’informations sur l’utilisation de l’interface JMP ODBC, consultez la documentation d’aide sous «Importer des données à partir d’une base de données».
Faites-moi savoir si vous avez utilisé cette fonctionnalité pour insérer un enregistrement. Ou écrivez-vous généralement la table entière dans la base de données?
Guillaume a écrit:
Salut,
Et merci beaucoup pour ces conseils. La fonction de capture de journal est celle que je cherchais.
Cordialement,
Guillaume
Stan Koprowski a écrit:
Salut Guillaume
Je vous remercie pour vos commentaires et je suis heureux que l'exemple JSL ait pu vous aider à ne pas avoir à effectuer de nouveau calcul.
En réponse à votre question, vous pouvez effectivement capturer le message d'erreur renvoyé d'une base de données à une variable JSL sous forme de chaîne.
Une façon de faire est d'utiliser la fonction de capture de journal. Pour tester le code JSL, j'ai simulé deux types d'erreur différents:
Une erreur a échoué en n’établissant pas de connexion à la base de données Access avant de sélectionner les colonnes de la table spécifiée.
Une erreur d'échec due à l'absence d'un pilote ODBC approprié installé.
J'ai inclus un exemple de la façon dont vous pourriez accomplir ce que vous voulez faire dans le code JSL suivant et les messages d'erreur résultants:
Noms par défaut ici (1);
AccessError01 = "Erreur d'accès:" || Log Capture (Open Database (
"DSN = base de données MS Access; DBQ = C: UtilisateursstkoprDocumentsMovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;"
"SELECT * FROM tblVehicle",
"tblVehicle"
));
Les éléments suivants sont écrits dans le journal et la chaîne d'erreur est stockée dans la variable AccessError01 pour le test de scénario 1.
"Erreur d'accès:
[Microsoft] [Pilote ODBC Microsoft Access] Impossible de trouver le fichier '(inconnu)'.
"
Les éléments suivants sont écrits dans le journal et la chaîne est stockée dans la variable AccessError01 pour le test de scénario 2:
"Erreur d'accès:
[iODBC] [gestionnaire de pilotes] Le nom de la source de données est introuvable et aucun pilote par défaut n'est spécifié. Le pilote n'a pas pu être chargé
"
Encore merci pour vos commentaires.
Stan
Guillaume a écrit:
Salut stan
J'utilise cette instruction INSERT comme décrit dans votre message pour certaines applications jsl afin de sauvegarder les indicateurs statistiques par période.
Ainsi, je peux demander ces indicateurs plus tard (ceci évite les recalculs).
Mais j'ai une question. Savez-vous si JMP est capable d’attraper une erreur de base de données et de la stocker dans une variable jsl? Si oui, comment puis-je faire?
Je décris plus en détail le problème ici: https://communities.sas.com/message/167531#167531
Merci
Guillaume