jueves, 11 de abril de 2013

Imprimir desde LPT1 a USB

Se deberá agregar la impresora USB. Después ejecutar el comando siguiente como Administrador:


NET USE LPT1: \\PC\Impresora /persistent:yes


Donde PC es la maquina donde agregamos la Impresora e Impresora es el nombre de la impresora agregada, el parámetro /persistent:yes sirve para que quede registrador el recurso . Para probarlo podemos ejecutar un dir y redirigirlo al puerto LPT1:


dir > PRN

Para eliminar el recurso podemos ejecutar el siguiente comando:

NET USE LPT1 /delete

miércoles, 16 de mayo de 2012

Habilitar o Deshabilitar Triggers en SQL Server

Con este script se pueden habilitar o deshabilitar todos los triggers de la Base de Datos que se encuentre seleccionada.

    DECLARE @cTgName    VARCHAR(50)
    DECLARE @cTableName    VARCHAR(50)

    SET NOCOUNT ON;
   
    DECLARE Cur_TG CURSOR LOCAL FORWARD_ONLY FOR
        SELECT (SCH.NAME + '.' + STG.NAME) AS TG_NAME, (SCH.NAME + '.' + SAO.NAME) AS TABLE_NAME 
        FROM SYS.TRIGGERS STG,
        SYS.ALL_OBJECTS AS SAO,
        SYS.SCHEMAS AS SCH
        WHERE STG.PARENT_ID = SAO.OBJECT_ID
        AND SAO.SCHEMA_ID = SCH.SCHEMA_ID
           
    OPEN Cur_TG
    FETCH Cur_TG INTO @cTgName, @cTableName
   
    WHILE (@@FETCH_STATUS = 0)
    BEGIN

        BEGIN TRY
            -- Para Habilitar
            EXEC ('ENABLE TRIGGER ' + @cTgName + ' ON ' + @cTableName)
            -- Para Deshabilitar
            EXEC ('DISABLE TRIGGER ' + @cTgName + ' ON ' + @cTableName)
        END TRY
        BEGIN CATCH
            PRINT ERROR_MESSAGE()
        END CATCH

        FETCH Cur_TG INTO @cTgName, @cTableName

    END -- Fin del bucle WHILE
   
    CLOSE Cur_TG
    DEALLOCATE Cur_TG

Habilitar o Deshabilitar Llaves Foráneas en SQL Server

Con este script se habilitan o deshabilitan todos los foreing keys de la Base de Datos que se tenga seleccionada.


    DECLARE @cFKName    VARCHAR(50)
    DECLARE @cTableName    VARCHAR(50)

    SET NOCOUNT ON;

    DECLARE Cur_FK CURSOR LOCAL FORWARD_ONLY FOR        
        SELECT SFK.NAME AS FK_NAME, (SCH.NAME + '.' + SAO1.NAME) AS TABLE_NAME
        FROM SYS.FOREIGN_KEYS AS SFK,
        SYS.SCHEMAS AS SCH,
        SYS.ALL_OBJECTS AS SAO1
        WHERE SFK.SCHEMA_ID = SCH.SCHEMA_ID
        AND SFK.PARENT_OBJECT_ID = SAO1.OBJECT_ID

    OPEN Cur_FK
    FETCH Cur_FK INTO @cFKName, @cTableName
   
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
       
        BEGIN TRY

            -- Para Habilitar
            EXEC ('ALTER TABLE ' + @cTableName + ' CHECK CONSTRAINT ' +  @cFKName)
            -- Para Deshabilitar
            EXEC ('ALTER TABLE ' + @cTableName + ' NOCHECK CONSTRAINT ' +  @cFKName)
        END TRY
        BEGIN CATCH
            PRINT ERROR_MESSAGE()
        END CATCH

        FETCH Cur_FK INTO @cFKName, @cTableName

    END -- Fin del bucle WHILE
   
    CLOSE Cur_FK
    DEALLOCATE Cur_FK

lunes, 9 de abril de 2012

Generar Archivos CSV con Progress

Para  generar archivos CSV con Progress, se utiliza la instruccion EXPORT. Enseguida un ejemplo:

OUTPUT TO C:\REPORTES\PREDIO.CSV.

FOR EACH PREDIO NO-LOCK WHERE NUM-RUTA > 0 AND  NUM-RUTA < 999:
  EXPORT DELIMITER "," NUM-CUENTA DIRECC-ORIGINAL GIRO-USUARIO TIPO-USUARIO.
END.

OUTPUT CLOSE.


lunes, 2 de abril de 2012

Conectando Progress con ODBC

Para conectarnos a Progress mediante ODBC tenemos que instalar el driver primeramente, éste viene incluido en la suite de Progress DB y tambien tenemos que tener el servicio de BD escuchando en algun puerto conocido.

Despues ejecutaremos en Administrador de Conexiones ODBC, con el comando odbcad32 y configuraremos nuestra conexión de la siguiente manera:


Es importante usar el usuario sysprogress que originalmente no tiene password. Ahora para conectarnos a la BD lo podemos hacer desde cualquier cliente odbc; yo particularmente uso uno que se llama SQLDBX (http://www.sqldbx.com/).

Ahora ya teniendo la conexión podemos ver los usuarios de la BD con el siguiente query:

select "_userid", "_password", "_user-name" from pub."_user"

Para ver las tablas que contiene la BD podemos ejecutar el siguiente query:

SELECT * FROM sysprogress.SYSTABLES WHERE TBLTYPE = 'T'

Para ver el contenido de alguna tabla podemos ejecutar un query de la siguiente manera:

SELECT * FROM PUB.BENEFITS

Es importante siempre utilizar el esquema PUB, ya que de no hacerlo los queries no funcionarán.

Para crear un usuario nuevo podemos ejecutar la siguiente secuencia de queries:

create user 'sa','password';
grant dba to 'sa';


Una vez que creamos el usuario, automáticamente el usuario sysprogress ya no funciona para la conexión ODBC.


Arrancar y Detener Servicio de BD de Progress

Para arrancar el servicio de Progress DB ejecutaremos el siguiente comando, de preferencia debemos hacerlo con permisos de Administrador.

SET WRKDIR=C:\Progress\WRK
cd C:\Progress\dlc91c\bin
proserve.bat C:/DATA/sports2000/sports2000.db -S 2525 -N TCP -L 300000

Donde 2525 es el puerto en que escuchar el servidor de BD.

Para detener el servicio podemos ejecutar el siguiente comando.

cd C:\Progress\dlc91c\bin
proshut.bat C:/DATA/sports2000/sports2000.db

miércoles, 28 de marzo de 2012

¿Cómo saber si existe una tabla en la BD?

¿Cómo saber si existe una tabla en nuestra BD? Podemos crear y usar la sig función.

Para mandar llamar la funcion

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[existeTabla]
(
    @cTableName VARCHAR(255)
)
RETURNS BIT
AS
BEGIN
    DECLARE @nReturn BIT
    SET @nReturn = 0

    IF (SELECT COUNT(*) FROM SYS.OBJECTS
        WHERE TYPE = 'U' AND UPPER(NAME) = UPPER(@cTableName)) > 0 BEGIN
        SET @nReturn = 1
    END
   
    RETURN @nReturn
END

Para mandar llamar la funcion podemos usar el siguiente query:
SELECT [dbo].[existeTabla] ('TABLA_A_BUSCAR')

Si el resultado es 1 la tabla existe, en caso contrario no existe.