1

後でSQLServer2008テーブルに転送およびリンクされるローカルテーブルでAccess2003を使用しています。次のコードを使用していますが、cnn.Execute行に「ランタイムエラー3704:オブジェクトが閉じているときの操作は許可されていません」というエラーが表示されます。

sub test()
On Err GoTo Err_Sub
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset

    Dim str As String
    Dim strSQL As String

    'Open a connection.
    Set cnn = New ADODB.Connection     
    cnn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & CurrentDb.Name & ";" & _
        "Persist Security Info=False"

    strSQL = Me.RecordSource
    str = Mid(strSQL, InStr(strSQL, "Where "))
    strSQL = "Update  myTable SET Active = False " & str

    Set rs = cnn.Execute(strSQL)

    If Not rs Is Nothing Then rs.Close

Exit_Sub:
    Set rs = Nothing
    Exit Sub

Err_Sub:
    MsgBox Err.Description
    Resume Exit_Sub
End Sub
4

4 に答える 4

15

このエラーも発生しました(私の場合、ストアドプロシージャを使用して情報を取得しています)。いくつかの変更を加えたため、実行が誤動作しました。

SET NOCOUNT ONストアドプロシージャの最初のステートメントとして配置すると、エラーは消えました。

于 2013-03-08T16:55:14.330 に答える
2

オブジェクトCurrentProject.Connection.Execute strSQLを宣言する代わりに試してください。cnn

于 2012-05-31T19:14:08.597 に答える
1

それは簡単です。追加する必要があります

cnn.Open

cnn.Executeの前のどこかで、呼び出すことを忘れないでください

cnn.Close
Set cnn = nothing

潜水艦を出る前に

于 2012-05-31T17:56:08.713 に答える
-1

私も最近この問題に遭遇しました。SQLクエリ「Pit#」の列の1つに名前を付けていたため、エラーが発生しました。このエラーが発生したのは#だったと確信しています。これが将来誰かに役立つことを願っています。

ありがとう-シェル

于 2020-09-29T22:54:34.407 に答える