Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5606 / 9994 ←次へ | 前へ→

【7604】レコード追加時の重複について
質問  水無月  - 06/3/29(水) 14:31 -

引用なし
パスワード
   こんにちは、水無月と申します。
下記についてご教授宜しくお願いします。

フォームに「HEAD」「START」「END」「BANGO」というテキストボックスを設置して「TOUROKU」ボタンをクリックした際に「T_TP」というテーブルにレコードを追加するイベントを行います。
例えば、HEADに「A」、STARTに「10050」、ENDに「10100」、BANGOに「60」とするとA10050〜A10100までの連続番号のTPNOとその全レコードのBANGOに60が登録されます。
この次にA10000〜A10100までを登録しようとした場合、現在はテーブルのインデックスが重複なしになっているため、重複が出たときにエラーが出ます。でもA10000〜A10049まではノーチェックで登録されてしまいます。そうではなくて、登録しようとしたNOが1つでも重複している場合、1つも登録することなく元のフォームに戻り入力し直すようにしたいのです。
でもどうすればいいのか分からず困っています。どうか宜しくお願いします。
(ちなみにHEADはつく場合と空白の場合があります)

Private Sub cmd_TOROKU_Click()

  Dim cn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim i As Long

  Set cn = CurrentProject.Connection
  Set rs = New ADODB.Recordset
  rs.Open "T_TP", cn, adOpenKeyset, adLockOptimistic
  
  For i = CLng(Me!START) To CLng(Me!END)
  
  If IsNull(Me!HEAD) Then
    rs.AddNew
      rs!TPNO = CStr(i)
      rs!BANGO = Me!BANGO
    rs.Update
  Else
    rs.AddNew
      rs!TPNO = Me!HEAD + CStr(i)
      rs!BANGO = Me!BANGO
    rs.Update
  End If
  
  Next i
  
  If IsNull(Me!HEAD) Then
    MsgBox ("No." & Me!START & "から" & Me!END & "まで登録しました")
  Else
    MsgBox ("No." & Me!HEAD + Me!START & "から" & Me!HEAD + Me!END & "まで登録しました")
  End If
  
  rs.Close: Set rs = Nothing
  cn.Close: Set cn = Nothing
    
End Sub

420 hits

【7604】レコード追加時の重複について 水無月 06/3/29(水) 14:31 質問
【7606】Re:レコード追加時の重複について たん 06/3/29(水) 14:50 回答
【7607】Re:レコード追加時の重複について 水無月 06/3/29(水) 15:19 質問
【7608】Re:レコード追加時の重複について たん 06/3/29(水) 15:35 回答
【7609】Re:レコード追加時の重複について 水無月 06/3/29(水) 16:05 質問
【7611】Re:レコード追加時の重複について たん 06/3/29(水) 16:47 回答
【7612】Re:レコード追加時の重複について 水無月 06/3/29(水) 16:59 お礼

5606 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free