2010-04-05 59 views
0

我正在开发一个简单的Access 2003应用程序,以跟踪某些同事需要为客户完成的事情。每个同事都有一组客户,每个客户都有一系列需要在特定日期前完成的操作。我设置了一个表单,它包含一个用于客户端ID(索引)的组合框,一个处理该客户端案例的人的下拉列表以及一个用于添加新客户端的按钮(一个标准的Access创建的添加记录按钮) 。这些操作在这三个元素下面的子表单中列出。在Access中添加新记录而不破坏表格

我遇到的问题是,我测试的第一个人点击按钮添加一条新记录,然后没有填写它,并尝试从下拉列表中选择另一个客户端。 Access将此解释为尝试将所选客户端ID设置为新记录的ID,并正确地为重复的主键引发错误。我可以想到解决这个问题的几种方法,但我更愿意听到你的优雅解决方案,而不是用一种我不知道的语言把一些垃圾拼凑在一起。

让我知道如果您有任何问题。谢谢。

+0

那么你是说用户错误地使用ClientID下拉菜单来导航并且无意中更改了父表单中记录的clientID? – JohnFx 2010-04-05 21:35:18

+0

没错,尽管ClientID下拉菜单也适用于导航。它可以正常工作,除非有人添加新记录,不填写ClientID,然后尝试导航到现有记录。有ClientID索引可能不是一个好主意,但有重复的条目为客户将是一件坏事。 – 2010-04-05 21:57:40

+1

这实际上是一个非常常见的业务功能。您是否考虑过使用一些可能适合您需求的任务管理软件的搜索功能?为了不降低成本,您可以找到一些可以处理多个用户,任务等的软件。 – PowerUser 2010-04-06 12:42:03

回答

2

请勿使用相同的控件进行数据输入和导航。它一定会混淆。创建一个用于输入新客户端ID的文本框,并更改该组合,以便不再绑定到客户端ID字段(列)。

+0

然后,我确信我会关注你:然后,我将重新添加新客户端按钮,使其从当前创建一个新的空白记录的功能变为可以从客户端ID文本框的内容创建新记录的按钮以及该客户负责人的身份证明 - 是否正确? – 2010-04-06 15:31:46

+0

这肯定是一种方法。 – Fionnuala 2010-04-06 17:06:44

1

一个关键的用户界面的原则,很多人似乎错过:

不要让用户做你不希望他们做的事。

现在,就你的情况而言,根据你描述的事情,我同意@Remou你需要单独的组合框,一个用于导航,一个用于分配客户端。

但是,如果由于某种原因,你确实需要做你描述的内容,关键是禁用客户端组合框,直到记录被保存。因此,在添加新命令按钮后面的代码中,您将组合框的.Enabled属性设置为false。在窗体的AfterInsert事件中,您将其设置回True。

这个想法只是为了使用户无法做出错误的事情。

听起来很简单,但它比听起来要难得多,因为作为程序员,您几乎总是有一种视角,防止您以与用户相同的方式看到您的用户界面。这就是为什么我总是说在任何应用程序中都存在许多错误,因为有用户还没有尝试过。

+0

我非常清楚并同意这一原则 - 因为我的发展和支持融合在一起,所以我宁愿不必解释按钮按下几次以创建新客户端的正确顺序。它应该只适用于用户。感谢您的回答 - 我绝对不需要它只使用组合框,但我可能会试验您的建议。 – 2010-04-08 15:21:08