wazawaza
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
通報 ...