我正在尝试为一个非常典型的场景制作一个表单:客户下订单。客户可能是新的或返回。我创建了一个包含两个表的Access数据库:Job和Customer(由主键'customer no'链接)。我想创建的表单如下所示:
突出显示客户表数据。
当开始输入客户名称时,我希望看到一个更新列表,表明可能的客户匹配。如果客户正在返回,我可以单击其中一个下拉选项并让所有其他客户字段自动完成。
创建此类表单的最佳方法是什么?
我尝试使用comboBox和一些代码来实现这一点。但是,如果我使用此方法,则comboBox不允许我输入客户名称中尚未存在的客户名称。所以我无法输入新的客户详细信息。
理想情况下,此自动完成/建议应适用于所有客户字段,例如电话号码(如果电话号码是唯一知道的客户信息)。
答案 0 :(得分:0)
您可以使用将LimitToList设置为false的组合框,允许输入尚未在组合框的行源中定义的数据;使用这种方法,您可以为组合框定义一个非列表事件处理程序,以打开弹出窗体以添加新客户,理想情况下使用刚刚输入的客户名称进行预初始化,并且当数据以该表单保存时,控制返回在此表单中,重新查询组合框(因为它包含的数据现已过期),重新锁定刚刚添加的客户,并在更新事件后触发它以显示所有相关的客户相关字段出现在这张表格上。
然而,这是否合适在某种程度上取决于您拥有的数据量。如果您在数据库中不仅仅说10000个客户,我建议在客户名称旁边放置一个省略号(...)按钮,打开一个弹出搜索屏幕,并提供最好的搜索选项(名称)被搜索的实体,文本框,查找+添加按钮,数字,城市等);对于大量数据,您可能还希望提供一种方法来阻止搜索匹配项(特别是繁忙网络中的多个用户),文本框中的字符数少于4个字符,以提高性能。
然后,您可以在文本框中使用text_changed事件来检索数据库中的数据,该数据以文本框中当前存在的文本开头,并在数据表中显示;然后,用户可以单击“查找”或双击数据表以选择客户,然后可以通过调用公共子表单或在该表单上设置标记值来选择客户,或者单击“添加”以添加新客户并调用与上述类似的逻辑。