【问题标题】:Contact details window in ms access?ms访问中的联系方式窗口?
【发布时间】:2011-01-26 02:59:36
【问题描述】:

我目前正在为联系人使用 MS Access 2010 模板。我已经对其进行了修改以进行多条件搜索,但它仍然是相同的。 我想知道的是如何修改点击“打开”时打开的联系方式窗口。

基本上,我希望它打开窗口,但是我想添加两个按钮以转到下一个人,而不必关闭窗口并重新打开另一个。我已经添加了按钮,但是打开的窗口是针对特定 ID 的,所以它不会转到下一条记录。

是否有人知道如何打开特定联系人的详细联系信息窗口,但仍能浏览所有这些信息? (他们是搜索后给出的联系人)

编辑:

好的,我刚刚尝试创建一个克隆,但我得到的只是一个错误“3251 - 这种类型的对象不支持此操作。我对 VBA 代码比较陌生,所以它有点难找到问题,但我猜它与记录集的类型(DAO 或 ADO)有关。这是我所拥有的:

Private Sub txtOpen_Click()

DoCmd.OpenForm "Contact Details", , , , , acHidden
  With Forms![Contact Details]
    .Recordset = Me.Recordset.Clone
    .RecordsetClone.FindFirst "[ID]=" & Me!ID
    If Not .NoMatch Then
       .Bookmark = .RecordsetClone.Bookmark
    End If
  End With

End Sub

我目前正在研究它!

【问题讨论】:

  • 如果您在这里没有得到任何回复,我建议您在 www.UtterAccess.com 或 www.access-programmers.co.uk 上发布您的问题。
  • 如果您指定您正在使用的联系人模板会有所帮助。有几个可用的。
  • 是的,对不起,我用的是vodloza制造的。我根据自己的需要定制了搜索,所以它不再是“原样”了。

标签: ms-access macros


【解决方案1】:

我没有检查 A2010 联系人模板,但我猜你有一个结果列表,你选择一个并单击命令按钮以打开详细信息。

可能该命令按钮的代码如下:

  DoCmd.OpenForm "frmContactDetails", , , "[ContactID]=" & Me!ContactID

...打开表单并将其过滤为单个记录。

要获得一组可导航的记录,您需要将表单过滤为搜索结果列表中显示的同一组记录,然后您需要在这些记录之间导航。为此,您必须将条件设置为过滤结果列表的相同条件,然后导航到当前选定的记录。我不知道标准是什么,所以我只是用一个变量来表示它,strCriteria 但要求是它的格式像一个没有“WHERE”这个词的 SQL WHERE 子句:

  DoCmd.OpenForm "frmContactDetails", , , strCriteria
  With Forms!frmContactDetails
    .RecordsetClone.FindFirst "[ContactID]=" & Me!ContactID
    If Not .NoMatch Then
       .Bookmark = .RecordsetClone.Bookmark
    End If
  End WIth

这会将表单打开到同一组记录,然后导航到具有在您单击命令按钮查看详细信息时在结果中选择的记录的 ContactID 的那个。使用该组记录加载该详细表单后,您可以根据需要导航到下一个或上一个记录。

也可以打开详细信息表单并将表单的 Recordset 指定为结果表单的 Recordset 的克隆,但我从未尝试过。在这种情况下,它会类似于(未经测试的代码,只是猜测如何完成):

  DoCmd.OpenForm "frmContactDetails", , , , , acHidden 
  With Forms!frmContactDetails
    .Recordset = Me.Recordset.Clone
    .RecordsetClone.FindFirst "[ContactID]=" & Me!ContactID
    If Not .NoMatch Then
       .Bookmark = .RecordsetClone.Bookmark
    End If
  End WIth

要考虑的另一件事是根本没有弹出表单,而是使用拆分表单,这是在 A2007 中引入的,我还没有机会使用(没有客户完全切换到A2007/2010)。它在同一个表单上有一个列表视图和一个详细视图。

实现同样事情的老式方法是在一个未绑定的表单上有两个子表单,顶部表单是结果列表,顶部表单是与顶部的当前记录相关联的详细表单形式。无需代码,您只需像这样设置详细表单的 LinkChild 和 LinkMaster 属性:

  LinkMaster: ListForm.Form!ContactID
  LinkChild:  ContactID

这种方法和拆分表单都避免了弹出表单,我认为这有点对用户不利(需要谨慎使用)。

您使用哪种方法取决于您的应用究竟如何组合在一起。

【讨论】:

  • 我想保留弹出窗口。我以前有一个拆分表单,但是由于我在搜索时想要一个联系人列表,然后能够从列表中访问详细信息,所以它占用了很多空间(要显示很多信息,即使有标签),并且组织起来非常混乱(以图形方式)。因此,出于图形原因,我将坚持使用弹出窗口。一旦我在正确的计算机上并同时尝试您的代码,我将立即发布代码。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2011-07-11
相关资源
最近更新 更多