2010-11-17 52 views
1

在Access 2007,我有这样的相关的两个表的那一个(代理)PK是在其他的FK:访问自动分配空值到非变量 - 在哪里?

table Organization (
    org_id  int PK, 
    other_fields whatever, 
    contact_id int FK 
) 

table contact (
    contact_id  int PK, 
    contact_nm  text(255), 
    other_fields whatever 
) 

显然不是完整的表定义....

所以我建反映这一点的形式 - 有一个frmOrganization,有一个子表单sbfContact。它们与contact_id相关,就像表格一样。除了 contact_id(尽管它当然存在于记录源(SELECT * FROM contact;))中,表联系人中的所有字段都有sbfContact控件。这两种形式都没有任何代码以任何方式引用其他代码,也没有任何代码。

当我尝试使用子窗体输入新联系人时出现我的问题。只要我在与contact_nm绑定的控件中键入一个字符,Access就会告诉我“您试图将Null值分配给不是Variant数据类型的变量。”我是什么?哪里?我没有分配任何东西任何变量 - 我?如果我对消息回答“确定”,则我刚刚输入的字符出现在控制&中,所有事情都按我的预期进行。

这里发生了什么,更重要的是,我需要做些什么才能使其停止?

编辑以更多信息

好了,我希望能简化,但我不看啊它帮助....我真的是四个不同的实体,每个都需要自己的联系数据:

Customer 
Site 

Manufacturer 

Engineer 

(行距是显著 - 一个客户都会有至少一个网站,也许更多,但没有客户可以存在的网站(除非我扛“我们”作为客户)的另外两个。完全独立)。

我观察到与“主要”实体之一一起工作的原始问题,并认为它将与其他实体并行。我认为CodeSlave已经指出我正确的问题来源 - 恐怕我唯一的追求是不允许通过这个子表单添加,而是建立一个独立的“创建联系人”表单。其他建议是值得欢迎的,虽然....

回答

1

基本上Access有不知道如何联系您的联系到组织,它假设你已经知道CONTACT_ID是什么,因为它是从组织形式到来,但它仍然是空当您在子窗体上输入联系人时。

我想你想翻转这里的东西。

你有Contact with multiple OrgsOrg with multiple Contacts

Contact with multiple Orgs的情况下,使联系人为主窗体,并将组织子窗体。

Org with multiple Contacts的情况下,给一个联系人FK到Ord_ID,并从组织

降CONTACT_ID

-

跟进基于评论。

我将处理与多个实体使用相同的联系人的方式,我不会使子表单上的联系人条目。相反,我会在完全不同的表单上创建注释,然后使用下拉列表选择联系人(并在组织表单上显示联系信息的其余部分)。即使您的组织表单上必须有“创建联系人”按钮来暂时创建创建表单,您也可以获得更多的收益。

+0

啊哈!我想我现在明白了这个问题,但情况其实更加复杂。我有四个不同的实体,每个实体都有与之关联的联系人 - 是的,他们是不同的。事实上,其中两个人之间有父母/子女关系(但每个人都需要自己的联系人数据,因为它们可能相同也可能不相同)。我不认为我可以实施任何建议的修复,但我应该能够使我的表单可行。如果我在一周内没有得到更好的建议,我会接受你的答案。 – RolandTumble 2010-11-18 22:26:03