Resources Up

#INCLUDE DEFINES.H

PARAMETER cScrptName, cAppName, cDbName, cInstallPath
if type('application') = 'O'
		application.visible = .f.
endif
STORE .F. TO llError, lRelease
ON ERROR llError = .T.
lnParams = PARAMETERS()
IF lnParams < 3
	WAIT WINDOW "Usage: TriggGen <Script Name>, <App Name>, <Database Name>" TIME 0.5
	ON ERROR
	if type('application') = 'O'
			application.visible = .t.
	endif
	RETURN
ENDIF
IF TYPE('oSQLSrvr') <> 'O'
	osqlsrvr = createobject('sqlole.sqlserver')
	IF TYPE('oSQLSrvr') <> 'O'
		WAIT WINDOW "Unable to create SQL Server OLE object." TIME 2.0
		RELEASE osqlSrvr
		ON ERROR
		if type('application') = 'O'
				application.visible = .t.
		endif
		RETURN
	ENDIF
	WAIT WINDOW NOWAIT "Connecting to SQL Server..."
	ret =osqlsrvr.connect(_SQL_SERVER, _SQL_LOGIN, _SQL_PASSWORD)
	lRelease = .T.
ENDIF	
oDb = osqlsrvr.databases(cDbName)
IF TYPE('oDb') <> 'O'
	WAIT WINDOW "Unable to create SQL Server Database object." TIME 2.0
	RELEASE osqlSrvr, oDb
	ON ERROR
	if type('application') = 'O'
			application.visible = .t.
	endif
	RETURN
ENDIF
WAIT WINDOW NOWAIT "Obtaining Tables List..."
h = FCREATE(cScrptName)
STORE FCREATE(_LOG_PATH + "\" + cAppName + ' Triggers Error.log') TO eh
STORE FCREATE(_LOG_PATH + "\" + cAppName + ' Triggers Audit.log') TO ah
= FPUTS(h, "SET NOCOUNT ON")
= FPUTS(h, "GO")
= FPUTS(h, "/******************** Script Started: " + TTOC(DATETIME()) + "********************/")
USE (IIF(TYPE('cInstallPath') = 'C', cInstallPath, _SQL_PATH) + "\" + cAppName + "_Tables")
SCAN FOR UPPER(Type) = "TABLE"
	cTblName = "dbo." + ALLTRIM(EVALUATE(cAppName + "_Tables.Name"))
	WAIT WINDOW NOWAIT "Obtaining Triggers for " + cTblName + "..."
	jcTriggSQL  = "select o.name from sysobjects o, sysobjects i, " + ;
			"sysobjects u, sysobjects d " + ;
			"where o.deltrig = object_id('" + cTblName + ;
			"') and i.instrig =* o.id and " + ;
			"u.updtrig =* o.id and d.deltrig =* o.id"
	jaAllTriggs = oDb.ExecuteWithResults(jcTriggSQL)
	FOR jnTriggCnt = 1 TO jaAllTriggs.Rows
		cTriggName = "dbo." + ALLTRIM(jaAllTriggs.GetColumnString(jnTriggCnt , 1))
		WAIT WINDOW NOWAIT "Generating for " + cTriggName + " ON " + cTblName + "..."
		= FPUTS(h, 'PRINT "Creating ' + cTriggName + " ON " + cTblName + '..."')
		= FPUTS(h, 'GO')
		= FPUTS(h, '')
		= FPUTS(h, STRTRAN(oDb.Tables(cTblName).Triggers(cTriggName).Script(_FULLTR_SCRIPT), ;
					cDbName + 'Audit..', 'sssv20audit..'))
		= FFLUSH(h)
		IF llError
			llError = .F.
			= FPUTS(eH, cTriggName + ":" + MESS())
			= FFLUSH(eH)
		ELSE
			= FPUTS(ah, cTriggName)
			= FFLUSH(ah)
		ENDIF
	ENDFOR	
ENDSCAN
USE
= FPUTS(h, "/******************** Script Ended: " + TTOC(DATETIME()) + "********************/")
= FPUTS(h, 'PRINT "Creation of Triggers Completed."')
= FCLOSE(h)
= FCLOSE(ah)
IF FSEEK(eh, 0, 2) > 0
	= FCLOSE(eh)
	cLogFile = _LOG_PATH + "\" + cAppName + ' Tables Error.log'
	MODI FILE &cLogFile NOWAIT
ELSE
	= FCLOSE(eh)
ENDIF
if type('application') = 'O'
		application.visible = .t.
endif
IF lRelease
	MODI FILE &cScrptName NOWAIT
	WAIT WINDOW NOWAIT "Releasing Resources..."
	osqlsrvr.Close
	RELEASE ALL
	WAIT CLEAR
	ON ERROR
	RETURN
ENDIF
This page was last updated on May 01, 2006 04:28 PM.