Microsoft Access 掲示板

Error#: 3134 INSERT INTO ステートメントの構文エラーです。 / 7

20 コメント
views
4 フォロー
7
wazawaza 2022/06/16 (木) 12:08:25

hatenaさん
ご丁寧な解説、本当に助かります!

前回相談にのって頂いたdbも、最初このSQLで躓き
別の本に載っていた「recordset.AddNew」で試したところ、
上手くいったので、もしや?と思っておりましたが
その“もしや”をご提案いただき、やっぱり!となりました。

さて、早速実践してみましたが、エラーです。
実行時エラー’2465’:
指定した式で参照されている’L0000002'フィールドが見つかりません。

下の文がデバックで黄色になります。
fld.Value = Me(依頼ID).Value

間違っていますね・・・😅
今現在、下記内容になっております


'##############################
'### レコード移動時のID採番 ###
'##############################

Private Sub Form_Current()

    Me.btn最新ID取得.Enabled = True  '「btn最新ID取得」を使用可能に
    Me.btn追加.Enabled = False       '「btn追加」を使用不可に(最新ID取得に導く仕掛け)
    
     Const prefix As String = "L"  '「laminate」の頭文字 "L"
    
    Dim maxID As String
    maxID = DMax("依頼ID", "T_依頼")  '最終IDを取り出す
    
    Dim lastNum As Long
    lastNum = Replace(maxID, prefix, "")  '最終IDから頭文字"L"を除き、数値型へ代入する
    
    Dim newID As String
    newID = prefix & Format(lastNum + 1, "0000000")  '+1して桁を揃えて頭文字"L"と結合
    
    Me.依頼ID.DefaultValue = "'" & newID & "'"  '既定値へ代入
End Sub

'##########################
'### 初期化プロシージャ ###
'##########################

Private Sub initializeForm()       '初期化

    Me.依頼日.Value = Null              '「依頼日」をクリア
    Me.依頼者.Value = Null              '「依頼者」をクリア
    Me.希望処置.Value = Null            '「希望処置」をクリア
    Me.WNo.Value = Null                 '「WNo」をクリア
    Me.W_No.Value = Null                '「W_No」をクリア
    Me.W_Noロット.Value = Null          '「W_Noロット」をクリア
    Me.品名.Value = Null                '「品名」をクリア
    Me.補足説明.Value = Null            '「補足説明」をクリア
    
    Dim i As Long
    For i = 1 To 10
        Me("詳細ID" & i).Value = Null           '「詳細ID」をクリア
        Me("ロット番号" & i).Value = Null       '「ロット番号」をクリア
        Me("ロット枝" & i).Value = Null         '「ロット枝」をクリア
        Me("依頼理由_1" & i).Value = Null       '「依頼理由_1」をクリア
        Me("依頼理由_2" & i).Value = Null       '「依頼理由_2」をクリア
        Me("依頼理由_3" & i).Value = Null       '「依頼理由_3」をクリア
        Me("巻き長さ" & i).Value = Null         '「巻き長さ」をクリア
        Me("詳細補足説明" & i).Value = Null     '「詳細補足説明」をクリア
    Next i
    
    Me.btn最新ID取得.Enabled = True        '「btn最新ID取得」を使用可能に
    Me.btn追加.Enabled = False             '「btn追加」を使用不可に
    Me.btn閉じる.Enabled = True            '「btn閉じる」を使用可能に
    Me.依頼ID.Enabled = True               '「依頼ID」を使用可能に
End Sub


'##############################################
'### 「txtW_No」「txt品名」に対する入力補助 ###
'##############################################

Private Sub WNo_AfterUpdate()    '「cmbW_No」の更新後処理
    W_No.Value = WNo.Column(7)   '「W_No」に7列目を表示。編集不可で設定中
    品名.Value = WNo.Column(2)   '「品名」に2列目を表示。編集不可で設定中
End Sub

Private Sub btn追加_Click()
    If IsNull(Me.依頼者.Value) Or IsNull(Me.希望処置.Value) _
    Or IsNull(Me.W_No.Value) Then
      MsgBox "必要項目が入力されていません", vbInformation, "確認"
      Exit Sub
    End If
    
    Dim rs As DAO.Recordset, fld As DAO.Field
    Set rs = CurrentDb.OpenRecordset("T_依頼")
        rs.AddNew
        For Each fld In rs.Fields
         fld.Value = Me(依頼ID).Value
         fld.Value = Me(依頼日).Value
         fld.Value = Me(依頼者).Value
         fld.Value = Me(W_No).Column(2)
         fld.Value = Me(W_Noロット).Value
         fld.Value = Me(品名).Value
         fld.Value = Me(希望処置).Value
         fld.Value = Me(補足説明).Value
    Next
    rs.Update
    rs.Close
    
    Set rs = CurrentDb.OpenRecordset("T_依頼詳細")
    Dim i As Long
    For i = 1 To 10
      If Not IsNull(Me("依頼理由_1" & i).Value) Then
        rs.AddNew
        For Each fld In rs.Fields
           fld.Value = Me("依頼ID" & i).Value
           fld.Value = Me("ロット番号" & i).Value
           fld.Value = Me("ロット枝" & i).Value
           fld.Value = Me("依頼理由_1" & i).Column(1)
           fld.Value = Me("依頼理由_2" & i).Column(1)
           fld.Value = Me("依頼理由_3" & i).Column(1)
           fld.Value = Me("巻き長さ" & i).Value
           fld.Value = Me("詳細補足説明" & i).Value
           fld.Value = Now
        Next
        rs.Update
      End If
    Next i
    rs.Close

    MsgBox "追加しました", vbInformation, "完了"
End Sub

通報 ...