AccessVBA SQLにて'3219'が出てしまいます


HIRO Chan  2003-12-22 21:46:35  No: 110884

Function DATAset() As String
On Error GoTo err1
Dim msg As Integer
Dim DB1, DB2, DB3 As Database
Dim RC1, RC2, RC3, sql1, sql2 As DAO.Recordset
Dim DefQry As QueryDef
dim myid as integer

Set DB1 = CurrentDb
Set RC1 = DB1.OpenRecordset("table1", dbOpenDynaset)
Set RC2 = DB1.OpenRecordset("table2", dbOpenDynaset)
Set RC3 = DB1.OpenRecordset("table3", dbOpenDynaset)

MyId = Forms!MAIN_FRM1!ID.Value
If MyId < 1 Then
   GoSub Append_Rutine '<-略します
Else
   GoSub Update_Rutine
End If
   Exit Function
'--------------------------------------------------------------------Append_Rutine:
'--------------------------------------------------------------------
    略
Return
'--------------------------------------------------------------------Update_Rutine:
'--------------------------------------------------------------------Dim JCEC, SQLtxt As String
SQLtxt = "SELECT * FROM TABLE1 WHERE DEL_FLG = 0 AND ID = " & MyId
Set DefQry = DB1.CreateQueryDef("", SQLtxt)
Set sql1 = DefQry.OpenRecordset()
If sql1.RecordCount <> 0 Then
    Else
    Exit Function
End If
                      '↑正常
'業者名<String>
    If Forms!MAIN_FRM1!Name.Value <> "" Then
            SQLtxt = "UPDATE TABLE1  set mName = '" & Forms!MAIN_FRM1!NAME.Value & "' "
    Else:   SQLtxt = "UPDATE TABLE1  set mName = Null ": End If
    SQLtxt = SQLtxt & "where ID = " & MyId
    Set DefQry = DB1.CreateQueryDef("", SQLtxt)    
    Set sql1 = DefQry.OpenRecordset()
                     ↑  この命令を実行するとエラーになる


  2003-12-22 21:57:35  No: 110885

環境は?


a  2003-12-22 22:04:34  No: 110886

If Forms!MAIN_FRM1!Name.Value <> "" Then
            SQLtxt = "UPDATE TABLE1  set mName = '" & Forms!MAIN_FRM1!NAME.Value & "' "
    Else:   SQLtxt = "UPDATE TABLE1  set mName = Null ": End If

このIf文はどっちを通ってもエラーですか?


だっちゃん  2003-12-23 02:58:35  No: 110887

こんちは。

今回、HIRO  Chan さんが行いたいのは
SQLtxt に設定されたSQLを実行したいのでしょうか?

今回、

    Set sql1 = DefQry.OpenRecordset()

で、エラー"3219:無効な処理です。"ですがでるのは、
SQLtxtに設定されているSQL文が、ACCESSでいうアクションクエリーだからと思います。

SQL文を実行したいなら

    Set DefQry = DB1.CreateQueryDef("", SQLtxt)
    DefQry.Execute [任意のパラメータ]

だと思いますが・・・。

私の意識違いならごめんなさいです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加