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

📄 access to sql 脚本编写器.htm

📁 Access to Sql 脚本编写器
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            <BR><B>表,视图,索引,约束,</B>包括<B> 默认值,主键,自动编号,外键(表关系) 
            </B><BR>编写完自动保存为原数据库名+相应扩展的文件 
            <BR>Asp模式可直接生成带表单输入的可执行的Asp文件,用生成的Asp文件即可生成新的数据库 
            <BR>Sql模式可直接生成纯Sql语句文本</P>
            <P><B>实现思路:</B><BR>用Ado 模式查询 + Adox对象模型 
            双管齐下<BR>通过编写模式查询的List文件(该代码需要可另外提供),分析表结构元素<BR>在加上Adox细节获取必要属性,比如自动编号的种子值,增长量<BR>索引集合的列的排序属性<BR>就基本实现了Access 
            Sql的脚本编写<BR>可能更实用的是编写成可执行的 Asp文件,<BR>因为 Access2000的查询设计运行 
            Sql语句实在弱智,还乱纠错</P>
            <P><B>第一版代码:</B> 按海娃的提议<BR>1.修改了一下,备注类型用回Access标准字 text char / 我一直习惯 
            LongText varchar</P>
            <P>2.按字段的在表中的顺序来编写,这样重建脚本时就保证一致了<BR>测试比较: 将原始数据库编写的sql 
            与该sql脚本重建的数据库再次编写的 sql比较 一致</P>
            <P>代码拷贝框<BR><TEXTAREA class=codeTextarea>&lt;% @ LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;
&lt;%Option Explicit
response.buffer=true
	Response.Expires = -1
	Response.AddHeader "Pragma","no-cache"
	Response.AddHeader "cache-ctrol","no-cache"
%&gt;&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;MiniAcces Editor1.0part2 Access SQL脚本编写器(V37 PaintBlue.Net 2004 Acp Code)&lt;/TITLE&gt;
&lt;META NAME="Generator" CONTENT="EditPlus"&gt;
&lt;META NAME="Author" CONTENT="V37"&gt;
&lt;META NAME="Keywords" CONTENT="PaintBlue.Net,PaintBlue"&gt;
&lt;META NAME="Description" CONTENT="PaintBlue.Net"&gt;
&lt;style&gt;
table{	color: #000000;
		font-size: 9pt;
		FONT-FAMILY: "Tahoma","MS Shell Dlg";
		}
td	{	color: #000000;
		font-size: 9pt;
		}table{	color: #000000;
		font-size: 9pt;
		FONT-FAMILY: "Tahoma","MS Shell Dlg";
		}
body	{	color: #000000;
		font-size: 9pt;
		}
&lt;/style&gt;
&lt;/HEAD&gt;
&lt;body bgCOLOR=eeeeee text="#000000" leftmargin="0" marginwidth="100%" topmargin="0" bottommargin="20"&gt;
&lt;%
dim enMode
dim DB_Name,ExtName,FileName
dim rs,CONN,CONNstr
	DB_Name="/coosel2.0/data/mydb.mdb"
	DB_Name=questStr("DB_Name")
	FileName=questStr("DB_Name")
	enMode=questStr("enMode")
	if not isnumeric(enMode) then enMode=0
	
	if DB_Name&lt;&gt;"" then 	
		enMode=clng(enMode)
		if enMode=0 then
			ExtName=".Sql"
		else
			ExtName=".Asp"
		end if
		Call openDB(DB_Name)
		Call CreateSQL(DB_Name,enMode)
	else
		if DB_Name="" then DB_Name="data/mydb.mdb"
		Call Main()
	end if

Sub MAIN()
%&gt;
	&lt;style&gt;
	.titlebar {
		FONT-WEIGHT: bold; FONT-SIZE: 12pt; FILTER: dropshadow(color=#333333, offx=1, offy=2); WIDTH: 100%; COLOR: #ffffff; FONT-FAMILY: Tahoma,Verdana, Arial, sans-serif; POSITION: relative; TOP: 1px
	}
	&lt;/style&gt;
	&lt;FORM METHOD=POST ACTION="?action=1" Name=DBform&gt;
	&lt;TABLE width="100%" cellspacing=0 border=0&gt;
		&lt;TR bgcolor=#D4D0C8&gt;
			&lt;TD  align=center height=32&gt;&lt;a href=http://www.paintblue.net/ target=_blank&gt;&lt;img src=http://www.paintblue.net/bbs/images/TitleLogo.gif border=0&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;span class=titlebar&gt;&lt;font color=#ffffff&gt;&lt;b&gt;MiniAccess Editor V1.0 P2 (Access 脚本编写器)&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;&lt;/TD&gt;
		&lt;td&gt;&lt;/td&gt;&lt;/TR&gt;
	&lt;TABLE align=center width="100%" cellspacing=1 cellpadding=3 border=0&gt;
	&lt;/TABLE&gt;
	&lt;TABLE align=center width="100%" cellspacing=1 cellpadding=3 border=0&gt;
	&lt;TR  bgcolor=#a4c0d8&gt;&lt;TD align=right  height=10&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
	&lt;TR bgcolor=#D4D0C8&gt;
		&lt;TD align=right&gt;&lt;span id=a&gt;编写模式&lt;/span&gt;&lt;/TD&gt;
		&lt;TD&gt;
		&lt;INPUT TYPE="radio" NAME="enMode" value="0" &lt;%if enMode=0 then response.write "checked" end if%&gt; &gt;Sql文本
		&lt;INPUT TYPE="radio" NAME="enMode" value="1" &lt;%if enMode=1 then response.write "checked" end if%&gt; &gt;Asp代码
		&lt;/TD&gt;
	&lt;/TR&gt;
	&lt;TR bgcolor=#D4D0C8&gt;
		&lt;TD align=right width=250&gt;数据库路径&lt;/TD&gt;
		&lt;TD&gt;&lt;INPUT TYPE="text" NAME="DB_Name" value="&lt;%=DB_Name%&gt;" style="width:70%;"&gt; &lt;/TD&gt;
	&lt;/TR&gt;
	&lt;TR  bgcolor=#a4c0d8&gt;&lt;TD align=right  height=10&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
	&lt;TR &gt;
		&lt;TD height=38&gt;&lt;/TD&gt;
		&lt;TD bgcolor=#D4D0C8&gt;&amp;nbsp;&amp;nbsp;&lt;INPUT TYPE="submit" value=" 确 定 " style="width:80;"&gt;&lt;/TD&gt;
	&lt;/TR&gt;
	&lt;TR &gt;
		&lt;TD height=38&gt;&lt;/TD&gt;
		&lt;TD bgcolor=#D4D0C8&gt;&amp;nbsp;&amp;nbsp;
		&lt;li&gt;&lt;&lt;简介&gt;&gt;
		&lt;li&gt;功能:可编写Access数据库的常用的主要对象,包括 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;表,视图,索引,约束,包括 默认值,主键,自动编号,外键&lt;/b&gt;(表关系)
		&lt;li&gt;编写完自动保存为原数据库名+相应扩展的文件
		&lt;li&gt;Asp模式可直接生成带表单输入的可执行的Asp文件,用生成的Asp文件即可生成新的数据库
		&lt;li&gt;Sql模式可直接生成纯Sql语句文本&lt;/li&gt;&lt;br&gt;&lt;br&gt;&lt;/TD&gt;
	&lt;/TR&gt;
	&lt;/Table&gt;
	&lt;/FORM&gt;
&lt;%
End SUB
'====MiniAcces Editor1.0part2 Access SQL脚本编写器(V37 PaintBlue.Net 2004 Acp Code)=========

SUB openDB(DB_Name)
		if inStr(DB_Name,":/")=0 and inStr(DB_Name,":\")=0 then 
			DB_Name=server.mappath(DB_Name)
		end if
		Set CONN = Server.CreateObject("ADODB.CONNection")
	on error resume next	
		CONN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&amp;DB_Name
		if err.number&lt;&gt;0 then
			rw "数据库打开失败,错误为:"&amp;err.description,0
			err.clear
		else
			Set rs=Server.CreateObject("adodb.recordSet")
		end if
End SUB

SUB CreateSQL(DB_Name,exec)
	'创建模式
	'exec = 0 : 生成SQL语句
	'exec = 1 : 生成Asp程序
	dim tbls,tabsArr,ub,I,TtempStr,TtempStrHead
	dim TableStr
	if exec=1 then
		TtempStrHead="&lt;"&amp;"% @ LANGUAGE=""VBSCRIPT""%"&amp;"&gt;"&amp;vbcrlf
		TtempStrHead=TtempStrHead&amp;"&lt;"&amp;"%Option Explicit"&amp;vbcrlf
		TtempStrHead=TtempStrHead&amp;"response.buffer=true"&amp;vbcrlf&amp;vbcrlf
		TtempStrHead=TtempStrHead&amp;"'========================================================================="&amp;vbcrlf&amp;"'Access 数据库 SQL 脚本生成 by MiniAccess Edit V1.0 P2(V37 PaintBlue.Net 2004 Asp Code)"&amp;vbcrlf&amp;"'========================================================================="&amp;vbcrlf&amp;vbcrlf
	end if
	if instr(DB_Name,":\")=0 and instr(DB_Name,":/")=0 then
			DB_Name=Server.MapPath(DB_Name)
	end if 
			CONNstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; DB_Name
		Set CONN = Server.CreateObject("ADODB.Connection")
			CONN.Open CONNstr	
	'编写CONN对象
	if exec=1 then
		TtempStr="SUB CreateDB(DB_Name)"&amp;vbcrlf
		TtempStr=TtempStr&amp;"DIM CONN"&amp;vbcrlf
		TtempStr=TtempStr&amp;"Set CONN=Server.CreateObject(""ADODB.Connection"")"&amp;vbcrlf
		TtempStr=TtempStr&amp;"CONN.open ""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""&amp;DB_Name"&amp;vbcrlf&amp;vbcrlf
	end if

	'编写表/索引对象
	Set tbls=CONN.openSchema(20) 'adSchemaPrimaryKeys  
		tbls.Filter =" TABLE_TYPE='TABLE' " '筛选出有默认值,但允许null的列
	while Not tbls.eof
		TableStr=TableStr&amp;"|"&amp;tbls("TABLE_Name")
		tbls.movenext
	wend
		tbls.filter=0
		tbls.close
		set tbls=nothing
		TableStr=mid(TableStr,2)
	if TableStr&lt;&gt;"" then
		tabsArr=split(TableStr,"|")
		ub=ubound(tabsArr)
		for I=0 to ub
			if exec=1 then TtempStr=TtempStr&amp;"'["&amp;tabsArr(I)&amp;"]:"&amp; vbcrlf
			TtempStr=TtempStr&amp;CreatTableSql(tabsArr(I),exec)&amp;vbcrlf&amp;vbcrlf
		next
	end if
	'编写表关系
	if TableStr&lt;&gt;"" then TtempStr=TtempStr&amp;CreatForeignSql(exec)
	'编写视图
	
	TtempStr=TtempStr&amp;CreatViewSql(exec)

	if exec=1 then 
		TtempStr=replace(TtempStr,"&gt;","""&amp;chr(62)&amp;""")
		TtempStr=replace(TtempStr,"&lt;","""&amp;chr(60)&amp;""")
		TtempStr=TtempStr&amp;"End SUB"&amp; vbcrlf&amp;vbcrlf
		TtempStr=TtempStr&amp;"	call CreateMDB()"&amp;vbcrlf
		TtempStr=TtempStr&amp;"SUB Main()"&amp;vbcrlf
		TtempStr=TtempStr&amp;"	Response.write(""&lt;center&gt;&lt;FORM METHOD=POST&gt;&lt;input name=DB_Name Value="""""&amp;Server.Htmlencode(DB_Name)&amp;""""" style=""""width:70%;""""&gt;&lt;br&gt;&lt;INPUT TYPE=submit name=CreateDB Value=创建数据库&gt;&lt;/FORM&gt;&lt;/center&gt;"")"&amp;vbcrlf
		TtempStr=TtempStr&amp;"End SUB" &amp; vbCrlf&amp; vbCrlf
		TtempStr=TtempStr&amp; "SUB CreateMDB()" &amp; vbCrlf
		TtempStr=TtempStr&amp; "	dim cat,NewDB_Name" &amp; vbCrlf
		TtempStr=TtempStr&amp; "	NewDB_Name=request(""DB_Name"")" &amp; vbCrlf
		TtempStr=TtempStr&amp; "	if NewDB_Name&lt;&gt;"""" then" &amp; vbCrlf
		TtempStr=TtempStr&amp; "		if instr(NewDB_Name,"":\"")=0 and instr(NewDB_Name,"":/"")=0 then" &amp; vbCrlf
		TtempStr=TtempStr&amp; "			NewDB_Name=Server.MapPath(NewDB_Name)" &amp; vbCrlf
		TtempStr=TtempStr&amp; "		end if " &amp; vbCrlf
		TtempStr=TtempStr&amp; "		set cat=Server.CreateObject(""ADOX.Catalog"") " &amp; vbCrlf
		TtempStr=TtempStr&amp; "		cat.Create ""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""&amp;NewDB_Name" &amp; vbCrlf
		TtempStr=TtempStr&amp; "		set cat=nothing " &amp; vbCrlf
		TtempStr=TtempStr&amp; "		CreateDB(NewDB_Name)" &amp; vbCrlf
		TtempStr=TtempStr&amp; "		response.write vbcrlf&amp;""OK""" &amp; vbCrlf
		TtempStr=TtempStr&amp; "	else" &amp; vbCrlf
		TtempStr=TtempStr&amp; "		set cat=nothing " &amp; vbCrlf
		TtempStr=TtempStr&amp; "		call main()" &amp; vbCrlf
		TtempStr=TtempStr&amp; "	end if" &amp; vbCrlf
		TtempStr=TtempStr&amp; "End SUB"
		TtempStr=TtempStrHead&amp;TtempStr&amp;vbcrlf&amp;"%"&amp;"&gt;"
	end if
		call Ados_Write(TtempStr,DB_Name&amp;ExtName,"gb2312")
		rw "&lt;br&gt;&lt;img width=100 height=0&gt;"&amp;DB_Name&amp;"的SQL脚本编写完成",1
		rw "&lt;img width=100 height=0&gt;已经保存文件为&lt;b&gt;&lt;font color=blue&gt;"&amp;DB_Name&amp;ExtName&amp;"&lt;/font&gt;&lt;/b&gt;[&lt;a href=?&gt;返回&lt;/a&gt;]:",1
		rw "&lt;center&gt;&lt;textarea style=""width:70%;height:500px;"" wrap=""off""&gt;"&amp;server.Htmlencode(TtempStr)&amp;"&lt;/textarea&gt;&lt;/center&gt;",1
End SUB

function CreatViewSql(exec)
	dim cols
	dim FKtable,PK_cols,FK_cols,tmpStr,tmpStr1,VIEW_DEFINITION
	Set cols=CONN.openSchema(23)
	cols.filter=0
	while not cols.eof
			tmpStr1=""

			VIEW_DEFINITION=replace(cols("VIEW_DEFINITION"),chr(13),"")
			VIEW_DEFINITION=replace(VIEW_DEFINITION,chr(10)," ")
			tmpStr1="Create view ["&amp;cols("TABLE_NAME")&amp;"] As "&amp;VIEW_DEFINITION&amp;""
			if exec=1 then tmpStr1="CONN.execute("""&amp;tmpStr1&amp;""")"
			tmpStr=tmpStr&amp;vbcrlf&amp;tmpStr1
		cols.movenext
	wend
	cols.close
	set cols=nothing
	CreatViewSql=tmpStr
End Function

function CreatTableSql(byval tableName,exec)
	dim cols
	dim TmpStr
	Set cols=CONN.openSchema(4)
	dim splitchar,splitchar1
	if exec=1 then 
		splitchar=""""
		splitchar1="""&amp;_"
	else 
		splitchar=""
		splitchar1=""
	end if
	cols.filter="Table_name='"&amp;tableName&amp;"'"
	if cols.eof then
	   exit function
	end if
	dim cat,autoclumn,n,chkPrimaryKey
	n=0

' 编写表脚本
	autoclumn=GetAutoincrementCoulmnT(tableName)
	if exec=1 then
		TmpStr="CONN.execute(""CREATE TABLE ["&amp;tableName&amp;"] (""&amp;_"&amp; vbcrlf
	else
		TmpStr="CREATE TABLE ["&amp;tableName&amp;"] ("&amp; vbcrlf
	end if
	dim autoclumnStr,columnStr
	if autoclumn&lt;&gt;"" then
		autoclumnStr=  "	"&amp;splitchar&amp;"["&amp; autoclumn &amp;"] integer IDENTITY (1,"&amp;GetIncrement(tableName,autoclumn)&amp;") not null"
	end if
	
	n=0 
	do 
		n=n+1
		cols.filter="Table_name='"&amp;tableName&amp;"' and ORDINAL_POSITION="&amp;n
		if cols.eof  then exit do

⌨️ 快捷键说明

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