登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

Access中判断表是否存在  

2014-05-02 14:24:57|  分类: SQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//转
SQL Server:
SELECT * FROM sysobjects WHERE name='tablename'
 Access:
SELECT * FROM msysobjects WHERE name='tablename'
 VB6中判断access时会出现错误:不能读取记录;在'msysobjects'上没有读取数据权限,可以用下面方法:
 'rs为打开的SQL Server记录集,con为打开的Access连接
Set rs = con.OpenSchema(adSchemaTables, Array(Empty, Empty, tablename, "Table"))
If Not RsTable.EOF Then
        MsgBox "表存在"
End If
========================================================================================
dim myTable : myTable="myTable8"        'myTable 要执行的表
dim myFields : myFields="myFields888"      'myFields 要执行的字段

''============================
''涵数名:CheckTable
''参 数:myTable 要判断的表
''作 用:判断数据库中是否存在指定的表
''============================
Function CheckTable (myTable)
'列出数据库中的所有表
dim rs,getTableName
set rs=conn.openSchema(20)
rs.movefirst
do Until rs.EOF
if rs("TABLE_TYPE")="TABLE" then getTableName=getTableName+rs("TABLE_NAME")&","
rs.movenext
loop
rs.close
set rs=nothing

'判断数据库中是否存在此表(下面两行代码使待比较表和指定表前后都加上豆号,以精确比较)
dim getTableName2,myTable2
getTableName2=","&getTableName '此字符串后面已经有豆号
myTable2=","&myTable&","
If instr(getTableName2,myTable2)<>0 Then
   CheckTable=1 '存在
else
   CheckTable=0 '不存在
end if

End Function


''============================
''涵数名:CheckFields
''参 数:myTable 要判断的表
''参 数:myFields 要判断的字段
''作 用:判断表中是否存在指定的字段
''============================
Function CheckFields (myTable,myFields)

'如果表存在继续执行,否则跳过
if CheckTable (myTable)=1 then
   dim rs,i,getFieldsName
   '列出表中的所有字段
   set rs=conn.execute("select * from "&myTable&"")
   for i=0   to rs.fields.count-1
    getFieldsName=getFieldsName+rs.fields(i).name & ","
   next
   rs.close
   set rs=nothing
end if

'判断表中是否存在此字段(下面两行代码使待比较字段和指定字段前后都加上豆号,以精确比较)
dim getFieldsName2,myFields2
getFieldsName2=","&getFieldsName '此字符串后面已经有豆号
myFields2=","&myFields&","
if instr(getFieldsName2,myFields2)<>0 Then
   CheckFields=1 '存在
else
   CheckFields=0 '不存在
end if
End function

'--------------------简单应用示例---------------
'在指定的表中,删除字段
'if CheckTable(myTable)=1 and CheckFields (myTable,myFields)=1 then:Conn.execute ("ALTER TABLE ["&myTable&"] DROP COLUMN "&myFields&"")

'如果表存在数据库中,删除表
'if CheckTable(myTable)=1 then:conn.execute ("DROP TABLE "&myTable&"")

'如果表不存在数据库中,建立表 (其中Id为自动编号的主键,……)
'if CheckTable(myTable)=0 then:conn.execute ("CREATE TABLE "&myTable&" (Id autoincrement(1,1) primary key, 字段A int, 字段B text)")

'在指定的表中,添加类型为varchar型、长度为20的字段……
'if CheckTable(myTable)=1 and CheckFields (myTable,myFields)=0 then:Conn.execute ("ALTER TABLE ["&myTable&"] ADD COLUMN "&myFields&" VARCHAR(20)")


========================================================================================
  评论这张
 
阅读(1806)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018