我想在VB程序执行时建立一个库或表,为避免下次重复建立相同的库或表而产生程序执行错误,是否能用一个“存在有相同库或表的判断语句”来实现,我不知如何写此语句,请各位朋友指点,谢谢!!!
另外,记录的.Absoluteposition属性代表什么意思,恳请告知,谢谢!!!

解决方案 »

  1.   

    Dim cnn As New ADODB.Connection
        Dim cat As New ADOX.Catalog
        Dim i As Integer
        cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source= c:\Biblio.mdb;"
        Set cat.ActiveConnection = cnn
        For i = 1 To cat.Tables.Count - 1
             Debug.Print cat.Tables(i).Name
        Next
    上面的代码可 得到所有的表名。  ADOX 库简介: Microsoft® ActiveX® Data Objects Extensions for Data Definition Language and SecurityCatalog 表示一个数据库Dim cat as new Catalog
    Catalog.ActiveConnection = "OLEDB 数据源连接串..."Catalog.Tables  属性表示数据库中表集合. 你可以搜索这个表集合以确定是否存在指定的表Catalog.Views 属属性表示数据库中视图集合. 你可以搜索这个视图集合以确定是否存在指定的视图Table.Columns 属性表示列集合, 你可以搜索这个列集合以确定是否存在指定的列还有 Catalog.Procedures 性性表示存储过程集合, Table.Indexes 表示 索引集合等等
    .Absoluteposition
    指示 Recordset 对象的当前记录的序号位置。
      

  2.   

    使用ADOX来查询数据库结构,但是有的数据库支持不是太好。
    如果是SQL Server,你可以在SysObject表里查询新建的对象是否存在。
      

  3.   

    我的办法是访问库和表,拦截错误。例如(判断表的存在):On Error Goto ErrHandler
    '建立连接和访问数据库表
    '......
    Exit SubErrHandler:
        If Err.Number = 库不存在引起的错误号 Then
           '建立数据库
           '......
        End If
        If Err.Number = 表不存在引起的错误号 Then
           '建立数据库表
           '......
        End If
        Resume
      

  4.   

    如果是SQL Server,你可以在SysObject表里查询新建的对象是否存在。
      

  5.   

    SQL中判断一个表存在:
    'Connect_P 是一个连接
    Connect_P.Execute "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Ut_Code]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) "
    Connect_P.Execute "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'KFGL')"

    例:
    '=======================================================================
    'ALTER TABLE  表结构修改过程,判断如果不存在SBPB或ZXPB字段就增加这两个字段,有就不添加。
    '=======================================================================Connect_P.Execute "if not exists (SELECT a.name as Tab,b.name as ZD FROM syscolumns b,sysobjects a where a.id=b.id and a.name='Tab_PM' and b.name='SBPB') ALTER TABLE Tab_PM ADD SBPB bit DEFAULT 0 WITH VALUES "
    Connect_P.Execute "if not exists (SELECT a.name as Tab,b.name as ZD FROM syscolumns b,sysobjects a where a.id=b.id and a.name='Tab_PM' and b.name='ZXPB') ALTER TABLE Tab_PM ADD ZXPB bit DEFAULT 0 WITH VALUES "
      

  6.   

    判断一个库存在
    Connect_P.Execute "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'KFGL')"
      

  7.   

    Connect_P.Execute "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'KFGL')"语句在http://search.csdn.net/Expert/topic/2527/2527544.xml?temp=.9001886
    这个上头有详细的说明