access中用窗体向导方法创建子窗体。最后得到的主窗体与子窗体不同步,而成了修改数据表。如何解决?
我是想实现在主窗体中输入一个值,然后子窗体中显示相关记录。但每次我在主窗体中输入新的值,都成了修改默认值所在的记录。而且在主窗体中将设定的字段改为其它字段后,输入新值,子...
我是想实现在主窗体中输入一个值,然后子窗体中显示相关记录。但每次我在主窗体中输入新的值,都成了修改默认值所在的记录。而且在主窗体中将设定的字段改为其它字段后,输入新值,子窗体中倒是能随之改变,并显示相关记录。但在显示之前会蹦出来“由于表某某中包含了相关记录,不能删除或改变该记录”的警告对话框,并且在保存时,也会显示同样的警告,随后蹦出不能保存该记录的警告。
展开
3个回答
展开全部
其实我在第一时间就看到你的提问,但觉得要回答清楚,涉及相关内容较多,就没及时回答。今天有空,我就慢慢回答你。
1、你用向导方法创建子窗体,其实是创建了一个一对多的窗体。在这里我们先假设一个例子,我们搞一个病人就诊记录的程序,有一个“患者表”(患者姓名,性别,身份证,地址,……)和一个“就诊记录表”(姓名,就诊时间,用药,……),主窗体显示患者基本信息,而子窗体则显示各次就诊的内容,主窗体患者姓名变动后,子窗体内容相应变化;这里,实际上“患者表”和“就诊记录表”是一对多的关系,如果不是一对多就没有不要创建子窗体了,用向导方法创建子窗体,会自动创建了一个一对多的窗体。
2、下面再谈谈实施参照完整性的话题。当通过“患者表”的[患者姓名]与“就诊记录表”的[姓名]建立一对多关系后,他们之间的完整性规则也就建立了。根据完整性规则约定,不能在“多端”添加一条“一端”不存在的记录,也就是不能在“就诊记录表”上添加“患者表”不存在的患者的记录;根据规则约定,也不能删除修改“多端”存在记录的“一端”的主键值,也就是“就诊记录表”中有某一人的记录,你不能删除修改“一端”该人的患者姓名,这样才能保证相关表数据的完整性,如果允许的话,就相当于允许在“多端”添加一条“一端”不存在的记录了。这就是你说的“会蹦出来“由于表某某中包含了相关记录,不能删除或改变该记录”的警告对话框,而且不能保存”的原因了。当然,并不是不能删除修改“一端”的主键值,只要在编辑两表关系时选择了“联级删除”“联级更改”就可,这样当“一端”的记录删除时,“多端”记录也就同时删除了,“一端”没记录,“多端”的记录没有存在的必要,修改时同理。
3、你用向导创建的主窗体和子窗体是相关的,在设计试图下,打开子窗体的属性“数据”可以看到有“链接主窗体字段”“链接子字段”的内容,证明两个窗体是根据什么字段相关联的,假如按我们的例子应分别是“患者姓名”“姓名”;如果留空,那么两个窗体就没有关联了。
4、再回到你的问题。理解以上内容后,你在主窗体输入新值,当然成了修改记录了。你应当在主窗体创建一个新的未绑定文本框(按例子,用来输入姓名),设置主窗体的记录源是基于 查询条件等于这个文本框 的查询,就会同步了。为了方便,可将这个未绑定文本框设为组合框,而组合框的选项来源于“患者表”的“患者姓名”。
不知我说明白了吗?但愿与你有帮助。
1、你用向导方法创建子窗体,其实是创建了一个一对多的窗体。在这里我们先假设一个例子,我们搞一个病人就诊记录的程序,有一个“患者表”(患者姓名,性别,身份证,地址,……)和一个“就诊记录表”(姓名,就诊时间,用药,……),主窗体显示患者基本信息,而子窗体则显示各次就诊的内容,主窗体患者姓名变动后,子窗体内容相应变化;这里,实际上“患者表”和“就诊记录表”是一对多的关系,如果不是一对多就没有不要创建子窗体了,用向导方法创建子窗体,会自动创建了一个一对多的窗体。
2、下面再谈谈实施参照完整性的话题。当通过“患者表”的[患者姓名]与“就诊记录表”的[姓名]建立一对多关系后,他们之间的完整性规则也就建立了。根据完整性规则约定,不能在“多端”添加一条“一端”不存在的记录,也就是不能在“就诊记录表”上添加“患者表”不存在的患者的记录;根据规则约定,也不能删除修改“多端”存在记录的“一端”的主键值,也就是“就诊记录表”中有某一人的记录,你不能删除修改“一端”该人的患者姓名,这样才能保证相关表数据的完整性,如果允许的话,就相当于允许在“多端”添加一条“一端”不存在的记录了。这就是你说的“会蹦出来“由于表某某中包含了相关记录,不能删除或改变该记录”的警告对话框,而且不能保存”的原因了。当然,并不是不能删除修改“一端”的主键值,只要在编辑两表关系时选择了“联级删除”“联级更改”就可,这样当“一端”的记录删除时,“多端”记录也就同时删除了,“一端”没记录,“多端”的记录没有存在的必要,修改时同理。
3、你用向导创建的主窗体和子窗体是相关的,在设计试图下,打开子窗体的属性“数据”可以看到有“链接主窗体字段”“链接子字段”的内容,证明两个窗体是根据什么字段相关联的,假如按我们的例子应分别是“患者姓名”“姓名”;如果留空,那么两个窗体就没有关联了。
4、再回到你的问题。理解以上内容后,你在主窗体输入新值,当然成了修改记录了。你应当在主窗体创建一个新的未绑定文本框(按例子,用来输入姓名),设置主窗体的记录源是基于 查询条件等于这个文本框 的查询,就会同步了。为了方便,可将这个未绑定文本框设为组合框,而组合框的选项来源于“患者表”的“患者姓名”。
不知我说明白了吗?但愿与你有帮助。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主子表用关系做间级关联
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询