SQL – Precio mínimo de los comparativos

Función SQL para obtener el precio mínimo de las ofertas de proveedores de los comparativos: CREATE FUNCTION F_COMPA_PRECIO_MIN(@EMPRESA VARCHAR(12),@OBRA VARCHAR(12),@COD_INTERNO VARCHAR(8)) RETURNS DECIMAL(18,4) AS BEGIN    DECLARE @PRECIO_MIN DECIMAL(18,4);    SET @PRECIO_MIN=(SELECT MIN(CP.PRECIO) PRECIO_MIN FROM T_COMPA_LIN L JOIN T_COMPA_PRE CP ON CP.EMPRESA=L.EMPRESA AND CP.OBRA=L.OBRA AND CP.COMPA=L.COMPA ANDCP.LINEA=L.LINEA WHERE L.EMPRESA=@EMPRESA AND L.OBRA=@OBRA AND  L.COD_INTERNO=@COD_INTERNO AND CP.PRECIO>0 );    RETURN @PRECIO_MIN END 

Tree – Crear campos adicionales en líneas de partes

En esta entrada os vamos a explicar como crear campos adicionales en las líneas de los partes de trabajo y que sean visibles y editables en la pantalla de introducción de partes. Creamos los campos usando el diccionario (preferiblemente para no tener que realizar la misma operación en cada empresa) o directamente en SQL Server Leer másTree – Crear campos adicionales en líneas de partes[…]

Tree – Configurar la gestión documental

En TREE podemos adjuntar documentos (normalmente archivos PDF aunque podemos adjuntar cualquier tipo de archivo) a cada entidad del programa (obras, precios, albaranes, facturas, personal, máquinas,…). Una pregunta habitual es cómo debemos configurar el programa para que los archivos que vinculemos sean visibles por todos los compañeros que usan Tree, y además poder disponer de Leer másTree – Configurar la gestión documental[…]

C# – Uso de HttpClient para devolver un DataTable

Si usamos una API-REST que nos devuelve un Datatable, es necesario deserializar el JSON obtenido. El siguiente ejemplo nos muestra como hacerlo: using System; using System.Data; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; // You’ll need to install the Newtonsoft.Json NuGet package class Program { static async Task Main() { // Create an instance of HttpClient Leer másC# – Uso de HttpClient para devolver un DataTable[…]

TREE-Trigger para firma de facturas escaladas por importe

En ocasiones los clientes quieren que la firma de las facturas dependan del importe. En el siguiente ejemplo aplicamos un sencillo trigger para que las facturas de más de 3000€ las tenga que firmar dirección (perfil DIR), las de más de 1500€ las tenga que firmar el jefe de grupo (perfil DJO), y el resto Leer másTREE-Trigger para firma de facturas escaladas por importe[…]

SQL – Dividir una línea de texto en dos, haciendo coincidir la división con un espacio entre palabras

A veces puede ser necesario que queramos hacer una sentencia SQL que nos devuelva una línea dividida en dos cuando el texto excede una determinada longitud (y que la segunda línea esté en blanco cuando el texto simplemente es más corto de dicha longitud). Por ejemplo, en un informe queremos imprimir el nombre de una Leer másSQL – Dividir una línea de texto en dos, haciendo coincidir la división con un espacio entre palabras[…]

SQL – Velocidad de TREE y de SQL Server en remoto

Tree permite conexiones remotas a través de VPN sin necesidad de usar servicios de escritorio remoto (que suponen un coste y requieren normalmente un servidor adicional o robarle recursos al principal). La velocidad remota por VPN depende de varios factores: La complejidad de las consultas SQL La velocidad del servidor SQL La velocidad de la Leer másSQL – Velocidad de TREE y de SQL Server en remoto[…]

SQL – Rehacer indices de todas las tablas

Hace poco me encontré una base de datos Sql Server con comportamientos extraños. Las sentencias SELECT no encontraban los registros recien insertados, aparecían claves primarias duplicadas,… cosas rarísimas que no había visto nunca. El problema surgió tras restaurar un servidor que fue reiniciado a mano por el cliente «…porque tardaba mucho y entonces lo desenchufé… Leer másSQL – Rehacer indices de todas las tablas[…]