2

フッターにコマンドボタンがあり、現在のレコードを値で更新する連続フォームがあります。この値を使用すると、再クエリするとレコードがフォームに表示されなくなります。ユーザーがボタンをクリックできるようにし、レコードが更新されたら、デフォルトの動作のように最初のレコードではなく、次のレコードに移動できるようにします。動作するはずのコードがありますが、動作しません。フォームの最初のレコードに戻り続けます。

Private Sub cmdCloseReq_Click()

Dim ReqID As String
ReqID = Me.txtReqID
Dim rst As Recordset
Dim strBookmark As Integer

Set rst = Me.RecordsetClone
rst.MoveNext
If Not rst.EOF Then                 ' if not end-of-file
  strBookmark = rst.Bookmark      ' ...save the next record's bookmark
  Dim cmd As New ADODB.Command
  With cmd
    .ActiveConnection = CurrentProject.Connection
    .CommandType = adCmdStoredProc
    .CommandText = "spUpdateLOG_ReqCompleteDate"
    .Parameters("@ReqID") = ReqID
    .Execute
  End With                 
Me.Requery
Me.Bookmark = strBookmark

End If
Set rst = Nothing   

End Sub

OK、私はreneの投稿に基づいて解決策を見つけました。次のレコードの主キーを取得し、更新を行ってから、要求後に次のレコードを見つけて、ブックマークをそのレコードに設定します。コードは次のとおりです。

Private Sub cmdCloseReq_Click()

Dim ReqID As String
ReqID = Me.txtReqID
Dim rst As New ADODB.Recordset
Dim strBookmark As String

Set rst = Me.RecordsetClone

With rst
 .Find "[ReqID] = '" & ReqID & "'"
 .MoveNext
 strBookmark = rst.Fields(0)

End With

If Not rst.EOF Then                 ' if not end-of-file
      ' ...save the next record's bookmark

  Dim cmd As New ADODB.Command

  With cmd
    .ActiveConnection = CurrentProject.Connection
    .CommandType = adCmdStoredProc
    .CommandText = "spUpdateLOG_ReqCompleteDate"
    .Parameters("@ReqID") = ReqID
    .Execute
  End With                 ' ...delete the record

  Me.Requery

 Set rst = Me.RecordsetClone
 With rst
      .Find "[reqID]= " & strBookmark
    Me.Bookmark = .Bookmark

End With

Else
  With cmd
    .ActiveConnection = CurrentProject.Connection
    .CommandType = adCmdStoredProc
    .CommandText = "spUpdateLOG_ReqCompleteDate"
    .Parameters("@ReqID") = ReqID
    .Execute
  End With                 ' ...delete the record
Me.Requery

End If
Set rst = Nothing 
4

1 に答える 1

1

ブックマークは再クエリ後に無効になることを思い出します。主キーがある場合は、それをより適切に取得し、再クエリ後に現在のレコードを以前に取得した主キーに移動できます

于 2012-12-06T20:46:23.180 に答える