Microsoft Access 掲示板

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

20 コメント
views
4 フォロー
16
wazawaza 2022/06/18 (土) 14:36:59

hirotonさん、ありがとうございます。
再度挑戦しました。
すると「パラメーターが少なすぎます。9を指定してください。」です。

Private Sub btn追加_Click()
    
   Dim rs As DAO.Recordset, fld As DAO.Field
   Dim strSQL As String
   strSQL = "SELECT 依頼ID AS txt依頼ID, 依頼日 AS txt依頼日, 依頼者 AS cmb依頼者, 作業長承認 AS cmb作業長承認, W_No AS txtW_No, W_Noロット AS txtW_Noロット, 品名 AS txt品名, 希望処置 AS cmb希望処置, 補足説明 AS txt補足説明 FROM T_依頼;"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    rs.AddNew
    For Each fld In rs.Fields
        fld.Value = Me(fld.Name).Value
    Next
    rs.Update

    strSQL = "SELECT 詳細ID As txt詳細ID, ロット番号 AS txtロット番号, ロット枝 AS cmbロット枝, 依頼理由_1 AS cmb1依頼理由, 依頼理由_2 AS cmb2依頼理由, 依頼理由_3 AS cmb3依頼理由, 巻き長さ AS txt巻き長さ, 詳細補足説明 AS txt詳細補足説明, T_依頼詳細"
    Set rs = CurrentDb.OpenRecordset(strSQL)    '←ここでエラー
    Dim i As Long
    For i = 1 To 10
        If Not IsNull(Me("cmb1依頼理由" & i).Value) Then
            rs.AddNew
            For Each fld In rs.Fields
                If Not ",依頼ID,最終更新日," Like "*," & fld.Name & ",*" Then
                    fld.Value = Me(fld.Name & i).Value
                End If
            Next
            '//レコード共通項目や計算結果を入れるものは個別に処理
            rs!依頼ID.Value = Me!txt依頼ID.Value
            rs!最終更新日.Value = Now
            rs.Update
        End If
    Next i
    rs.Close
    
    MsgBox "追加しました", vbInformation, "完了"
End Sub

hatenaさん、ありがとうございます。
実行時エラー’3022’は、同じ主キーで一生懸命、登録を試みてました😅
スミマセン😅😅

で、再度挑戦しました。
すると「バリアント型ではない変数にNull値を代入しようとしました」です。

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
    rs("依頼ID").Value = Me.依頼ID.Value
    rs("依頼日").Value = Me.依頼日.Value
    rs("依頼者").Value = Me.依頼者.Value
    rs("W_No").Value = Me.W_No.Value 'コンボボックスの連結列をフィールドのデータと合うものにしておく
    rs("W_Noロット").Value = Me.W_Noロット.Value
    rs("品名").Value = Me.品名.Value
    rs("希望処置").Value = Me.希望処置.Value
    rs("補足説明").Value = Me.補足説明.Value
    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

親テーブル「T_依頼」

進捗状況依頼ID依頼日依頼者作業長承認加工承認仕上承認生管承認W_NoW_Noロット品名希望処置補足説明
Yes/No型短いテキスト日付/時刻型短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト長いテキスト

子テーブル「T_依頼詳細」

詳細ID依頼IDロット番号ロット枝依頼理由_1依頼理由_2依頼理由_3巻き長さ詳細補足説明検品作業者検品フィードバックPEコメント最終更新日
オートナンバー型短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト短いテキスト数値型長いテキスト短いテキスト長いテキスト長いテキスト日付/時刻型
通報 ...