• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessで検索して、該当しなかったら+1の方法)

Accessで検索して、該当しなかったら+1の方法

このQ&Aのポイント
  • Access2002を使用しています。該当しなかったら+1の方法について教えてください。
  • 自分なりにDlookupとDMaxを使って試してみましたがうまくいきませんでした。
  • 検索フォームに入力されたpatientNoに対応するcaseNoを表示する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.1

<caseNo 更新フォーム> 検索するNo:[非連結_____] ___patientNo:[patientNo] _______caseNo:[caseNo____] レコードソース=Case 更新の許可=はい 削除の許可=いいえ 追加の許可=いいえ ・このようなフォームを用意します。 ・<検索するNo>を入力すると、該当するレコードの[patientNo][caseNo]を表示します。 ・仮に、[caseNo]が初期値=0のままであれば、[caseNo]を<最大値+1>にするかを聞いてきます。 ・<Yes>であれば、[caseNo]を更新します。 ※この場合、書くべきコードはlookupNo_AfterUpdate()イベントのみです。 Option Compare Database Option Explicit Private Sub lookupNo_AfterUpdate()   Dim Answer  As Integer   Dim strWhere As String   Dim Msg   As String      strWhere = "patientNo =" & Me.lookupNo   If DCount("*", "Case", strWhere) > 0 Then     Me.FilterOn = False     Me.Filter = strWhere     Me.FilterOn = True     If Me.caseNo = 0 Then       Msg = "[CaseNo] が初期値です。最大値+1に変更しますか?"       Answer = MsgBox(Msg, vbYesNo + vbQuestion, " 確認")       If Answer = vbYes Then         Me.caseNo = DMax("caseNo", "Case") + 1       End If     End If   Else     MsgBox "入力された[No]は[patientNo]に登録されていません。"   End If End Sub

vwgolf
質問者

お礼

お礼がおそくなってすみません このような方法があるのにアクセスの奥深さが・・・ 昨日から実際にやってみたのでがエラーが出てしまって・・・ 「レコードがロックされているためフィルタを使用できません」と 「Me.FilterOn = True」の部分がが黄色くなってしまってます なにとぞ宜しくおねがいします

その他の回答 (1)

noname#22222
noname#22222
回答No.2

s_husky です。 再度、質問のテーブル構造で<caseNo更新フォーム>を作成しテスト。 エラーは確認されません。 うーん!どこで、ロックがかかっているのでしょうか? 判りません!

関連するQ&A

専門家に質問してみよう