根据手工建立的数据库自动生成建立数据库的代码
我们在起初设计软件时,往往用生成器或菜单方式建立数据库,可是最后在完成软件的时候,又往往不把这些数据库,以及数据库里的表打包给用户使用,而是用编程的方式生成这些数据库以及表。下面这个,就是我在实践中用已有的数据库来自动生成建立数据库的代码的小程序。参数有两个,1、用生成器或菜单方式建立数据库名:数据库名
2、建立数据库的代码文件名:prg文件名
程序代码:
FUNCTION dbc2creat("数据库名","prg文件名") CLOSE DATABASES OPEN DATABASE 数据库名 EXCLUSIVE DIMENSION gatables(1) createc="CREATE DATABASE "+数据库名+CHR(13) gatables='' m=ADBOBJECTS(gatables, "TABLE") IF NOT EMPTY(m) FOR i=1 TO m USE gatables(i) EXCLUSIVE SELECT gatables(i) ziduan=AFIELDS(arrayname) createc=createc+"Create table "+gatables(i)+" (" FOR i2=1 TO ziduan createc=createc+arrayname(i2,1)+SPACE(1)+arrayname(i2,2)+SPACE(1) IF AT(arrayname(i2,2),[CNFQV])>0 createc=createc+"("+ALLTRIM(STR(arrayname(i2,3)))+SPACE(1) IF EMPTY(arrayname(i2,4))=.F. createc=createc+ALLTRIM(STR(arrayname(i2,3))) ENDIF createc=createc+")" ENDIF IF NOT EMPTY(arrayname(i2,9)) createc=createc+" default "+arrayname(i2,9) ENDIF createc=createc+"," ENDFOR createc=LEFT(createc,LEN(createc)-1)+")"+CHR(13) USE ENDFOR ENDIF =STRTOFILE(createc,"prg文件名.prg") CLOSE DATABASES ENDFUNC
此小程序,只能自动生成建立表的CREATE TABLE TableName1 ( FieldName1 FieldType [( nFieldWidth [, nPrecision] )] [DEFAULT eExpression1]段的语句,不过对于我来说好像够了。其实这段小程序还可以再复杂点的。