1

特定のIDを持つレコードに移動しようとしています。

私はこの投稿で解決策を試しました:ドロップダウンの代わりにテキストボックスでレコードを検索するMSAccess

しかし成功しません

これが私のコードです

Private Sub btnShowPrevious_Click()
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "[ID]=" & ParentID
    If rs.NoMatch Then
        MsgBox "Sorry, no such record '" & ParentID & "' was found.", _
               vbOKOnly + vbInformation
    Else
        Me.Recordset.Bookmark = rs.Bookmark
    End If
    rs.Close
End Sub

常に一致するものはありませんが、parentID = 1であり、ID=1のレコードが1つあります。

誰もが何が悪いのか考えていますか?

ありがとうございました

レコードソースは次のテーブルです。

CREATE TABLE [dbo].[ProposalFollowUp](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ProposalID] [int] NOT NULL,
[MillID] [int] NULL,
[ClientID] [int] NULL,
[Comment] [nvarchar](max) NULL,
[Method] [nvarchar](128) NULL,
[Contact] [int] NULL,
[ContactDate] [datetime] NULL,
[Done] [bit] NOT NULL,
[CreatedBy] [nvarchar](50) NULL,
[CreatedDate] [datetime] NULL,
[ModifiedBy] [nvarchar](50) NULL,
[ModifiedDate] [datetime] NULL,
[EAIEmployee] [nvarchar](50) NULL,
[PersonInCharge] [nvarchar](50) NULL,
[ParentID] [int] NULL,

これがフォームのプロパティのスクリーンショットです

ここに画像の説明を入力してください

最後に、ナビゲーションバーを表示すると、フィルターがあることがわかります。このようにフォームを開いたせいかもしれません

DoCmd.OpenForm "ProposalsFollowUp", , , "[ID] = " & txtID, acFormEdit, acDialog

フィルターを外せば動作します。

これが最終的なコードです

Private Sub btnShowPrevious_Click()
    Dim parent As Integer
    parent = ParentID
    Me.Filter = ""
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "[ID]=" & parent
    If rs.NoMatch Then
        MsgBox "Sorry, no such record '" & parent & "' was found.", _
               vbOKOnly + vbInformation
    Else
        Me.Recordset.Bookmark = rs.Bookmark
    End If
    rs.Close
End Sub
4

1 に答える 1

1

レコードセットに検索対象のデータが含まれていることや、フィルターがないことなど、明らかなすべてをチェックした後、フォームの問題を検討できます。フィルタはAccess2010のフォームの下部に表示され、VBAでは次の方法で削除できます。

Me.FilterOn = False

または、フィルターボタンをクリックします。

フォームフィルターアクセス2010

フロントエンドで発生する奇妙なことは、多くの場合、ある種の破損が原因です。開発中は、定期的にバックアップ、コンパクト化、修復、逆コンパイルする必要があります。テーブルをリンクしている場合は、リンクを更新することをお勧めします。

失いたくないフォームを作成して破損した場合は、切り取りと貼り付けを使用して新しいフォームにコピーするか、テキストにエクスポートしてインポートすることができます。

逆コンパイル:

"c:\Program Files\Microsoft office\office\msaccess.exe" /decompile "c:\My Documents\MyDatabase.mdb"

-http ://allenbrowne.com/ser-47.html

テキストとして保存:

Application.SaveAsText acForm, "FormName", "z:\docs\tmp.txt"
Application.LoadFromText acForm, "restoredForm", "z:\docs\tmp.txt"
于 2012-09-25T15:01:36.140 に答える