MS Access表中的SQL Server openrowset()测试列计数

时间:2012-03-16 23:53:32

标签: tsql ms-access linked-server openrowset

尚未通过Google找到答案。我需要从SQL Server存储过程执行此代码。

我有一个包含100多个访问dbs的文件夹,其中包含一个名为tblReports的表。某些访问数据库在tblReports中有一个名为AdminReport的额外列。

如果存在,我需要捕获额外的列,因此......我需要测试tblReports中有多少列,以便我可以在sp中使用if / else语句根据列生成正确的sql计数。

我很想读你的想法,这是相关的片段。

set @sql = 'Insert into CustomerServiceIntranet.dbo.ReportCriteria
            (UserInfo,RptNbr,RptType,RptDesc,GroupCDBrk,ClientCDBrk,CategoryCDBrk,
            UserIDBrk,UnitCDBrk,WrkTypeBrk,StatCDBrk,StatDatBrk,
            ExperBrk,GroupList,ClientList,CategoryList,UserIDList,BusAreaList,
            WrkTypList,StatusList,QueueList,ReviewDay,ReviewDayNA,
            ErrorImpact,DateRange,DataSource,RptPathFile)' 
        + 'Select '''+ @userfilename + ''', ors.* ' 
        + 'from (select * From Openrowset(''Microsoft.ACE.OLEDB.12.0'',''' 
        + @CurrentName 
        + ''';''Admin'';,''select * from tblReports'')) ors'

1 个答案:

答案 0 :(得分:0)

标准方法是通过调用DoCmd.TransferDatabase链接到tblReports。然后,您可以在启动任何SQL之前计算表中字段的数量。在外观结束时,您将通过调用DoCmd.DeleteObject来删除链接。

它看起来比你想做的更整洁。