一些访问表格上的2007编程问题

时间:2009-07-09 19:42:10

标签: ms-access ms-access-2007

我正在设计一个带有SQL Server表的小型Access 2007 UI。

我的页面上有一个子表单,这是一个数据表。对于表单视图中选择的每个父记录(例如表A,表B具有表A的外键),我想写出数据表中的每个相关记录。

有5位客户。每个都有几个订单。您可以浏览表单中的客户。但是对于每个单击的下一个按钮,我想在数据表中显示所有相关订单(数据表也允许我写新记录)。

此外,在数据表(想象它是订单)中,我可以将PK ID值设置为自动与当前显示的客户记录中的ID相同吗?

由于

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读了这个内容,那么您说主要的父表是表单的主要部分,并且您希望在导航时子记录以子表单形式显示。默认情况下,Access以这种方式工作,您根本不需要编写任何代码。

此外,如果您将子记录添加到子表单,则将正确设置外键值。再次,不需要代码。

因此,基于主父表构建标准表单。然后,您可以构建一个基于子表的连续表单,并将其放入上面的主表单中。

然后在设计模式下打开主窗体并设置子窗体属性表。在该属性表中,只需设置链接主页和链接子字段。链接主文件将设置为主窗体中的主键,并且要设置链接子项=子表单中表的外键字段。

完成上述操作后,整个过程无需任何编码即可完成。


关于孩子添加错误消息:

假设您有一个主要客户表单,则用户在导航到新客户记录之前无法添加订单。如果他们没有导航到新的客户记录,那么他们将以这种主要形式编辑现有客户。因此,在所有情况下,主要客户记录将始终在他们甚至可以输入客户订单之前添加。

我想用户可以导航到空白客户记录,然后将光标(焦点)跳转到订单所在的子表单并开始输入。即使在这种情况下,当焦点从主要客户表单移动到订单子表单时,也会添加空白客户记录。 (因此当您使用经典主表单+子表单设置时,访问UI会处理父记录的添加)

因此,从用户界面的角度来看,如果没有现有的主要客户记录,用户就无法输入订单。因此,您不会收到有关父客户记录不存在的错误消息。如果此人以非子表单的形式打开订单,然后尝试添加新的订单记录,那么您只会遇到这种错误。在这种情况下,您将收到一条错误消息。因此,我真的不认为需要捕获此错误消息。我不允许用户单独打开子表单。如果出于某种奇怪的原因,您确实允许子表单与主表单分开打开,则使用allow additons = false打开表单(并且再次防止需要错误消息)。

我想如果某些原因允许用户打开子表单或订单单独打开并且您没有关闭允许添加,那么他们就可以导航到新的空白记录,这意味着客户记录的FK将无法正确设置。如果此订单表格中有条款选择客户,那么您肯定可以将以下代码放在此订单表单的更新前事件中:

If isnull( foreign key field name goes here) = true then
    Msgbox “ you must select a customer before you can enter an order”
    Cancel = true
End if

在某种意义上,再次没有真正捕获错误消息,即在没有父记录存在的情况下即将添加子记录。我们只是使用UI界面告诉用户执行一些操作,以防止错误消息首先发生。