Nach viel Googeln, habe ich mit dem folgenden Makro, die ich hoffe, eine Verbindung zu einer Datenbank, eine vorhandene temporäre Tabelle löschen und dann erstellen ein neue (füllen Sie sie aus und sehen Sie sich die Ergebnisse an).Erstellen einer temporären Tabelle in SQL Server 2008 mit einem Excel-Makro (ADODB)
Dim adoCn As ADODB.Connection
Dim adoRs As ADODB.Recordset
Dim adoCm As ADODB.Command
Dim strSQL As String
Set adoCn = New ADODB.Connection
With adoCn
.ConnectionString = "Provider=SQLOLEDB;" & _
"Initial_Catalog=XXX;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=True;" & _
"Data Source=XXX;" & _
"Extended Properties='IMEX=1'"
.CursorLocation = adUseServer
.Open
End With
Set adoCm = New ADODB.Command
With adoCm
Set .ActiveConnection = adoCn
.CommandType = adCmdText
.CommandText = "IF OBJECT_ID('tempdb..#AgedProducts') IS NOT NULL DROP TABLE #AgedProducts"
.Execute
.CommandText = "CREATE TABLE #AgedProducts " & _
"(Source_Order_Number VARCHAR(255)) " & _
"INSERT INTO #AgedProducts VALUES ('AB-123-456') " & _
"SELECT * FROM #AgedProducts (NOLOCK) "
.Execute
End With
Set adoRs = New ADODB.Recordset
With adoRs
Set .ActiveConnection = adoCn
.LockType = adLockBatchOptimistic
.CursorLocation = adUseServer
.CursorType = adOpenForwardOnly
.Open "SET NOCOUNT ON"
End With
adoRs.Open adoCm
MsgBox "Recordset returned...", vbOKOnly
While Not adoRs.EOF
Debug.Print adoRs.Fields(0).Value
adoRs.MoveNext
Wend
adoCn.Close
Set adoCn = Nothing
Set adoRs = Nothing
Wenn ich die Abfrage ausführen ich die folgende Fehlermeldung erhalten:
Run-time error '-2147217887 (80040e21)':
The requested properties cannot be supported
Die NOCOUNT
Linie kommt aus http://support.microsoft.com/kb/235340 (so viel von dem obigen Code der Fall ist). Ich habe IMEX=1
hinzugefügt, um Bestellnummer zu berücksichtigen, könnte mehrere Typen dort haben, aber ich bezweifle, dass dort das Problem geschieht.
Jede Hilfe wird sehr geschätzt!
Danke dafür - funktioniert ein Leckerbissen. Weißt du, warum das funktioniert, anstatt meinen ersten Versuch? –
Recodset muss wissen, was darin enthalten sein sollte, daher müssen Sie SQL-Code bereitstellen. Schau mal, hier http://support.microsoft.com/kb/168336. Es gibt verschiedene Methoden, um das Recodset zu öffnen. Einen schönen Tag noch. – dee