makedbc.prg

来自「MSComm控件资料,Visual Basic 6.0(以下简称VB) 是一种功」· PRG 代码 · 共 133 行

PRG
133
字号
LPARAMETERS tcProject, tcCommonPath, tlIntegerKeys
LOCAL lcDBC, lcSafety, lcViewDBC

* Make the Data directory.
MD DATA
CD DATA

lcDBC = tcProject + ".DBC"
*** EGL: 2001.12.27 16:12:55 -  Create a separate DBC for views
lcViewDBC = tcProject + "Views.DBC"

* If there are spaces in the DBC name (Yeesh!), add the quotes.
IF " " $ lcDBC
	lcDBC = ["] + lcDBC + ["]
ENDIF
IF " " $ lcViewDBC
	lcViewDBC = ["] + lcViewDBC + ["]
ENDIF


DisplayStatus([Creating databases...])
CLOSE DATABASES ALL
CREATE DATABASE &lcViewDBC
CLOSE DATABASES ALL
CREATE DATABASE &lcDBC

DisplayStatus([Creating table NextPK...])
MakeTable_NextPK(tlIntegerKeys)
DisplayStatus([Creating table DUMMY...])
MakeTable_DUMMY()
DisplayStatus([Creating table DEVNOTES...])
MakeTable_DEVNOTES()
DisplayStatus([Finished.])

CLOSE DATABASE
USE (lcDBC)
lcSafety = SET("SAFETY")
SET SAFETY OFF

LOCATE FOR Objectname = "StoredProceduresSource"
IF FOUND()
	APPEND MEMO Code FROM TemplateCode.KRT OVERWRITE
	REPLACE Code WITH STRTRAN(Code, "<common_path>", ;
		LEFT(UPPER(tcCommonPath), LEN(tcCommonPath)-1))
	REPLACE Code WITH STRTRAN(Code, "<pjxname>", UPPER(tcProject))
ENDIF

LOCATE FOR Objectname = "StoredProceduresObject"
IF FOUND()
	APPEND MEMO Code FROM TemplateComp.KRT OVERWRITE
ENDIF
IF lcSafety == "ON"
	SET SAFETY ON
ENDIF
USE
COMPILE DATABASE (lcDBC)
OPEN DATABASE (lcDBC)

* Return back to the project directory
CDToParentDirectory()

RETURN


FUNCTION MakeTable_NextPK
	LPARAMETERS tlIntegerKeys
	***** Table setup for NextPK *****

		CREATE TABLE "NextPK.DBF" NAME "NextPK" (CKEYNAME C(20) NOT NULL, ;
			CPREFIX C(10) NOT NULL, ;
			CVALUE C(12) NOT NULL DEFAULT "000000000001", ;
			CINCREMENTPROCEDURE C(64) NOT NULL DEFAULT "", ;
			IMAXLENGTH I NOT NULL  CHECK iMaxLength<=LEN(cValue) ERROR "Max length must be less than or equal to the size of the 'cValue' field." DEFAULT LEN(cValue), ;
			CTYPE C(1) NOT NULL DEFAULT "I", ;
			CDESCRIPTION C(40) NOT NULL)

	IF tlIntegerKeys
		ALTER TABLE NextPK ;
			ALTER COLUMN cType SET DEFAULT "I" 
	ELSE
		ALTER TABLE NextPK ;
			ALTER COLUMN cType SET DEFAULT "C" ;
			ALTER COLUMN cIncrementProcedure SET DEFAULT "IncrementBase62(LEFT(NextPK.cValue, NextPK.iMaxLength))"
	ENDIF

	***** Create each index for NextPK *****
	SET COLLATE TO "MACHINE"
	INDEX ON cKeyName TAG cKeyName
	INDEX ON cPrefix TAG cPrefix

	***** Change properties for NextPK *****
	DBSETPROP("NextPK.cIncrementProcedure ", "Field", "Comment", "Specifies stored procedure used to increment the value.")
	DBSETPROP("NextPK.iMaxLength", "Field", "Comment", "The maximimun length of the value (not used for Integer keys).")
	DBSETPROP("NextPK", "Table", "Comment", "Holds next available values for primary keys and other sequentially-generated numbers")
	
	RETURN
ENDFUNC


FUNCTION MakeTable_DUMMY
	***** Table setup for DUMMY *****
	CREATE TABLE "DUMMY.DBF" NAME "DUMMY" (DUMMY_FIELD C(10) NOT NULL)

	***** Create each index for DUMMY *****

	***** Change properties for DUMMY *****
	DBSETPROP("DUMMY", "Table", "Comment", "A placebo table used to instantiate BizObj in RAD mode")
	
	RETURN
ENDFUNC


FUNCTION MakeTable_DEVNOTES
	***** Table setup for DEVNOTES *****
	CREATE TABLE "DEVNOTES.DBF" NAME "DEVNOTES" (CBIZOBJDES C(50) NOT NULL, ;
		MDEVNOTES M NOT NULL)

	***** Create each index for DEVNOTES *****
	SET COLLATE TO "MACHINE"
	INDEX ON CBIZOBJDES TAG DESCRIPT

	***** Change properties for DEVNOTES *****
	
	RETURN
ENDFUNC


FUNCTION DisplayStatus(lcMessage)
	WAIT WINDOW NOWAIT lcMessage
	
	RETURN
ENDFUNC

⌨️ 快捷键说明

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