Saltar al contenido principal

Scripts - Comandos de base de datos

Utilizando los comandos de base de datos de MedCalc puede conectarse a diferentes bases de datos SQL.

SQL significa Structured Query Language (Lenguaje de Consulta Estructurado). Se utiliza para bases de datos relacionales. Una base de datos SQL es una colección de tablas que almacena un conjunto específico de datos estructurados.
  • SQL Server (Microsoft)

    SQL Server es un sistema de gestión de bases de datos relacionales (RDBMS) propietario desarrollado por Microsoft.

    learn.microsoft.com

  • MySQL (Oracle)

    MySQL es un sistema de gestión de bases de datos relacionales de código abierto. Se utiliza principalmente en servidores web.

    www.mysql.com

  • SQLite (Consorcio SQLite)

    SQLite no utiliza una arquitectura cliente-servidor, sino que almacena las tablas en un archivo local en la PC.

    www.sqlite.org

Conectarse a las bases de datos

Existen diferentes funciones para conectarse a las tres bases de datos. Estas funciones devuelven un identificador (un número que identifica la conexión) que se utiliza en las funciones y consultas posteriores de la base de datos.

  • SQL Server

    manejar= OpenSql(cadena de conexión);.

    Ejemplo:

    handle= OpenSql('Driver={SQL Server};Server=.\SQLEXPRESS;Database=laboratory;Trusted_Connection=True;');

    Para conocer la cadena de conexión de su base de datos, probablemente tendrá que consultar al departamento de TI de su institución.

  • MySQL

    manejar= OpenMySql(servidor,usuario,contraseña,base de datos);.

    Ejemplo:

    handle=OpenMySql('servername:3306', 'UserID', 'MyPassword', 'laboratory');

    Para conocer las diferentes configuraciones de su base de datos, probablemente también tendrá que consultar al departamento de TI de su institución.

  • SQLite

    manejar= CreateSQLite(nombre de archivo); crea una base de datos local con el nombre de archivo indicado.

    manejar= OpenSQLite(nombre de archivo); abre una base de datos local existente con el nombre de archivo indicado.

Ejecutar una consulta de base de datos

La función tabla= SQLQuery(handle,query); ejecuta la consulta en la base de datos identificada con su manejador, y almacena su posible salida en una tabla.

La consulta puede contener marcadores de posición (signos de interrogación) que serán reemplazados por argumentos posteriores de la función SQLQuery.

En el siguiente ejemplo, MedCalc reemplazará los 3 signos de interrogación con los valores 2, 'Jones' y 'Margeret', cuando se ejecute la consulta.

SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (?,?,?);',2, 'Jones', 'Margaret');

Esto permite utilizar variables fácilmente en el función SQLQuery.

Además, MedCalc 'escapará' los apóstrofes en los argumentos, por lo que la consulta se puede ejecutar correctamente, como se ilustra en el siguiente ejemplo.

id=2;
name= "O'Neill";
firstname= "Margaret";
SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (?,?,?);',id,name,firstname);

La misma función SQLQuery se utiliza para las tres bases de datos diferentes.

Importar una tabla de base de datos a la hoja de cálculo de MedCalc

La función tabla= SQLImport(handle,query); ejecuta la consulta en la base de datos identificada con su identificador e importa su posible salida a la hoja de cálculo de MedCalc. Su uso es similar al de SQLQuery.

Ejemplos

SQLImport(handle, 'SELECT * FROM Patients;');
SQLImport(handle, 'SELECT * FROM Patients WHERE Age>?;',20);

El primer ejemplo importará la tabla completa de Pacientes. El segundo ejemplo solo importará los casos mayores de 20 años.

Cerrar la conexión a la base de datos

Se utiliza un único comando común para cerrar la conexión a una base de datos: SQLClose(manejar);.

Mensajes de error

La función str= SQLError(); devuelve detalles sobre el último comando de base de datos.

Ejemplos

SQL Server

handle=OpenSql('Driver={SQL Server};Server=.\SQLEXPRESS;Database=laboratory;Trusted_Connection=True;');
t=SQLQuery(handle, 'SELECT COLUMN_NAME FROM information_schema.columns WHERE table_name = 'Persons'');
?t;
t=SQLQuery(handle, 'SELECT * FROM Patients;');
?t;
SQLClose(handle);

SQLite

handle=CreateSQLite('E:\laboratory.db');
t=SQLQuery(handle, 'CREATE TABLE Patients (PersonID int,LastName varchar(255),FirstName varchar(255));');
?SQLError();
SQLQuery(handle, 'INSERT INTO Patients VALUES (1,'Smith','John');');
SQLQuery(handle, 'INSERT INTO Patients (PersonID,LastName,FirstName) VALUES (2,'Jones','Margaret');');
t=SQLQuery(handle, 'SELECT * FROM Patients;');
?t;
SQLClose(handle);

resultados en:

PersonIDLastNameFirstName
1SmithJohn
2JonesMargaret

Véase también