lunes 5 de febrero de 2007

Ejecutar un Store Procedure desde otro SP

Con este Store Procedure podras ejecutar un SP desde otro SP.
(SQL)

-- Ejecuta un Store Procedure
declare @Error varchar(255)
exec @error=sp_executesql N'Nombre Store'
print @error


Ejemplo de utilizacion:

exec @error=sp_executesql N'Actualiza_Borra_Basura_Clientes'
if @Error <> 0
begin
print 'Error en el SP Actualiza_Borra_Basura_Clientes'
set @Error='1'
GOTO Fin -- Salta al final del SP
end
--
----
------ Mas codigo
----
--
Fin:

viernes 2 de febrero de 2007

Ejecutar un DTS desde Store Procedure

Con este Store Procedure podras ejecutar un DTS.
(SQL)


/*
Este procedimiento permite ejecutar un DTS
*/
CREATE PROC Ejecuta_DTS
@NombreDTS varchar(255) = '', -- Es el nombre del DTS, ejemplo. my_dts

@Servidor varchar(255) = '(local)', -- Es el servidor, (local) por defecto
@PassServidor varchar(255) = Null, -- Es el password, si no ingresa nada sera null
@IntSecurity bit = 1, -- integrated security, 1=True, 0=False
@PassDTS varchar(255) = '' -- Es el Password del DTS, si lo tiene.
AS


IF @NombreDTS = ''
BEGIN
PRINT '*** Debe ingresar el nombre del DTS ***'
RETURN 1
END


SET NOCOUNT ON

/*
Estos son los codigos de error que se retornan.
- 0 El DTS a terminado con exito
- 1 Error
- 9 El DTS a fallado
*/

DECLARE @Error int, @oPaquete int, @Comando varchar(1000)

-- Creo una instancia del objeto
EXEC @Error = sp_OACreate 'DTS.Package', @oPaquete
OUTPUT
IF @Error <> 0 -- Si no es correcto
BEGIN
PRINT '*** Ha fallado la creacion del objeto ***'
RETURN 1
END


-- Inicializo la variable para cargar el paquete
SET @Comando = 'LoadFromSQLServer("' + @Servidor
+'", "", "", 256, "' + @PassDTS + '", , , "' + @NombreDTS
+ '")'


EXEC @Error = sp_OAMethod @oPaquete, @Comando, NULL
IF @Error <> 0 -- Si no es correcto
BEGIN
PRINT '*** La carga del DTS a fallado ***'
RETURN 1
END


-- Ejecuta el Paquete
EXEC @Error = sp_OAMethod @oPaquete, 'Execute'
IF @Error <> 0 --Si no es correcto
BEGIN
PRINT '*** La ejecucion del DTS a fallo *** '
RETURN 1
END


-- Terminar la inicializacion el Paquete
EXEC @Error = sp_OAMethod @oPaquete, 'UnInitialize'
IF @Error <> 0
BEGIN
PRINT '*** No se pudo detener el paquete ***'
RETURN 1
END


-- Destruir la instancia para el paquete
EXEC @Error = sp_OADestroy @oPaquete
IF @Error <> 0
BEGIN
PRINT '*** No se pudo destruir la instancia ***'
RETURN 1
END
GO


Ejemplo de su utilizacion:

En un SP ejecutar lo siguiente.

declare @Error varchar(255)
exec @Error=Ejecuta_DTS 'dany' -- 'dany' es el nombre del DTS
if @Error <> 0
begin
print 'error'
end
else
begin
print 'correcto'
end



Tambien puede utilizar GOTO para moverse de un sitio a otro dentro del SP.

Por ejemplo, supongamos que quiere ejecutar dos DTS, pero solo quiere ejecutar el segundo si el primero no tuvo error.



declare @Error varchar(255)
exec @Error=Ejecuta_DTS 'dany' -- 'dany' es el nombre del DTS
if @Error <> 0
begin
print 'Primera ejecucion Error'
print 'error'
GOTO Fin -- Salta al final del SP
end
else
begin
Print 'Primera ejecucion correcta'
GOTO Segunda_Ejecucion -- Salta hasta la etiqueta Segunda_Ejecución
end
-----
---
-- Aqui podri ir mas codigo o lo que fuera
---
-----

Segunda_Ejecucion: -- Es la etiqueta a la que saltara el GOTO
exec @Error=Ejecuta_DTS 'dany2' -- 'dany' es el nombre del DTS
if @Error <> 0
begin
print 'Segunda ejecucion Error'
print 'error'
end
else
begin
Print 'Segunda ejecución correcta'
print 'correcto'
end


Fin:

No permitir que la aplicacion se abra mas de una vez

Con este codigo evitara que la aplicacion se abra mas de una vez al ejecutar el programa.
(VB.NET)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase

.Load

If YaEstaAbierto() = True Then

Application.Exit()

End Sub

Public Function

YaEstaAbierto()

'' Esta funcion evita que el programa se pueda abrir dos veces.

'

' Para utilizarlo se debe colocar en el Page Load el siguiente codigo

'

' If PrevExistance() = True Then Application.Exit()

'

If UBound(System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0

Then

Return

True

Else

Return

False

End

If

End Function


Abrir un archivo con la aplicacion asociada

Esta es una forma rapida de abrir un archivo con su aplicacion asociada.
(VB.NET)

Por ejemplo, los TXT se abriran con el bloc de nota, los XLS con el EXCEL, etc...


'' Una forma de abrir un archivo con la aplicacion asociada a el
'Activa la aplicacion asociada al archivo para que sea visto...
Help.ShowHelp(Me, "c:\archivo.txt")