用adox實現直接連數據庫幫你完成寫sql的任務

代碼如下,copy成hta就可以直接用了,不過還不夠完善,現在只支持access

<html>
<head>
<base target="_self">
<script language="vbscript">
class getsqlinfo
  dim the_adox
   Private Sub Class_Initialize   
      set the_adox=createobject("ADOX.Catalog")
   end sub

   public sub sqlserver_getactiveconnection
       the_adox.ActiveConnection="Provider=sqloledb;Data Source=" & dsource & ";Initial Catalog=" & dbasename & ";User ID=" & uid & ";PWD=" & pwd & ";"
   end sub

   public sub access_getactiveconnection(theaccessfile)
      the_adox.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & theaccessfile
   end sub

   public function tablename
      dim a()
   dim i : i=1
   for each objtab in the_adox.tables
      redim Preserve a(i)
   a(i-1)=objtab.name
   i=i+1
   next
   tablename=a
   end function

   public function getfieldinfo(thetabname)
   dim a()
   set thetableadox=the_adox.tables.item(thetabname)
   for i=0 to thetableadox.columns.count-1
          set ttt=createobject("scripting.dictionary")
       redim preserve a(i+1)
     ' alert(thetableadox.columns.Item(i).type)
      ttt.add "name",thetableadox.columns.Item(i).name
      ttt.add "type",thetableadox.columns.Item(i).type
      set a(i)=ttt
      set ttt=nothing
   next
  ' alert(isArray(a))
   getfieldinfo=a
   end function

end class
</script>
<script language="vbscript">
function chooseaccessfolder()
set getdll=createobject("getfolderd.folderd")
thefoldername=getdll.getfoldername
set getaccessurl=document.getElementById("showaccessurl")
getaccessurl.innertext=thefoldername
end function
</script>

<script language="vbscript">
dim save_info
set save_info=createobject("scripting.dictionary")
function showaccesstab
dim tabname
dim str : str=""
set theaccess_choose=document.getElementById("showaccessurl")
set theshow_accesstab=document.getElementById("showaccesstab")
theaccessfile=theaccess_choose.value
set accessclass=new getsqlinfo
call accessclass.access_getactiveconnection(theaccessfile)
str="連接串是:" & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & theaccessfile & "<br />"
tabname=accessclass.tablename
str=str & "請選擇你要的表" & "<br />"
for i=0 to ubound(tabname)-1
  str=str & "<input type='radio' name='tabnames' value='" & tabname(i) & "' />" & tabname(i) & "<br />"
next
str=str & "<a href='vbscript:showsql'>確定</a>"
theshow_accesstab.innerhtml=str
save_info.add "accessfile",accessclass
end function

function showsql
set thetabnames=document.getElementsByName("tabnames")
set theshowaccesssql=document.getElementById("showaccesssql")
for i=0 to thetabnames.length-1
if thetabnames(i).checked=true then
thetabname=thetabnames(i).value
end if
next
str="insert語句:" & accessinsertsqlstr(thetabname) & "<br />"
str=str & "update語句:" & accessupdatesqlstr(thetabname)
theshowaccesssql.innerhtml=str

end function

function judge_charnum(thefldname,thefldtype)
if thefldtype>100 then
str="'" & """" & " & " & thefldname & " & " & """" &  "'"
else
str="""" & " & " & thefldname & " & " & """"
end if
judge_charnum=str
end function

function judge_charnumfinal(thefldname,thefldtype)
if thefldtype>100 then
str="'" & """" & " & " & thefldname & " & " & """" &  "'" & """"
else
str="""" & " & " & thefldname
end if
judge_charnumfinal=str
end function

function accessupdatesqlstr(thetabname)
dim fieldnames
fieldnames=getfieldname(thetabname)
str="""" & "update " & thetablename & "set "
for i=0 to ubound(fieldnames)-1
 if i<>ubound(fieldnames)-1 then
   str=str & fieldnames(i)("name") & "=" & judge_charnum(fieldnames(i)("name"),fieldnames(i)("type")) 
else
  str=str & fieldnames(i)("name") & "=" & judge_charnumfinal(fieldnames(i)("name"),fieldnames(i)("type"))
 end if
next

accessupdatesqlstr=str
end function

function accessinsertsqlstr(thetabname)
dim fieldnames
fieldnames=getfieldname(thetabname)
str="""" & "insert into " & thetablename & "("
for i=0 to ubound(fieldnames)-1
 if i<>ubound(fieldnames)-1 then
  str=str & fieldnames(i)("name") & ","
 else
   str=str & fieldnames(i)("name")
  end if
next
str=str & ")" & " values("
for i=0 to ubound(fieldnames)-1
if i<>ubound(fieldnames)-1 then
  str=str & judge_charnum(fieldnames(i)("name"),fieldnames(i)("type")) & ","
 else
   str=str & judge_charnum(fieldnames(i)("name"),fieldnames(i)("type"))
  end if
next
str=str & ")" & """"
accessinsertsqlstr=str
end function

function getfieldname(thetabname)
dim a
'alert(thetabname)
a=save_info("accessfile").getfieldinfo(thetabname)
'alert(isArray(a))
getfieldname=a
end function
</script>

</head>
<body>
<div id="start">
   選擇access數據庫:<input type='radio' name='choose_accorsql' value='access' /><br />
   選擇sql數據庫:<input type='radio' name='choose_accorsql' value='sql' /><br />
</div>
<div id="writeaccesschoose">
選擇access文件:<br />
<input type="file" id="showaccessurl" />
<a href="#">上一步</a>---<a href="vbscript:showaccesstab">下一步</a>
</div>
<div id="showaccesstab">
</div>
<div id="showaccesssql">
</div>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章