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