**「出庫データ」というテーブルをもとに、「納品データ」**というテーブルに出たを書き込みたいと思っています。
現在はキーが重複するレコードがあればエラーになります。
これを以下のキーで照合し、重複する場合は上書きし、なければ追加するようにしたいです。
出庫日・販売先ID・商品ID・取引形態ID
また、納品番号については、追加の際はキーが同じほかのレコードと同一のものにしたいと思っております。
現在、キーが重複しているレコードが上書きできず、「.Update」のところで躓きます。
現在の処理(コード)
VBA
1 2 On Error GoTo 納品データ作成_Click_Err 3 4 Dim dNumber As Integer 5 Dim oDate As Integer 6 Dim strSQL As String 7 Dim Rs As Recordset 8 Dim Rst As DAO.Recordset 9 Set Rst = CurrentDb.OpenRecordset("50_納品データ", dbOpenTable) 10 Set Rsd = CurrentDb.OpenRecordset("50_納品データ", dbOpenDynaset) 11 Set Fms = Me.Form.Recordset 12 13 oDate = Format(Me!出庫日, "yymm") 14 15 strSQL = "SELECT * FROM 50_納品データ WHERE 年月 LIKE " & oDate & ";" 16 Set Rs = CurrentDb.OpenRecordset(strSQL) 17 If DCount("納品番号", "50_納品データ") = 0 Then 18 dNumber = "1" 19 Else 20 If Rs.BOF = True And Rs.EOF = True Then 21 dNumber = "1" 22 Else 23 dNumber = Format(DMax("納品番号", "50_納品データ") + 1) 24 End If 25 End If 26 27 If IsNull(Me.[商品ID]) Then 28 DoCmd.RunCommand acCmdUndo 29 End If 30 DoCmd.GoToRecord , , acFirst 31 countRst = 0 32 Do Until Fms.EOF 33 With Rst 34 Rsd.FindFirst "[商品ID] like '" & Me.[商品ID] & "*' and [販売先ID] like '" & Me.[販売先ID] & "*' and [出庫日] like '" & Me.[出庫日] & "*' and [取引形態ID] like '" & Me.[取引形態ID] & "*'" 35 If Rst.NoMatch = False Then 36 .AddNew 37 Else 38 .Edit 39 End If 40 .Fields("納品番号") = dNumber 41 .Fields("出庫日") = Me!出庫日 42 .Fields("年月") = Format(Me!出庫日, "yymm") 43 .Fields("販売先ID") = Me!販売先ID 44 .Fields("販売先名") = Me!販売先呼称 45 .Fields("商品ID") = Me!商品ID 46 .Fields("商品名") = Me!商品名 47 .Fields("規格") = Me!量目 & Me!単位 48 .Fields("出庫数量") = Me!出庫数量 49 .Fields("取引形態ID") = Me!取引形態ID 50 .Fields("取引形態名") = Me!形態名称 51 .Fields("販売単価") = Me!販売単価 52 .Fields("販売手数料") = Me!販売手数料 53 .Fields("小計") = Me!式1 54 .Fields("備考") = Me!備考 55 .Fields("請求FLG") = Me!請求FLG 56 .Update 57 End With 58 countRst = countRst + 1 59 Me.Recordset.MoveNext 60 Loop 61 Rst.Close 62 Set Rst = Nothing 63 If countRst = 0 Then 64 MsgBox "対象の納品データがありません" 65 Else 66 MsgBox "納品データを作成しました" 67 Me.Recalc 68 End If 69 70納品データ作成_Click_Exit: 71 Exit Sub 72 73納品データ作成_Click_Err: 74 75 MsgBox "作成しようとしている納品データは既に存在します", vbOKOnly + vbExclamation 76 Resume 納品データ作成_Click_Exit 77 78End Sub 79
今のコードと要件だけ出すというのは、コードを代わりに作成してという事ですか?
もしそうなら、好まれない質問ですから、
ご自身が行われてどのようなところで躓いているのかを示した方が良いですね。
申し訳ございませんでした。
ご指摘ありがとうございます。
躓いた部分を削除してしまっていたので、もう一度再現し、その部分を追加しました。
Set Rsd = CurrentDb.OpenRecordset("50_納品データ", dbOpenDynaset)
・
・
With Rst
Rsd.FindFirst "[商品ID] like '" & Me.[商品ID] & "*' and [販売先ID] like '" & Me.[販売先ID] & "*' and [出庫日] like '" & Me.[出庫日] & "*' and [取引形態ID] like '" & Me.[取引形態ID] & "*'"
If Rst.NoMatch = False Then
.AddNew
Else
.Edit
End If
・
・
以後気を付けます。
何とか自力解決できるよう頑張ってみます。
回答1件
あなたの回答
tips
プレビュー