Ich habe diese Openrowset-Abfrage, wo ich einen Pfad übergeben kann, um die richtige Excel-Datei zu erhalten. Ich kann nicht die genaue Anzahl der Angebote und/oder die TypkonvertierungÜbergeben einer Date-Variable in einer Openrowset-Abfrage
Ich muss eine WHERE
Anweisung übergeben, um ein bestimmtes Datum in der Tabelle zu erhalten. Ich komme aus VBA, wo Sie 2 Zitate und 2 & setzen und Sie sind fertig. Es scheint, dass SQL Hunderte von ihnen benötigt! (Wenn jemand einen Link zu einer Online-Universität zu SQL hat Zitate, die sehr geschätzt werden würden)
set @sql1 = 'select *
FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',
''Excel 12.0;Database=' + @filePath1 + '' + ';' + '''' + ',
''Select * from [Sheet1$] '''+')'
exec(@sql1)
Ich mag würde WHERE DATE = @PnLDate
dieser Methode: ' Satz @PnLDate = konvertieren (nvarchar (max), @ PnLDate) Satz @ sql1 = 'select * FROM OPENROWSET (' 'Microsoft.ACE.OLEDB.12.0 '', '' Excel 12.0; Database = '+ @ filePath1 + ';'', '' Select * from [Sheet1 $] WHERE dDate = '+ @PnLDate +' '')‘ ' I Erhalte diesen Fehler: Die Datentypen nvarchar (max) und date sind im add-Operator inkompatibel. – Rich
der Fehler kommt Form, dass @PnLDate in eine Zeichenfolge konvertiert werden muss, um zufrieden zu sein. (Es gibt nur wenige Dinge, die der SQL-Server automatisch mit seinen Typen verknüpft, datetime ist keine.). Beachten Sie auch, dass die resultierende Zeichenfolge ein gültiger SQL-Satz sein muss. Der Fall, der zu Ihrem Fall führen könnte, sollte als "DDate = 12/31/2015" gelesen werden, wobei die notwendigen Zitate um die Datumskonstante fehlen. Sehen Sie die Konvertierung in meinem bearbeiteten Beispiel und die hinzugefügten Anführungszeichen zu sorround –
Vielen Dank für Ihre Hilfe, aber ich habe kein Glück mit diesem Ich ändere den Typ für 'DECLARE @PnLDate varchar (25)' Dann setze ich die Variable wie dies: 'set @PnLDate = 08/01/2014' Dann habe ich Ihre Abfrage verwendet und ich bekomme dies: _ Kann nicht die Abfrage ausführen" Select * von [Sheet1 $] wo DATE = "08-01-2014" "OLE DB-Provider ich habe auch versucht, die doppelten Anführungszeichen zu entfernen, und es funktioniert immer noch nicht – Rich