Количество тестовых столбцов в SQL Server openrowset () в таблице MS Access - PullRequest
0 голосов
/ 17 марта 2012

Не нашли ответа через Google. Мне нужно выполнить этот код из хранимой процедуры SQL Server.

У меня есть папка с более чем 100 базами данных доступа с таблицей tblReports. Некоторые базы данных доступа имеют дополнительный столбец в tblReports, который называется AdminReport.

Мне нужно захватить дополнительный столбец, если он существует, поэтому ... Мне нужно проверить, сколько столбцов в tblReports, чтобы я мог использовать оператор if / else в sp для генерации правильного 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 голосов
/ 17 марта 2012

Стандартным подходом будет ссылка на tblReports путем вызова DoCmd.TransferDatabase. После этого вы сможете посчитать количество полей в таблице, прежде чем приступать к любому SQL. В конце просмотра вы удалите ссылку, вызвав DoCmd.DeleteObject.

Это, конечно, выглядит аккуратнее, чем то, что вы пытаетесь сделать.

...