J'essaie d'utiliser SQL dynamique qui va analyser dans le répertoire de fichiers dans un OpenRowSet (@Database). À l'heure actuelle, j'ai un répertoire codé en dur pour le fichier Excel. Le résultat final sera de créer une application qui prendra le fichier de l'utilisateur et l'importera dans la table SQL. De là, je vais fusionner et Match/Not Matching (qui fonctionne correctement). C'est la dernière pièce du puzzle. Je ne sais pas pourquoi le message d'erreur est à la recherche de mon dossier dans "C: \ WINDOWS \ system32 \"SQL - SQL dynamique à l'intérieur de OpenRowSet puis inséré dans la table temporaire
Mes messages d'erreur actuels sont les suivants:
fournisseur OLE DB « Microsoft.ACE.OLEDB. 12.0 "pour le serveur lié" (null) "message retourné" Le moteur de base de données Microsoft Access n'a pas pu trouver l'objet 'C: \ WINDOWS \ system32 \ C: \ Utilisateurs \ GrimRieber \ Desktop \ isi test.xlsx'. Si 'C: \ WINDOWS \ system32 \ C: \ Users \ GrimRieber \ Desktop \ isi test.xlsx' n'est pas un objet local, vérifiez votre connexion réseau ou contactez le serveur. administrateur.".
Msg 7303, niveau 16, état 1, ligne 1
Impossible d'initialiser l'objet source de données du fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" pour le serveur lié "(null)".
code:
declare @Database varchar(max)
select @Database = 'C:\Users\GrimRieber\Desktop\isi test.xlsx'
declare @sql varchar(Max)
select @sql = 'SELECT * FROM OPENROWSET(
''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0; Database= ' + @Database + '; HDR=YES; IMEX=1'',
''SELECT [Vendor],[VendorName],[Material],[MaterialName],[Supplier Stock Num],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[Year]FROM [Data$]''
)'
IF OBJECT_ID('tempdb.dbo.#TempScorecardInventorySold', 'U') IS NOT NULL
DROP TABLE #TempScorecardInventorySold;
CREATE TABLE #TempScorecardInventorySold
(
[Vendor] [varchar](50) NULL,
[VendorName] [varchar](50) NULL,
[Material] [varchar](50) NULL,
[MaterialName] [varchar](50) NULL,
[Supplier Stock Num] [varchar](50) NULL,
[01] [nVarchar](50) NULL,
[02] [nVarchar](50) NULL,
[03] [nVarchar](50) NULL,
[04] [nVarchar](50) NULL,
[05] [nVarchar](50) NULL,
[06] [nVarchar](50) NULL,
[07] [nVarchar](50) NULL,
[08] [nVarchar](50) NULL,
[09] [nVarchar](50) NULL,
[10] [nVarchar](50) NULL,
[11] [nVarchar](50) NULL,
[12] [nVarchar](50) NULL,
[Year] [Int] Null
) ON [PRIMARY];
INSERT INTO [dbo].#TempScorecardInventorySold ([Vendor],[VendorName],[Material],[MaterialName],[Supplier Stock Num],[01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12],[Year])
EXECUTE(@sql)
Nous vous remercions de votre réponse rapide! L'OPENDATASOURCE a corrigé les problèmes que j'avais. Je devais juste ajouter une coche à la fin de Data $ et tout a fonctionné. –
Super! Heureux d'avoir pu aider. Mais c'est intéressant le premier ne fonctionne pas. Peut être un paramètre/une version. – Parfait