Recentemente ho ricevuto alcune domande da parte dei clienti su come eseguire operazioni di database utilizzando JMP. Una domanda è se è possibile utilizzare JMP per connettersi ai database. Con JMP Sì, è possibile connettersi a un database compatibile con ODBC utilizzando JMP Scripting Language o l'interfaccia di dialogo Apri database. Se è installato il driver ODBC appropriato (e il nome origine dati o DSN è stato definito), quindi il comando File -> Database -> Apri database si connetterà al database e aprirà la tabella specificata in JMP. Questo vide o mostra come configurare un DSN ODBC usando un file di database di Microsoft Access.
Nell'esempio di questo post, mi sono collegato a un database Microsoft Access utilizzando un nome di origine dati macchina e selezionato la tabella di database tblVehicle. Potrei anche essere collegato a un DBMS ORACLE, a un database MySQL o persino a un database SQL Server.

Se preferisci non usare l'opzione di menu, puoi anche fare lo stesso usando JSL. In questo script di esempio fornito a scopo dimostrativo, mi sono connesso al database di Microsoft Access e ho restituito tutti i record nella tabella denominata "tblVehicle" (vedere sopra).
// Connetti al database e seleziona la tabella
Apri database (
"DSN = MS Access Database; DBQ = C: \ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"SELEZIONA * DA tblVehicle",
"TblVehicle"
) ;

Un'altra domanda che ho ricevuto di recente dai clienti è se è possibile utilizzare JMP per inserire record in un database. Di nuovo, la risposta è sì, puoi. È possibile eseguire alcune analisi con JMP e quindi inserire una tabella dei risultati dell'analisi o persino un singolo record nel database.
Di seguito è mostrato lo script dimostrativo per l'inserimento di un singolo record in una tabella di database.
// Connetti al database e inserisci un nuovo record
Apri database ( "DSN = MS Access Database; DBQ = C: \ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"INSERISCI IN TBLVeicolo
(VehicleID, LicensePlateNum, Axle, Color)
VALORI ('TRK-199', 'JMP 429', 4, 'Blue'); " ) ;
Usando lo stesso JSL presentato in precedenza, posso visualizzare la tabella in JMP con il record appena inserito selezionato.

È anche possibile ordinare i record, suddividere i dati con una clausola where, inviare una sottoquery nidificata o eliminare un singolo record, il tutto dalla comodità di JMP.
Dopo aver completato tutte le azioni del database, ricorda di chiudere la connessione al database. Di nuovo, questo può essere fatto usando il pulsante Disconnect dalla finestra di dialogo Open Database o usando JSL.
Ulteriori informazioni sull'utilizzo dell'interfaccia ODBC JMP sono disponibili nella documentazione della Guida in "Importa dati da un database".
Fammi sapere se hai utilizzato questa funzione per inserire un record. O tipicamente scrivi l'intera tabella sul database?
Guillaume ha scritto:
Ciao,
E molte grazie per questi suggerimenti. La funzione Log Capture è quella che stavo cercando.
Per quanto riguarda,
Guillaume
Stan Koprowski ha scritto:
Ciao Guillaume,
Grazie per i vostri commenti, e sono felice che l'esempio JSL sia stato in grado di aiutarvi dal dover eseguire qualsiasi ricalcolo.
In risposta alla tua domanda, sì, puoi catturare il messaggio di errore restituito da un database a una variabile JSL come stringa.
Un modo per farlo è con la funzione Log Capture. Per testare il codice JSL, ho simulato due diversi tipi di errori:
Un errore di errore non stabilendo una connessione al database di Access prima di selezionare le colonne dalla tabella specificata.
Un errore di errore non avendo installato un driver ODBC appropriato.
Ho incluso un esempio di come è possibile ottenere ciò che si desidera fare nel seguente codice JSL e nei messaggi di errore risultanti:
Nomi predefiniti qui (1);
AccessError01 = "Errore di accesso:" || Log Capture (Apri Database (
"DSN = MS Access Database; DBQ = C: UsersstkoprDocumentsMovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"SELEZIONA * DA tblVehicle",
"TblVehicle"
));
Quanto segue viene scritto nel log e la stringa di errore è memorizzata nella variabile AccessError01 per lo scenario test 1.
"Errore di accesso:
[Microsoft] [Driver ODBC Microsoft Access] Impossibile trovare il file '(sconosciuto)'.
"
Quanto segue viene scritto nel log e la stringa viene archiviata nella variabile AccessError01 per lo scenario test 2:
"Errore di accesso:
[iODBC] [Driver Manager] Nome origine dati non trovato e nessun driver predefinito specificato. Il driver non può essere caricato
"
Grazie ancora per i tuoi commenti.
Stan
Guillaume ha scritto:
Ciao Stan,
Uso questa istruzione INSERT come descritto nel tuo post per alcune applicazioni jsl al fine di salvare gli indicatori statistici per periodo.
In questo modo sono in grado di richiedere questi indicatori in un secondo momento (questo evita i ricalcoli).
Ma ho una domanda. Sai se JMP è in grado di rilevare l'errore del database e memorizzare l'errore del database in una variabile jsl? Se sì, come posso fare?
Descrivo più in dettaglio il problema qui: https://communities.sas.com/message/167531#167531
Grazie
Guillaume