Po zakończeniu wielu czynności Google zakończono następujące makro, które, jak miałem nadzieję, połączyłoby się z bazą danych, upuszczenie istniejącej tabeli tymczasowej, a następnie utworzenie nowy (wypełnić go i wyświetlić wyniki).Tworzenie tabeli tymczasowej w programie SQL Server 2008 przy użyciu makra programu Excel (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
Kiedy uruchomić kwerendę pojawia się następujący komunikat o błędzie:
Run-time error '-2147217887 (80040e21)':
The requested properties cannot be supported
Linia NOCOUNT
pochodzi z http://support.microsoft.com/kb/235340 (podobnie jak wiele z powyższym kodzie). Dodałem IMEX=1
, aby wziąć pod uwagę, że numer zamówienia może mieć wiele typów, ale wątpię, że tam właśnie pojawia się problem.
Każda pomoc jest bardzo doceniana!
Dzięki za to - działa uczta. Czy wiesz, dlaczego to działa zamiast mojej pierwszej próby? –
Recodset musi wiedzieć, co powinno w nim być, więc musisz podać kod SQL. Zobacz np. tutaj http://support.microsoft.com/kb/168336. Istnieją różne metody otwierania rekodsetu. Miłego dnia. – dee