代码如下:
Dim tn$
Set tablename = maincn.OpenSchema(adSchemaTables)
Do Until tablename.EOF
tn = tablename!table_name
If tn = "..表" Then
...
End If
tablename.MoveNext
Loop
这段代码在安装SQL服务器上机器上执行时未见异常,但在客户端机器 上运行时会出现一个"类型错误"的提示.参阅相关文档,有如下的说明:
远程数据服务用法 OpenSchema 方法在客户端 Connection 对象上无效。
注意 在 Visual Basic 中,在由 Connection 对象的 OpenSchema 方法所返回的 Recordset 中有 4 字节无符号整型 (DBTYPE UI4) 的列无法与其他变量比较。有关 OLE DB 数据类型的详细信息,请参阅“Microsoft OLE DB 程序员参考”的第十章和附录 A。
不知如何理解!请各位高手给我一个解决的方法.谢谢!
Dim tn$
Set tablename = maincn.OpenSchema(adSchemaTables)
Do Until tablename.EOF
tn = tablename!table_name
If tn = "..表" Then
...
End If
tablename.MoveNext
Loop
这段代码在安装SQL服务器上机器上执行时未见异常,但在客户端机器 上运行时会出现一个"类型错误"的提示.参阅相关文档,有如下的说明:
远程数据服务用法 OpenSchema 方法在客户端 Connection 对象上无效。
注意 在 Visual Basic 中,在由 Connection 对象的 OpenSchema 方法所返回的 Recordset 中有 4 字节无符号整型 (DBTYPE UI4) 的列无法与其他变量比较。有关 OLE DB 数据类型的详细信息,请参阅“Microsoft OLE DB 程序员参考”的第十章和附录 A。
不知如何理解!请各位高手给我一个解决的方法.谢谢!
使用这种方式
rs.open Query,conn
里面保存了包括表、存储过程等对象,其中对TYPE字段代表对象类型,NAME代表对象名称
用户表的类型为'U'
这一行"对象未能发现"这种错误!
dim maincn as new adodb.connection
dim tablename as new adodb.recordset
Set tablename = maincn.execute("Select * from sysobjects where xtype='U'")
或者
tablename.open "Select * from sysobjects where xtype='U'",maincn,1,3
Do Until tablename.EOF
tn = tablename.fields("name")
If tn = "..表" Then
...
End If
tablename.MoveNext
Loop
系统对象表在master库中。所以连接的数据库应是master。
Dim tn$
Set tablename = maincn.OpenSchema(adSchemaTables)
Do Until tablename.EOF
tn = tablename!table_name
If tn = "..表" Then
...
End If
tablename.MoveNext
Loop楼主写的是在access中取得表名的方法
但你实际使用的显然是sql server,在sql server中要取得表名要用online的方法
sysobjects是sql server的数据库中的一个系统表,访问它可以得到你想要的表名。