Resources Up

#INCLUDE DEFINES.H

PARAMETER cScrptName, cAppName, cDbName, cScrptType, cInstallPath
** cScrptType is 'FULL' or 'MIGRATE'
PUBLIC oSqlSrvr, oDb
STORE .F. TO llError, lRelease, llSchemaAdded
ON ERROR llError = .T.
lnParams = PARAMETERS()
IF  lnParams < 4  OR NOT (UPPER(cScrptType) == 'FULL' OR UPPER(cScrptType) == 'MIGRATE')
	WAIT WINDOW "Usage: Constrnt <Script Name>, <App Name>, <Database Name>, <Script Type>" + ;
			CHR(13) + "Script Type is 'FULL' or 'AUDIT'"
	ON ERROR
	RETURN
ENDIF
IF TYPE('osqlsrvr') <> 'O'
	WAIT WINDOW NOWAIT "Connecting to SQL Server..."
	osqlsrvr = createobject('sqlole.sqlserver')
	IF TYPE('oSQLSrvr') <> 'O'
		WAIT WINDOW "Unable to create SQL Server OLE object." TIME 2.0
		RELEASE osqlSrvr
		ON ERROR
		RETURN
	ENDIF
	ret =osqlsrvr.connect(_SQL_SERVER, 'cmndev', '')
	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
	RETURN
ENDIF
WAIT WINDOW NOWAIT "Obtaining Tables List..."
STORE FCREATE(_LOG_PATH + "\" + cAppName + ' TableConstraints Error.log') TO eh
STORE FCREATE(cScrptName) TO _TEXT
STORE FCREATE(_LOG_PATH + "\" + UPPER(cAppName) + ' TableConstraints Audit.log') TO ah
IF _TEXT = -1
	WAIT WINDOW "Unable to create output file." TIMEOUT 2.0
	RELEASE ALL
	ON ERROR
	RETURN
ENDIF
SET TEXTMERGE ON NOSHOW
TEXT
/******************** Script Started: <<TTOC(DATETIME())>> ********************/
ENDTEXT
cScrptType	= UPPER(cScrptType)
create table c:\trash\alter (name c(30), script M)
use c:\trash\alter in 0
USE (IIF(TYPE('cInstallPath') = 'C', cInstallPath, _INSTALL_PATH) + "\" + cAppName + "_Tables") in 0
lcCount = ALLT(STR(RECCOUNT()))
lnRecCount = 0
SELECT COUNT(*) FROM (cAppName + "_Tables") WHERE UPPER(ALLT(Type)) = 'TABLE' INTO ARRAY alnViewCnt
IF _TALLY = 0
	DIMENSION alnViewCnt[1]
	alnViewCnt[1]	= 0
ENDIF

** Only for full scripting with DRI
IF cScrptType = 'MIGRATE'
TEXT
PRINT 'Creating Constraints for Tables...'
GO
ENDTEXT
** Generate constraints for the tables now.
select(cappname + "_tables")
lcCount = ALLT(STR(RECCOUNT()))
lnRecCount = 0
SCAN FOR Order > 0
	lnRecCount = lnRecCount + 1
	jcType = UPPER(EVALUATE(cAppName + "_Tables.Type"))
	cTblName = "dbo." + ALLT(EVALUATE(cAppName + "_Tables.Name"))
	WAIT WINDOW NOWAIT "Generating constraints for " + cTblName + "..." + ;
				ALLT(STR(lnRecCount)) + "/" + lcCount
IF jcType = 'TABLE'
insert into alter
values(strtran(ctblname, 'dbo.'), STRTRAN(oDb.Tables(cTblName).Script(_KEYS_SCRIPT),
	'(suser_name(null))','SYSTEM_USER'))
loop
TEXT
<<STRTRAN(oDb.Tables(cTblName).Script(_KEYS_SCRIPT), '(suser_name(null))','SYSTEM_USER')>>
ENDTEXT
ENDIF
	IF llError
		llError = .F.
		= FPUTS(eH, cTblName + ":" + MESS())
		= FFLUSH(eH)
	ELSE
		= FPUTS(ah, cTblName)
		= FFLUSH(ah)
	ENDIF
	= FFLUSH(_TEXT)
ENDSCAN
ENDIF
** Only for full scripting with DRI
USE
TEXT
/******************** Script Ended: <<TTOC(DATETIME())>> ********************/
PRINT 'Creation of constraints Completed.'
GO
ENDTEXT
= FCLOSE(ah)
SET TEXTMERGE OFF
SET TEXTMERGE TO
IF FSEEK(eh, 0, 2) > 0
	= FCLOSE(eh)
	cLogFile = _LOG_PATH + "\" + cAppName + ' TableConstraints Error.log'
	MODI FILE &cLogFile NOWAIT
ELSE
	= FCLOSE(eh)
ENDIF
IF lRelease
	WAIT WINDOW NOWAIT "Releasing Resources..."
	osqlsrvr.Close
	RELEASE ALL
	CLEAR ALL
	WAIT CLEAR
	ON ERROR
	RETURN
ENDIF
This page was last updated on May 01, 2006 04:28 PM.