Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从打开的ADO记录集中的字段提取表名(SQL SERVER/VBA)_Sql Server_Vba_Ado_Tablename - Fatal编程技术网

Sql server 从打开的ADO记录集中的字段提取表名(SQL SERVER/VBA)

Sql server 从打开的ADO记录集中的字段提取表名(SQL SERVER/VBA),sql-server,vba,ado,tablename,Sql Server,Vba,Ado,Tablename,如何从打开的ADO记录集中的字段中提取表名? 我可以使用.source属性返回select语句,但是如果我想知道字段与哪个表关联,我该如何做 i、 e.如果.source返回类似于从表1、表2中选择Foo、Boo、Shoo的值,我如何查询记录集以查看哪个表Boo来自 我的数据源是SQL Server 2005数据库,我使用的是VBA 7.0/VBA 6.0(两者都运行)没有直接的方法,因为记录集只表示查询的结果,而不知道后端的秘密。如果您现在想从哪个表中找到哪个字段,您必须首先从.source解

如何从打开的ADO记录集中的字段中提取表名? 我可以使用
.source
属性返回select语句,但是如果我想知道字段与哪个表关联,我该如何做

i、 e.如果
.source
返回类似于
从表1、表2中选择Foo、Boo、Shoo的值,我如何查询记录集以查看哪个表Boo来自


我的数据源是SQL Server 2005数据库,我使用的是VBA 7.0/VBA 6.0(两者都运行)

没有直接的方法,因为记录集只表示查询的结果,而不知道后端的秘密。如果您现在想从哪个表中找到哪个字段,您必须首先从.source解析SQL。如果在字段名前面有表名或快捷方式,则您将知道该表。如果没有,唯一的方法是检索每个表的附加记录集,并查看字段是否在其中。更复杂的是,如果源是服务器上的一个视图,并且您想知道原始表。因此,在上面的示例中,我需要创建一个函数,从
中提取每个字段名和每个表名。source
返回并循环每个字段,然后使用类似于
“从中选择顶部1*”的内容创建一个记录集&TABLENAME
,然后在字段名中循环查找匹配项。啊。那看起来很笨重,但我能做到。我想我只是希望有一个更优雅的解决方案。。。没有看到更聪明的解决方案。但同样:如果服务器使用视图,这也不起作用。您将没有机会确定基础表。这一点很好!对于我现在正在进行的项目,这不是一个问题,但是对于未来的项目,这肯定是一个问题。视图的唯一可能解决方案是如果您有权访问系统视图。其中一个包含中的所有视图定义。但这也可能很难,因为视图可以包含其他视图和函数。所以这在总体上是可能的,但需要付出很多努力。很好,现在这不是问题;-)顺便说一下:如果您有权访问系统视图,您也可以从中检索表列。。。因此,它只需要一个包含所有表和列的大型检索,而不是几个Select Top 1