2012-03-16 6 views
0

N'a pas trouvé de réponse via Google. J'ai besoin d'exécuter ce code à partir de SQL Server stocké proc.Nombre de colonnes de test SQL Server openrowset() dans la table MS Access

J'ai un dossier avec plus de 100 dbs d'accès avec une table appelée tblReports. Certains db d'accès ont une colonne supplémentaire dans tblReports appelée AdminReport.

Je dois capturer la colonne supplémentaire si elle existe, donc ... J'ai besoin de tester combien de colonnes sont dans tblReports afin que je puisse utiliser une instruction if/else dans le sp pour générer le sql correct basé sur le nombre de colonnes. J'aimerais lire votre avis, voici l'extrait pertinent.

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' 

Répondre

0

L'approche standard consisterait à lier à tblReports en appelant DoCmd.TransferDatabase. Vous seriez alors en mesure de compter le nombre de champs dans la table, avant de vous lancer dans un SQL. À la fin du look, vous devez supprimer le lien en appelant DoCmd.DeleteObject.

Il semble certainement plus propre que ce que vous essayez de faire.

+0

Je le fais à partir de SQL Server, pas MS Access. Voulez-vous dire que je peux émettre une commande VBA à partir de SQL Server? En utilisant openrowset()? –

+0

Désolé, je n'ai pas réalisé que vous essayez de le faire à partir de SQL Server. Il serait certainement plus facile de le faire à partir de VBA si, si c'est une option. –

+0

Oui, j'avais besoin de performance (fonctionne contre plus de 100 bases de données en 20 secondes) et de réutilisabilité. J'ai le sp tout prêt à partir (et travailler si j'ignore la dernière colonne/supplémentaire). –