0

我们正在努力更改现有的 Excel 表单以向我们的 SLQ 服务器提供记录。

我们已经使用 DSN 和 ODBC 清理捕获数据并将数据写入服务器的代码取得了成功。

scn = dsn=ODBC123

我们的目标用户(其中​​有很多)正在使用 excel 2003,每个终端上的 ODBC 连接是不切实际的。

这是我第一次尝试使用 ADODB。

我正在触发我的 badSQL 消息,但在添加 UID 和 Pass 之前没有从服务器收到错误消息。

现在我收到运行时错误“-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'
4

1 回答 1

1

我们似乎同时拥有rstrs作为Recordset对象。rst我在提供的代码中没有看到声明。

在任何情况下,查询字符串ssql都会运行两次。一旦它被执行并且结果(如果有的话)返回到rst. 其他时间什么时候rs打开。

您可能只想运行一次查询字符串,并且由于它似乎是一个INSERT-type 查询,您可能希望使用cn.Execute而不是rs.Open

于 2013-08-20T22:20:22.937 回答