0

各人物の複数のイベントを記録するイベント テーブルがあります。event_number フィールドを追加して、ユーザーが各人物のイベントの順序を識別し、それらの間を移動できるようにしました。次のコードを使用して [新しいイベント] ボタンを追加しました。このボタンは、人物の最後のイベント番号を検索し、ID や次の利用可能なイベント番号などの基本データを含む新しい行をテーブルに挿入します。これで問題なく動作しますが、イベント サブフォームを移動して、この新しいイベント番号がフォームに表示され、残りのデータを追加できるようにする必要があります。DoCmd.GoToRecord に関するさまざまなオプションを試しましたが、空白のサブフォームしか表示できず、新しく入力されたイベント番号を表示するものではありません。何か案は?

Private Sub btnNewEvent_Click()  
   'add a new event by setting discriminator and event number
   Dim lngLast As Long
   Dim strQuery As String
   lngLast = DMax("[event_number]", "event", "[PersonID] = [Forms]![frmContainer]![txPersonID]")
   lngLast = lngLast + 1
   strQuery = "INSERT INTO event ( ID, event_discriminator, event_number ) " & _
           "VALUES ([Forms]![frmContainer]![txtPersonID], 'NR', " & lngLast & ")"
   DoCmd.RunSQL (strQuery)
End Sub
4

1 に答える 1

0

これは、サブフォームが連続フォームか単一フォームか、およびアプリケーションの動作方法によって異なります。サブフォームを再クエリしてから、関連するレコードを見つけるだけで十分な場合があります。

''Running from the main form
Me.MySubformcontrolName.Form.Requery

Me.MySubformcontrolName.SetFocus
With Me.MySubformcontrolName.Form.Recordset
    .FindFirst "ID=" & lngLast 
End With

または

''From the subform:
Me.Requery

With Me.Recordset
   .FindFirst "ID=" & lngLast 
   ''Other stuff
End With

サブフォームのレコード ソースを、最新のレコードのみを含む SQL 文字列に単純にリセットするのが適している場合があります。

新しい番号を取得するために選択した方法は、単一ユーザー環境以外では安全ではないことに注意してください。

于 2012-07-04T12:06:24.767 に答える