⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gendbc.prg

📁 爱师软件工作室的教材管理系统源码
💻 PRG
📖 第 1 页 / 共 4 页
字号:
		WriteFile(m.hGTFile, m.cCreateTable)
	ENDFOR

	*! Get Index Information
	WriteFile(m.hGTFile, CRLF + "***** " + BEGIN_INDEX_LOC + m.cTableName + " *****")
	m.cCollate = ""
	FOR m.nInner_Loop = 1 TO TAGCOUNT()
		m.cTag = UPPER(ALLTRIM(TAG(m.nInner_Loop)))
		IF m.cCollate <> IDXCOLLATE(m.nInner_Loop)
			m.cCollate = IDXCOLLATE(m.nInner_Loop)
			WriteFile(m.hGTFile, "SET COLLATE TO '" + m.cCollate + "'")
		ENDIF
		IF !EMPTY(m.cTag)
			DO CASE
				CASE PRIMARY(m.nInner_Loop)
				     IF !EMPTY(SYS(2021, m.nInner_Loop))
				     	IF EMPTY(m.g_cFilterExp)
					        MessageBox(NOT_SUPPORTED_LOC, 64, WARNING_TITLE_LOC)
					    ENDIF
				        m.g_cFilterExp = m.g_cFilterExp + CRLF + ;
				                       TABLE_NAME_LOC + m.cTableName + CRLF + ;
				                       PRIMARY_KEY_LOC + SYS(14, m.nInner_Loop) + CRLF + ;
				                       FILTER_EXP_LOC + SYS(2021, m.nInner_Loop)
				     ENDIF
                     WriteFile(m.hGTFile, "ALTER TABLE '" + m.cTableName + ;
                                  "' ADD PRIMARY KEY " + SYS(14, m.nInner_Loop) ;
                                  + " TAG " + m.cTag)
				CASE CANDIDATE(m.nInner_Loop)
					IF EMPTY(SYS(2021, m.nInner_Loop))
						WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop) + ;
				     				 " TAG " + m.cTag + " CANDIDATE")
					ELSE
				     	WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop) + ;
				     				 " TAG " + m.cTag + " FOR " + SYS(2021, m.nInner_Loop) + ;
				     				 + " CANDIDATE")
					ENDIF
				CASE UNIQUE(m.nInner_Loop)
					IF(EMPTY(SYS(2021, m.nInner_Loop)))
					   WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop) + ;
					                " TAG " + m.cTag + " UNIQUE")
					ELSE
					   WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop);
                                    + " TAG " + m.cTag + " FOR " + SYS(2021, m.nInner_Loop) ;
                                    + " UNIQUE")
                    ENDIF
				OTHERWISE
					IF(EMPTY(SYS(2021, m.nInner_Loop)))
						WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop) + ;
							" TAG " + m.cTag + ;
							IIF(DESCENDING(m.nInner_Loop), " DESCENDING ", ""))
					ELSE
						WriteFile(m.hGTFile, "INDEX ON " + SYS(14, m.nInner_Loop);
							+ " TAG " + m.cTag + " FOR " + SYS(2021, m.nInner_Loop) + ;
							IIF(DESCENDING(m.nInner_Loop), " DESCENDING ", ""))
					ENDIF                    
			ENDCASE
		ELSE
			EXIT FOR
		ENDIF
	ENDFOR

	*! Get Properties For Table
	WriteFile(hGTFile, CRLF + "***** " + BEGIN_PROP_LOC + m.cTableName + " *****")
	FOR m.nInner_Loop = 1 TO m.nNumberOfFields
		m.cFieldAlias = m.cTableName + "." + aAll_Fields(m.nInner_Loop, 1)
		m.cFieldHeaderAlias = [DBSETPROP('] + m.cFieldAlias + [', 'Field', ]
		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Caption")
		IF !EMPTY(cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			WriteFile(hGTFile, m.cFieldHeaderAlias + ['Caption', "] + m.cTemp + [")])
		ENDIF
		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Comment")
		IF !EMPTY(m.cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			*! Strip Line Feeds
			m.cTemp = STRTRAN(m.cTemp, CHR(10)) 
			*! Convert Carriage Returns To Programmatic Carriage Returns
			m.cTemp = STRTRAN(m.cTemp, CHR(13), '" + CHR(13) + "')
			WriteFile(m.hGTFile, m.cFieldHeaderAlias + ['Comment', "] + m.cTemp + [")])
		ENDIF
		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "InputMask")
		IF !EMPTY(m.cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			WriteFile(m.hGTFile, m.cFieldHeaderAlias + ['InputMask', "] + m.cTemp + [")])
		ENDIF
		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Format")
		IF !EMPTY(m.cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			WriteFile(m.hGTFile, m.cFieldHeaderAlias + ['Format', "] + m.cTemp + [")])
		ENDIF
		
		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClass")
		IF !EMPTY(m.cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			WriteFile(m.hGTFile, m.cFieldHeaderAlias + ['DisplayClass', "] + m.cTemp + [")])
		ENDIF

		m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClassLibrary")
		IF !EMPTY(m.cTemp)
			m.cTemp = STRTRAN(m.cTemp, ["], ['])
			WriteFile(m.hGTFile, m.cFieldHeaderAlias + ['DisplayClassLibrary', "] + m.cTemp + [")])
		ENDIF
	ENDFOR
	
	m.cTemp = DBGETPROP(m.cTableName, "Table", "Comment")
	IF !EMPTY(m.cTemp)
		m.cTemp = STRTRAN(m.cTemp, ["], ['])
                *! Strip Line Feeds
                m.cTemp = STRTRAN(m.cTemp, CHR(10))
                *! Convert Carriage Returns To Programmatic Carriage Returns
                m.cTemp = STRTRAN(m.cTemp, CHR(13), '" + CHR(13) + "')
		WriteFile(m.hGTFile, [DBSETPROP('] + m.cTableName + [', 'Table', ] + ['Comment', "] + m.cTemp + [")])
	ENDIF

	m.cTemp = DBGETPROP(m.cTableName, "Table", "DeleteTrigger")
	IF !EMPTY(m.cTemp)
		WriteFile(hGTFile, "CREATE TRIGGER ON '" + m.cTableName + ;
							  "' FOR DELETE AS " + m.cTemp)
	ENDIF

	m.cTemp = DBGETPROP(m.cTableName, "Table", "InsertTrigger")
	IF !EMPTY(m.cTemp)
		WriteFile(m.hGTFile, "CREATE TRIGGER ON '" + m.cTableName + ;
							  "' FOR INSERT AS " + m.cTemp)
	ENDIF

	m.cTemp = DBGETPROP(m.cTableName, "Table", "UpdateTrigger")
	IF !EMPTY(m.cTemp)
		WriteFile(m.hGTFile, "CREATE TRIGGER ON '" + m.cTableName + ;
							  "' FOR UPDATE AS " + m.cTemp)
	ENDIF

	m.cTemp = DBGETPROP(m.cTableName, "Table", "RuleExpression")
	IF !EMPTY(m.cTemp)
		m.cError = DBGETPROP(m.cTableName, "Table", "RuleText")
		IF !EMPTY(cError)
			WriteFile(m.hGTFile, "ALTER TABLE '" + m.cTableName + ;
								  "' SET CHECK " + m.cTemp + " ERROR " + ;
								  m.cError)
		ELSE
			WriteFile(m.hGTFile, "ALTER TABLE '" + m.cTableName + ;
								  "' SET CHECK " + m.cTemp)
		ENDIF
	ENDIF
	WriteFile(m.hGTFile, "ENDFUNC")
	WriteFile(m.hGTFile, "")
	FCLOSE(m.hGTFile)
RETURN

**************************************************************************
**
** Function Name: GETVIEW(<ExpC>, <ExpC>)
** Creation Date: 1994.12.01
** Purpose        :
**
**              To take an existing FoxPro 3.0/5.0 View, and generate an output
**              program that can be used to "re-create" that view.
**
** Parameters:
**
**      cViewName    -  A character string representing the name of the 
**                      existing view
**      cOutFileName -  A character string containing the name of the 
**                      output file
**
** Modification History:
**
**  1994.12.01  JHL             Created Program, runs on Build 329 of FoxPro 3.0
**  1994.12.02  KRT             Added to GenDBC, removed third parameter, cleaned up
**  1994.12.08  KRT             Assume Database is open to speed up operation
**  1996.04.12  KRT             Added new properties for Visual FoxPro 5.0
**                              Prepared / CompareMemo / FetchAsNeeded
**	1996.05.14  KRT             Added more properties for views
** 	1996.05.16  KRT             Adjusted for return a blank string instead of a logical
**                              value on Prepared, etc.. if the field does not exist
**                              in the database (Version 3.0 database converted to 5.0)
**  1996.05.16  KRT             Added the DataType property
**  1996.06.26  KRT             Added support for ParameterList
**  1996.07.19  KRT             Added support for Offline Views
**  1996.08.07  KRT				Added support for BatchUpdateCount, Comment
***************************************************************************************
PROCEDURE GetView

	LPARAMETERS cViewName, cOutFileName

	PRIVATE ALL EXCEPT g_*

	m.nFileHand = FCREATE(m.cOutFileName, 0)
	IF m.nFileHand < 1
		FatalAlert(NO_TEMP_FILE_LOC + m.cOutFileName, .T.)
	ENDIF

	*! Get View Information for later use
	m.nSourceType = DBGetProp(m.cViewName, 'View', 'SourceType')
	m.cConnectName = ALLTRIM(DBGetProp(m.cViewName, 'View', 'ConnectName'))
	m.cSQL = ALLTRIM(DBGetProp(m.cViewName, 'View', 'SQL'))
	m.cnUpdateType = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'UpdateType')))
	m.cnWhereType = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'WhereType')))
	m.clFetchMemo = IIF(DBGetProp(m.cViewName, 'View', 'Fetchmemo'),'.T.','.F.')
	m.clShareConnection = IIF(DBGetProp(m.cViewName, 'View', 'ShareConnection'),'.T.','.F.')
	m.clSendUpdates = IIF(DBGetProp(m.cViewName, 'View', 'SendUpdates'),'.T.','.F.')
	m.cnUseMemoSize = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'UseMemoSize')))
	m.cnFetchSize = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'FetchSize')))
	m.cnMaxRecords = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'MaxRecords')))
	m.ccTables = ALLTRIM(DBGetProp(m.cViewName, 'View', 'Tables'))
	m.clPrepared = IIF(!EMPTY(DBGetProp(m.cViewName, 'View', 'Prepared')), '.T.', '.F.')
	m.clCompareMemo = IIF(!EMPTY(DBGetProp(m.cViewName, 'View', 'CompareMemo')), '.T.', '.F.')
	m.clFetchAsNeeded = IIF(!EMPTY(DBGetProp(m.cViewName, 'View', 'FetchAsNeeded')), '.T.', '.F.')
	m.cParams = ALLTRIM(DBGetProp(m.cViewName, 'View', 'ParameterList'))
	m.lOffline = DBGetProp(m.cViewName, 'View', 'Offline')
	m.cComment = DBGETPROP(m.cViewName, 'View', 'Comment')
	IF !EMPTY(m.cComment )
		m.cComment = STRTRAN(m.cComment , ["], ['])
		*! Strip Line Feeds
		m.cComment = STRTRAN(m.cComment , CHR(10)) 
		*! Convert Carriage Returns To Programmatic Carriage Returns
		m.cComment = STRTRAN(m.cComment , CHR(13), '" + CHR(13) + "')
	ENDIF
	m.cnBatchUpdateCount = ALLTRIM(STR(DBGetProp(m.cViewName, 'View', 'BatchUpdateCount')))
	
	*! Generate Comment Block
	WriteFile(m.nFileHand, "FUNCTION MakeView_"+FIXNAME(m.cViewName))

	m.cCommentBlock = "***************** " + BEGIN_VIEW_LOC + m.cViewName + ;
                      " ***************" + CRLF

	WriteFile(m.nFileHand, m.cCommentBlock)

	*! Generate CREATE VIEW command
	m.cCreateString = 'CREATE SQL VIEW "'+ALLTRIM(m.cViewName)+'" ; '+CRLF

	IF m.nSourceType != 1     && If it isn't a local view
		m.cCreateString = m.cCreateString + '   REMOTE '
		IF !EMPTY(m.cConnectName)
			m.cCreateString = m.cCreateString + 'CONNECT "' + m.cConnectName + '" ; '+CRLF
		ENDIF
	ENDIF
	m.cCreateString = m.cCreateString + '   AS '+ m.cSQL + CRLF

	WriteFile(m.nFileHand, m.cCreateString)

	*! GENERATE code to Set View Level Properties
	m.cViewDBSetPrefix = [DBSetProp(']+m.cViewName+[', 'View', ]

	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['UpdateType', ] + m.cnUpdateType + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['WhereType', ] + m.cnWhereType + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['FetchMemo', ] + m.clFetchMemo + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['SendUpdates', ] + m.clSendUpdates + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['UseMemoSize', ] + m.cnUseMemoSize + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['FetchSize', ] + m.cnFetchSize + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['MaxRecords', ] + m.cnMaxRecords + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['Tables', '] + m.ccTables + [')])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['Prepared', ] + m.clPrepared + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['CompareMemo', ] + m.clCompareMemo + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['FetchAsNeeded', ] + m.clFetchAsNeeded + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['FetchSize', ] + m.cnFetchSize + [)])
	IF !EMPTY(m.cParams)
		WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['ParameterList', "] + m.cParams + [")])
	ENDIF
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['Comment', "] +  m.cComment + [")])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['BatchUpdateCount', ] + m.cnBatchUpdateCount + [)])
	WriteFile(m.nFileHand, m.cViewDBSetPrefix + ['ShareConnection', ] + m.clShareConnection + [)])
	IF m.lOffline
		WriteFile(m.nFileHand, 'CREATEOFFLINE("' + m.cViewName + '")')
	ENDIF
		

	*! GENERATE code to Set Field Level Properties
	USE (DBC()) AGAIN IN 0 ALIAS GenViewCursor EXCLUSIVE
	SELECT GenViewCursor
	LOCATE FOR ALLTRIM(UPPER(GenViewCursor.ObjectName)) == m.cViewName AND ;
    	GenViewCursor.ObjectType = 'View'
	m.nObjectId = GenViewCursor.ObjectId
	SELECT ObjectName FROM GenViewCursor ;
			WHERE GenViewCursor.ParentId = m.nObjectId ;
			INTO ARRAY aViewFields
	USE in GenViewCursor
	WriteFile(m.nFileHand, CRLF + '*!* Field Level Properties for ' + m.cViewName)

	IF _TALLY # 0
		FOR m.nLoop = 1 TO ALEN(aViewFields, 1)
			m.cFieldAlias = m.cViewName + "." + ALLTRIM(aViewFields(nLoop, 1))
			m.clKeyField = IIF(DBGetProp(m.cFieldAlias, 'Field', 'KeyField'),'.T.','.F.')
			m.clUpdatable = IIF(DBGetProp(m.cFieldAlias, 'Field', 'Updatable'),'.T.','.F.')
			m.ccUpdateName = ALLTRIM(DBGetProp(m.cFieldAlias, 'Field', 'UpdateName'))
			m.cViewFieldSetPrefix = [DBSetProp(']+m.cFieldAlias+[', 'Field', ]
			
			WriteFile(m.nFileHand, '* Props for the '+m.cFieldAlias+' field.')
			WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['KeyField', ] + m.clKeyField + [)])
			WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['Updatable', ] + m.clUpdatable + [)])
			WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['UpdateName', '] + m.ccUpdateName + [')])
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "RuleExpression")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['RuleExpression', "]+m.cTemp+[")])
			ENDIF
			
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "RuleText")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['RuleText', "]+m.cTemp+[")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Caption")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['Caption', "] + m.cTemp + [")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Comment")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				*! Strip Line Feeds
				m.cTemp = STRTRAN(m.cTemp, CHR(10)) 
				*! Convert Carriage Returns To Programmatic Carriage Returns
				m.cTemp = STRTRAN(m.cTemp, CHR(13), '" + CHR(13) + "')
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['Comment', "] + m.cTemp + [")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "InputMask")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['InputMask', "] + m.cTemp + [")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "Format")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['Format', "] + m.cTemp + [")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClass")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['DisplayClass', "] + m.cTemp + [")])
			ENDIF
			m.cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClassLibrary")
			IF !EMPTY(m.cTemp)
				m.cTemp = STRTRAN(m.cTemp, ["], ['])
				WriteFile(m.nFileHand, m.cViewFieldSetPrefix + ['DisplayClassLibrary', "] + m.cTemp + [")])
			ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -