#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.