MS-Access 2007 で単純なパラメーター化された挿入を実行しようとしていますが、次のエラー (3708) が引き続き発生しますADODB.Parameters
。
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
s'
3 つのフィールドに挿入される 3 つのパラメーターがあります。次のタイプがあります。
- クエリ名: TEXT (50)
- db_id: 数値 (長整数)
- query_text: メモ
db_id
は問題なく挿入されますが、他の 2 つのテキスト フィールドでは上記のエラーが発生します。
以下は私の簡単なサンプルコードです:
Sub testz()
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
Dim adoCMD As ADODB.Command
Dim adoRS As ADODB.Recordset
Dim strSQL As String
Dim lRecordsAffected As Long
On Error GoTo Err_Insert
strSQL = "INSERT INTO queries (query_name, db_id, query_text) VALUES (?, ?, ?)"
Set adoCMD = New ADODB.Command
With adoCMD
Dim test As String
test = "tetws"
.ActiveConnection = conn
.CommandType = adCmdText
.CommandText = strSQL
.Parameters.Append .CreateParameter("x1", adVarChar, adParamInput) ' Doesn't work - MS ACCESS Text field
.Parameters.Append .CreateParameter("x2", adInteger, adParamInput) ' This works - Numeric field
.Parameters.Append .CreateParameter("x3", adLongVarChar, adParamInput) ' This doesn't work MS ACCESS Memo field.
.Parameters("x1").Value = test
.Parameters("x2").Value = 56
.Parameters("x3").Value = test
adoCMD.Execute adExecuteNoRecords
End With
If lRecordsAffected = 0 Then
Debug.Print ("------------------------")
Debug.Print ("ERROR QUERY not inserted:")
Debug.Print ("database id: " & id)
Debug.Print ("query name: " & tblName)
Debug.Print ("strSQL: " & qryTxt)
Debug.Print ("------------------------")
Else
End If
Exit_Insert:
Set adoCMD = Nothing
Set adoRS = Nothing
Exit Sub
Err_Insert:
Debug.Print "----------------"
Debug.Print "BEGIN: Err"
If err.Number <> 0 Then
Msg = "Error # " & Str(err.Number) & " was generated by " _
& err.Source & Chr(13) & "Error Line: " & Erl & Chr(13) & err.Description
'MsgBox Msg, , "Error", err.HelpFile, err.HelpContext
Debug.Print Msg
End If
Resume Exit_Insert
End Sub
次のリファレンスでは、データベース タイプ s のフィールドのMEMO
パラメータ タイプは でadLongVarChar
あり、そのタイプ データベース タイプのタイプTEXT
は である必要があると述べていますadVarChar
。