簡體   English   中英

Excel 2003 VBA寫入SQL Server 2000 ADO

[英]Excel 2003 VBA Write to SQL Server 2000 ADO

我們正在努力更改現有的excel表單,以將記錄發送到我們的SLQ服務器。

我們已經成功完成了使用DSN和ODBC清理捕獲數據並將數據寫入服務器的代碼。

scn = dsn=ODBC123

我們的目標用戶(其中​​有很多)正在使用excel 2003,並且每個終端上的ODBC連接都是不實際的。

這是我第一次使用ADODB。

在添加UID和通行證之前,我曾絆倒我的badSQL消息,但沒有從服務器收到錯誤消息。

現在,我得到運行時錯誤“ -2147467559(80004005)”:自動化錯誤未指定錯誤

你們中的一位女士和/或先生們會不會看一下並提供一些指導?

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ssql As String

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Const scn As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
    "Persist Security Info=False;" & _
    "Initial Catalog="DB on Server";" & _
    "Data Source="Server Name" & _ 
    "User ID=Form;Password=nope;"

ssql = "sql statment that writes a record to a table using info in the excel form," & _
" writen in vb that has worked through an odbc"

With cn
    .CursorLocation = adUseClient
    .Open scn
    .CommandTimeout = 0
    Set rst = .Execute(ssql)
End With
    On Error GoTo badsql:

rs.Open ssql, cn, adOpenStatic, adLockOptimistic
On Error GoTo badsql:

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing


MsgBox ("This record was updated in the database and documented for" & _
" processing. Please close this workbook.")


badsql:
    MsgBox ("This record was not processed please resubmit.")
    Exit Sub'

我們似乎同時將rstrs作為Recordset對象。 我沒有看到一個聲明rst在提供的代碼。

無論如何, ssql的查詢字符串將運行兩次。 一旦執行,結果(如果有的話)返回rst rs打開的另一時間。

您可能只想運行一次查詢字符串,並且由於它似乎是INSERT類型的查詢,因此您可能想使用cn.Execute而不是rs.Open

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM