Recientemente he recibido algunas preguntas de los clientes sobre cómo realizar operaciones de base de datos utilizando JMP. Una pregunta es si puede usar JMP para conectarse a bases de datos. Con JMP Sí, puede conectarse a una base de datos compatible con ODBC utilizando JMP Scripting Language o la interfaz de diálogo Abrir base de datos. Si tiene instalado el controlador ODBC adecuado (y se ha definido el Nombre de la fuente de datos o el DSN), el comando Archivo -> Base de datos -> Abrir base de datos se conectará a la base de datos y abrirá la tabla especificada dentro de JMP. Este vide o muestra cómo configurar un DSN de ODBC usando un archivo de base de datos de Microsoft Access.
En el ejemplo de esta publicación, me conecté a una base de datos de Microsoft Access utilizando un nombre de origen de datos de máquina y seleccioné la tabla de base de datos tblVehicle. También podría haberme conectado a una base de datos ORACLE DBMS, MySQL o incluso a una base de datos de SQL Server.

Si prefiere no usar la opción del menú, también puede hacer lo mismo con JSL. En este script de ejemplo proporcionado para fines de demostración, me conecté a la base de datos de Microsoft Access y devolví todos los registros en la tabla titulada "tblVehicle" (ver arriba).
// Conectar a la base de datos y seleccionar tabla
Abrir base de datos (
"DSN = MS Access Database; DBQ = C: \ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"SELECT * FROM tblVehicle",
"tblvehículo"
) ;

Otra pregunta que recibí recientemente de los clientes es si puede usar JMP para insertar registros en una base de datos. Una vez más, la respuesta es sí, usted puede. Puede realizar algunos análisis con JMP y luego insertar una tabla de resultados de análisis o incluso un solo registro individual en la base de datos.
La secuencia de comandos de demostración para insertar un registro único en una tabla de base de datos se muestra a continuación.
// Conectar a la base de datos e insertar nuevo registro
Abrir base de datos ( "DSN = MS Access Database; DBQ = C: \ Users \ stkopr \ Documents \ MovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"Insertar en tblVehicle
(VehicleID, LicensePlateNum, Axle, Color)
VALORES ('TRK-199', 'JMP 429', 4, 'Azul'); " ) ;
Usando la misma JSL enviada anteriormente, puedo mostrar la tabla en JMP con el registro recién insertado seleccionado.

También puede ordenar los registros, agrupar los datos con una cláusula where, enviar una subconsulta anidada o eliminar un solo registro, todo desde la comodidad de JMP.
Una vez que haya completado todas las acciones de su base de datos, recuerde cerrar la conexión de la base de datos. Nuevamente, esto se puede hacer usando el botón Desconectar de la ventana de diálogo Abrir base de datos o usando JSL.
Puede encontrar más información sobre el uso de la interfaz ODBC de JMP en la documentación de Ayuda en "Importar datos de una base de datos".
Avíseme si ha utilizado esta función para insertar un registro. ¿O normalmente escribe la tabla completa en la base de datos?
Guillaume escribió:
Hola,
Y muchas gracias por estos consejos. La función Log Capture es la que estaba buscando.
Saludos cordiales,
Guillaume
Stan Koprowski escribió:
Hola guillaume
Gracias por sus comentarios, y me alegra que el ejemplo JSL haya podido ayudarlo a no tener que realizar ningún nuevo cálculo.
En respuesta a su pregunta, sí, puede capturar el mensaje de error devuelto desde una base de datos a una variable JSL como una cadena.
Una forma de hacerlo es con la función Log Capture. Para probar el código JSL, simulé dos tipos diferentes de errores:
Un error de error al no establecer una conexión a la base de datos de Access antes de seleccionar las columnas de la tabla especificada.
Un error de error al no tener instalado un controlador ODBC adecuado.
He incluido un ejemplo de cómo podría lograr lo que quiere hacer en el siguiente código JSL y los mensajes de error resultantes:
Nombres predeterminados hasta aquí (1);
AccessError01 = "Error de acceso:" || Captura de registro (Abrir base de datos (
"DSN = MS Access Database; DBQ = C: UsersstkoprDocumentsMovinOn.accdb; DriverId = 25; FIL = MS Access; MaxBufferSize = 2048; PageTimeout = 5; UID = admin;",
"SELECT * FROM tblVehicle",
"tblvehículo"
));
Lo siguiente se escribe en el registro y la cadena de error se almacena en la variable AccessError01 para la prueba de escenario 1.
"Error de acceso:
[Microsoft] [ODBC Microsoft Access Driver] No se pudo encontrar el archivo '(desconocido)'.
"
Lo siguiente se escribe en el registro y la cadena se almacena en la variable AccessError01 para la prueba de escenario 2:
"Error de acceso:
[iODBC] [Administrador de controladores] No se encontró el nombre de la fuente de datos y no se especificó un controlador predeterminado. No se pudo cargar el controlador
"
Gracias de nuevo por tus comentarios.
Stan
Guillaume escribió:
Hola stan
Utilizo esta declaración INSERT como se describe en su publicación para algunas aplicaciones jsl con el fin de guardar indicadores estadísticos por período de tiempo.
Así puedo solicitar estos indicadores más tarde (esto evita los recálculos).
Pero tengo una pregunta. ¿Sabe si JMP puede detectar el error de la base de datos y almacenar el error de la base de datos en una variable jsl? Si es así, ¿cómo puedo hacer?
Describo más detalladamente el problema aquí: https://communities.sas.com/message/167531#167531
Gracias
Guillaume