gendbcx.prg
来自「MSComm控件资料,Visual Basic 6.0(以下简称VB) 是一种功」· PRG 代码 · 共 1,475 行 · 第 1/4 页
PRG
1,475 行
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['CompareMemo', ] + m.clCompareMemo + [)])
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['FetchAsNeeded', ] + m.clFetchAsNeeded + [)])
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['FetchSize', ] + m.cnFetchSize + [)])
IF !EMPTY(m.cParams)
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['ParameterList', "] + m.cParams + [")])
ENDIF
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['Comment', "] + m.cComment + [")])
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['BatchUpdateCount', ] + m.cnBatchUpdateCount + [)])
=WriteFile(m.hOutFile, m.cViewDBSetPrefix + ['ShareConnection', ] + m.clShareConnection + [)])
IF m.lOffline
=WriteFile(m.hOutFile, ' 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'
nObjectId = GenViewCursor.ObjectId
SELECT ObjectName FROM GenViewCursor ;
WHERE GenViewCursor.ParentId = m.nObjectId ;
INTO ARRAY aViewFields
USE in GenViewCursor
=WriteFile(m.hOutFile, "")
=WriteFile(m.hOutFile, ' *!* Field Level Properties for ' + m.cViewName)
IF _TALLY # 0
FOR m.nLoop = 1 TO ALEN(aViewFields, 1)
cFieldAlias = m.cViewName + "." + ALLTRIM(aViewFields(nLoop, 1))
clKeyField = IIF(DBGetProp(m.cFieldAlias, 'Field', 'KeyField'),'.T.','.F.')
clUpdatable = IIF(DBGetProp(m.cFieldAlias, 'Field', 'Updatable'),'.T.','.F.')
ccUpdateName = ALLTRIM(DBGetProp(m.cFieldAlias, 'Field', 'UpdateName'))
cViewFieldSetPrefix = [ =DBSetProp(']+m.cFieldAlias+[', 'Field', ]
=WriteFile(m.hOutFile, ' * Props for the '+m.cFieldAlias+' field.')
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['KeyField', ] + m.clKeyField + [)])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['Updatable', ] + m.clUpdatable + [)])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['UpdateName', '] + m.ccUpdateName + [')])
cTemp = DBGETPROP(m.cFieldAlias, "Field", "RuleExpression")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['RuleExpression', "]+m.cTemp+[")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "RuleText")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['RuleText', "]+m.cTemp+[")])
ENDIF
*-- SAS
* cTemp = DBGETPROP(m.cFieldAlias, "Field", "Caption")
cTemp = ALLTRIM(DBGETPROP(m.cFieldAlias, "Field", "Caption"))
*-- SAS
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['Caption', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "Comment")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
*! Strip Line Feeds
cTemp = STRTRAN(m.cTemp, CHR(10))
*! Convert Carriage Returns To Programmatic Carriage Returns
cTemp = STRTRAN(m.cTemp, CHR(13), '" + CHR(13) + "')
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['Comment', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "InputMask")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['InputMask', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "Format")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['Format', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClass")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['DisplayClass', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "DisplayClassLibrary")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['DisplayClassLibrary', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "DataType")
IF !EMPTY(m.cTemp)
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['DataType', "] + m.cTemp + [")])
ENDIF
cTemp = DBGETPROP(m.cFieldAlias, "Field", "DefaultValue")
IF !EMPTY(m.cTemp)
cTemp = STRTRAN(m.cTemp, ["], ['])
=WriteFile(m.hOutFile, m.cViewFieldSetPrefix + ['DefaultValue', "] + m.cTemp + [")])
ENDIF
ENDFOR
ENDIF
=WriteFile(m.hOutFile, " ENDPROC")
RETURN
**************************************************************************
**
** Function Name: GETCONN(<ExpC>, <ExpC>)
** Creation Date: 1995.01.03
** Purpose :
**
** To take an existing FoxPro 3.0/5.0 Connection, and generate
** an output program that can be used to "re-create" that connection.
**
** Parameters:
**
** cConnectionName A character string representing the name of the
** existing connection
**
** hOutFile The handle of the output file
**
** cProcPrefix The code we prepend to the connection name to create
** the name of the procedure within which we wrap the
** code that recreates the connection
**
** Modification History:
**
** 1995.01.03 JHL Created Program, runs on Build 329 of FoxPro 3.0
** 1995.01.05 KRT Incorporated into GenDBC with modifications
** 1996.04.12 KRT Added new property for Visual FoxPro 5.0 (Database)
** 1997.02.24 SEA Output code within a PROCEDURE / ENDPROC block to
** avoid error when compiling procedures > 64K
** database re-creation program a procedure
** 1997.02.24 SEA Write directly to a single output file, the handle
** of which is passed in hOutFile
***************************************************************************************
PROCEDURE GetConn
LPARAMETERS cConnectionName, hOutFile, cProcPrefix
PRIVATE ALL EXCEPT g_*
*! Get Connection Information for later use
clAsynchronous = IIF(DBGetProp(m.cConnectionName, 'Connection', 'Asynchronous'),'.T.','.F.')
clBatchMode = IIF(DBGetProp(m.cConnectionName, 'Connection', 'BatchMode'),'.T.','.F.')
ccComment = ALLTRIM(DBGetProp(m.cConnectionName, 'Connection', 'Comment'))
ccConnectString = ALLTRIM(DBGetProp(m.cConnectionName, 'Connection', 'ConnectString'))
cnConnectTimeOut = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'ConnectTimeOut')))
ccDataSource = ALLTRIM(DBGetProp(m.cConnectionName, 'Connection', 'DataSource'))
cnDispLogin = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'DispLogin')))
clDispWarnings = IIF(DBGetProp(m.cConnectionName, 'Connection', 'DispWarnings'),'.T.','.F.')
cnIdleTimeOut = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'IdleTimeOut')))
ccPassword = ALLTRIM(DBGetProp(m.cConnectionName, 'Connection', 'Password'))
cnQueryTimeOut = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'QueryTimeOut')))
cnTransactions = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'Transactions')))
ccUserId = ALLTRIM(DBGetProp(m.cConnectionName, 'Connection', 'UserId'))
cnWaitTime = ALLTRIM(STR(DBGetProp(m.cConnectionName, 'Connection', 'WaitTime')))
ccDatabase = DBGetProp(m.cConnectionName, 'Connection', 'Database')
*! Generate Heading
=WriteFile(m.hOutFile, "")
=WriteFile(m.hOutFile, " **************************************************")
=WriteFile(m.hOutFile, " ** " + BEGIN_CONNECTIONS_LOC + " " + m.cConnectionName)
=WriteFile(m.hOutFile, " **************************************************")
=WriteFile(m.hOutFile, " PROCEDURE " + m.cProcPrefix + m.cConnectionName)
*! Generate CREATE Connection command
cCreateString = ' CREATE CONNECTION '+ALLTRIM(m.cConnectionName)+' ; '+CRLF
IF EMPTY(ALLTRIM(m.ccConnectString)) && If connectstring not specified
cCreateString = m.cCreateString + ' DATASOURCE "' + ALLT(m.ccDataSource) + '" ; ' + CRLF
cCreateString = m.cCreateString + ' USERID "' + ALLT(m.ccUserId) + '" ; ' + CRLF
cCreateString = m.cCreateString + ' PASSWORD "'+ ALLT(m.ccPassword) + '"' + CRLF
ELSE
cCreateString = m.cCreateString + ' CONNSTRING "' + ALLT(m.ccConnectString) + '"'
ENDIF
=WriteFile(m.hOutFile, m.cCreateString)
*! GENERATE code to Set Connection Level Properties
cConnectionDBSetPrefix = [ =DBSetProp(']+m.cConnectionName+[', 'Connection', ]
cConnectionProps = ' ****' + CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['Asynchronous', ] + m.clAsynchronous + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['BatchMode', ] + m.clBatchMode + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['Comment', '] + m.ccComment + [')]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['DispLogin', ] + m.cnDispLogin + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['ConnectTimeOut', ] + m.cnConnectTimeOut + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['DispWarnings', ] + m.clDispWarnings + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['IdleTimeOut', ] + m.cnIdleTimeOut + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['QueryTimeOut', ] + m.cnQueryTimeOut + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['Transactions', ] + m.cnTransactions + [)]+ CRLF
cConnectionProps = m.cConnectionProps + m.cConnectionDBSetPrefix + ;
['Database', '] + m.ccDatabase + [')] + CRLF
=WriteFile(m.hOutFile, m.cConnectionProps)
=WriteFile(m.hOutFile, " ENDPROC")
RETURN
**************************************************************************
**
** Function Name: FatalAlert(<ExpC>)
** Creation Date: 1994.12.02
** Purpose:
**
** Place a message box to alert user of a fatal error.
**
** Parameters:
**
** cAlert_Message - Message to display to user
** lCleanup - If we should try to restore environment
**
** Modification History:
**
** 1994.12.02 KRT Added to GenDBC
**************************************************************************
PROCEDURE FatalAlert
LPARAMETERS cAlert_Message, lCleanup
=MessageBox(m.cAlert_Message, 16, ERROR_TITLE_LOC)
=GenDBC_CleanUp(m.lCleanup)
CANCEL
RETURN
**************************************************************************
**
** Function Name: GenDBC_CleanUp(<ExpL>)
** Creation Date: 1995.03.01
** Purpose:
**
** Restore the environment
**
** Parameters:
**
** lCleanup - If we should try to restore tables open
**
** Modification History:
**
** 1994.03.01 KRT Added to GenDBC
**************************************************************************
PROCEDURE GenDBC_CleanUp
LPARAMETERS lCleanup
*! Restore everything
IF !EMPTY(m.g_cOnError)
ON ERROR &g_cOnError
ELSE
ON ERROR
ENDIF
IF !EMPTY(m.g_cSetTalk)
SET TALK &g_cSetTalk
ENDIF
IF !EMPTY(m.g_cSetDeleted)
SET DELETED &g_cSetDeleted
ENDIF
IF m.g_cSetStatusBar = "OFF"
SET STATUS BAR OFF
ENDIF
IF !EMPTY(m.g_cStatusText)
SET MESSAGE TO (m.g_cStatusText)
ELSE
SET MESSAGE TO
ENDIF
SET FULLPATH &g_cFullPath
CLOSE ALL
IF m.lCleanUp
IF !EMPTY(m.g_cFullDatabase) AND m.lCleanUp
OPEN DATABASE (m.g_cFullDatabase) EXCLUSIVE
IF m.g_nTotal_Tables_Used > 0
FOR m.nLoop = 1 TO m.g_nTotal_Tables_Used
USE (m.g_aTables_Used(m.nLoop)) IN (m.g_aAlias_Used(m.nLoop, 2)) EXCLUSIVE ;
ALIAS (m.g_aAlias_Used(m.nLoop, 1))
ENDFOR
ENDIF
ENDIF
ENDIF
RETURN
**************************************************************************
**
** Function Name: WriteFile(<ExpN>, <ExpC>)
** Creation Date: 1994.12.02
** Purpose :
**
** Centralized file output routine to check for proper output
**
** Parameters:
**
** hFileHandle - Handle of output file
** cText - Contents to write to file
**
** Modification History:
**
** 1994.12.02 KRT Added to GenDBC
**************************************************************************
PROCEDURE WriteFile
LPARAMETERS hFileHandle, cText
nBytesSent = FPUTS(m.hFileHandle, m.cText)
IF m.nBytesSent < LEN(m.cText)
=FatalAlert(NO_OUTPUT_WRITTEN_LOC, .T.)
ENDIF
RETURN
**************************************************************************
**
** Function Name: GenDBC_Error(<expC>, <expN>)
** Creation Date: 1994.12.02
** Purpose :
**
** Generalized Error Routine
**
** Parameters:
**
** cMess - Message to give user
** nLineNo - Line Number Error Occurred
**
** Modification History:
**
** 1994.12.02 KRT Added to GenDBC
**************************************************************************
PROCEDURE GenDBC_Error
LPARAMETERS cMess, nLineNo
=FatalAlert(UNRECOVERABLE_LOC + CRLF + m.cMess + CRLF + ;
AT_LINE_LOC + ALLTRIM(STR(m.nLineNo)), .T.)
RETURN
**************************************************************************
**
** Function Name: Stat_Message()
** Creation Date: 1994.01.08
** Purpose :
**
** Generalized Status Bar Progression
**
** Parameters:
**
** None
**
** Modification History:
**
** 1994.01.08 KRT Added to GenDBC
**************************************************************************
PROCEDURE Stat_Message
PRIVATE ALL EXCEPT g_*
nStat = m.g_nCurrentStat * (160 / g_nMax)
SET MESSAGE TO REPLICATE("|", m.nStat) + " " + ;
ALLTRIM(STR(INT(100 * (m.g_nCurrentStat / m.g_nMax)))) + "%"
g_nCurrentStat = m.g_nCurrentStat + 1
RETURN
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?