Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Access 2007引用完整性,而不使用表内查找_Ms Access_Lookup Tables - Fatal编程技术网

Ms access Access 2007引用完整性,而不使用表内查找

Ms access Access 2007引用完整性,而不使用表内查找,ms-access,lookup-tables,Ms Access,Lookup Tables,我在这里看到过关于不在表中使用查找的各种帖子。如果没有,如何在字段和查找表中的允许值之间强制引用完整性?我无法在表字段和查找表中的字段之间创建关系,因为我无法在字段上创建唯一(无重复)索引-特定值需要在表中的记录中多次出现。但是,如果我使用字段属性对其设置查找,并从查找表中指定它必须包含的字段,那么这将确保数据不能输入到不在查找表中的字段中 还是说我完全搞错了 我建议您始终创建用于编辑记录的表单。在这些表单中,您可以创建组合框,在正确的表和字段中执行查找。这里有一些选项,您可以将数据输入限制为仅

我在这里看到过关于不在表中使用查找的各种帖子。如果没有,如何在字段和查找表中的允许值之间强制引用完整性?我无法在表字段和查找表中的字段之间创建关系,因为我无法在字段上创建唯一(无重复)索引-特定值需要在表中的记录中多次出现。但是,如果我使用字段属性对其设置查找,并从查找表中指定它必须包含的字段,那么这将确保数据不能输入到不在查找表中的字段中


还是说我完全搞错了

我建议您始终创建用于编辑记录的表单。在这些表单中,您可以创建组合框,在正确的表和字段中执行查找。这里有一些选项,您可以将数据输入限制为仅存储在表中的那些值。此选项称为限制列表(您将在组合属性中看到它)

另一个重要的方法是通过关系强制执行查找表中存在的数据

tblProducts
  ProductID (primary key)
  CategoryID (foreign key)
  ProductDescription

tblCategories
  CategoryID (primary key)
  Category
在“关系”窗口中,您将在CategoryID字段上定义上述两个表之间的关系。你在这里完成了几件事。在Products表中只存储CategoryID会更有效,因为您将存储更少的数据。同样,如果更改类别上的名称,所有记录将立即反映该更改。在显示产品及其类别的每个位置,都需要创建一个组合框,以便显示类别说明,而不是显示类别ID


作为补充说明,我建议您很少使用值列表选项作为组合中的行源类型。使用“表格/查询”选项,然后创建适当的查找表是一种更加健壮和灵活的设计。

我建议您始终创建用于编辑记录的表格。在这些表单中,您可以创建组合框,在正确的表和字段中执行查找。这里有一些选项,您可以将数据输入限制为仅存储在表中的那些值。此选项称为限制列表(您将在组合属性中看到它)

另一个重要的方法是通过关系强制执行查找表中存在的数据

tblProducts
  ProductID (primary key)
  CategoryID (foreign key)
  ProductDescription

tblCategories
  CategoryID (primary key)
  Category
在“关系”窗口中,您将在CategoryID字段上定义上述两个表之间的关系。你在这里完成了几件事。在Products表中只存储CategoryID会更有效,因为您将存储更少的数据。同样,如果更改类别上的名称,所有记录将立即反映该更改。在显示产品及其类别的每个位置,都需要创建一个组合框,以便显示类别说明,而不是显示类别ID


作为补充说明,我建议您很少使用值列表选项作为组合中的行源类型。使用Table/Query选项,然后创建一个合适的查找表,这是一个更加健壮和灵活的设计。

谢谢,但我确实提到了我不能创建关系,因为字段不是唯一的。虽然表单用户仅限于组合框项目,但这仅适用于通过表单输入的数据。在它到达用户之前,我需要上传来自不同来源的数据,除非限制在表中的字段上,而不仅仅是表单控件上,否则可能会存储不正确的数据。您肯定可以创建一个关系,而不需要字段唯一。主键/索引是唯一强制唯一性的东西。当我尝试创建时,收到一条错误消息,即无法创建关系,因为主表中的字段没有唯一索引,所以您的一些表没有定义任何主键?是的,它们都有一个主键,但是在我提到的这个例子中,需要查找值的字段不是键。但是,即使我将字段设置为查找并限制为列表,使用APPEND语句加载数据仍然允许存储违反引用完整性的数据。谢谢,但我确实提到,我无法创建关系,因为字段不是唯一的。虽然表单用户仅限于组合框项目,但这仅适用于通过表单输入的数据。在它到达用户之前,我需要上传来自不同来源的数据,除非限制在表中的字段上,而不仅仅是表单控件上,否则可能会存储不正确的数据。您肯定可以创建一个关系,而不需要字段唯一。主键/索引是唯一强制唯一性的东西。当我尝试创建时,收到一条错误消息,即无法创建关系,因为主表中的字段没有唯一索引,所以您的一些表没有定义任何主键?是的,它们都有一个主键,但是在我提到的这个例子中,需要查找值的字段不是键。但即使我将字段设置为lookup并限制为list,使用APPEND语句加载数据仍然允许存储违反引用完整性的数据。