【问题标题】:How do I make a subtable in Access in this situation?在这种情况下,如何在 Access 中制作子表?
【发布时间】:2018-05-17 03:26:30
【问题描述】:

我知道有人会看到这个并说“我确定已经有一个关于“我如何制作子表”的答案,所以这个问题是重复的。”好吧,似乎没有答案与这种情况有关。开始: 我拥有一家汽车公司。我想列出与每辆车相关的成本滚动清单,最终汇总为“totalCosts”。

我有桌子

ASSETS
     stock#, 
     make, 
     model, 
     purchase price, 
     totalCosts

和表

COSTS
     description, 
     cost (in $)

所以我希望 COSTS 表包含几个成本,例如:

purchase price $2,000
paint $50
new tires $200 

我可以弄清楚如何计算成本,但主要是我需要知道如何使每辆汽车或库存的 COSTS 表都存在#。因此,每个股票# 都会有其成本清单,我会将其汇总并插入总成本中。

我现在看到的唯一解决方案是制作一个成本表,其中包含在同一行上带有库存# 的所有成本,但我想为每个库存创建一个单独的成本表#

【问题讨论】:

    标签: sql database ms-access relationships


    【解决方案1】:

    这确实是您可以制作的最基本的相关表——几乎适用于任何数据库系统。

    你的费用表会有

    Id - pk id(所有表都应该有这个 PK) 资产 ID - 用于关联回资产表的标准长数字列。

    项目(费用说明(油漆、轮胎、座椅维修等) 成本(给定项目的数量)

    因此,您构建了一个基于资产的主表单,然后构建了一个子表单,该子表单可能最好设置为“重复行”或所谓的多项目表单(您将其放入主表单,并且因此“成本”表单成为资产的子表单。

    因此,实际上,您将每一行成本附加到给定的单个资产记录。如果您将成本表单作为子表单放入资产表单,访问权限将为您自动“设置”资产 ID 列。

    因此,该表单将类似于以下表单:

    在上面,(一个访问应用程序和一个我在 Access 中构建的基本表单)我实际上有“两个”列来选择“项目”或“成本”类型。我有太阳镜,但在下一行我可以添加轮胎,然后油漆,然后我想要的任何人。随着时间的推移,您可以添加任何类型的“新”成本项目,而无需创建新表或更改数据库结构。

    如果您的设计需要为您输入的每个新“事物”在表结构中进行“更改”,那么您的设计是错误的。您能想象一个您必须一直“停止”并修改软件的会计软件包吗?

    然后,当您尝试构建报告时,真正的麻烦就来了。再次强调,报告仅适用于预定义的表格 - 您可以动态“切换”表格以生成报告。

    因此,您必须抛开您对电子表格等的任何概念。计算机信息系统根本不能那样工作,也不能那样工作!

    因此请记住,关系数据库不是电子表格,您不会也不能采用需要即时更改结构的设计。表格、报告、查询甚至计算机代码都无法在您输入的每条记录都发生变化的表格上运行——您必须采用反映您当前需求的数据模型。如果处理得当,该数据模型可以用于非常复杂的会计系统、ERP 系统,甚至是拥有 1000 甚至数百万种不同产品的网上商店。首先设计此类数据模型,然后创建表单和用户界面、报告等。

    工作成本计算也是如此。你可能有液体、劳动力成本、英尺用的墙纸、加仑用的油漆和米用的瓷砖。因此,就像发票系统一样,作业成本核算系统可以处理“不同”类型的成本,并且不需要更改表格。

    在上面,我们有一个类似设置的发票,我们可以在旅游预订中添加任意数量的东西。 (门票、夹克、书籍、溜冰鞋、轮胎、油漆、座椅和窗户——我们想要的任何东西——我们只需为我们需要的任何东西添加一个新行。

    想想您使用的任何类型的“发票”软件 - 您可以在该发票中添加任意数量的项目。

    关系数据库不支持为您要构建的每个新“成本”创建一个全新的表——简单的数据库不能以这种方式工作。所以你只(到目前为止)真的需要一个资产的主表,然后是“成本”的子表。

    您无法为每项资产创建一个全新的“成本”表,因为几乎所有数据库中的内置工具都不支持也无法为您创建的每组新数据创建一个新表。

    为了便于数据输入,您可以建立一个成本项目表,这样用户就不必输入油漆、轮胎等,而是从下拉组合框中选择该项目。

    因此,互联网上的每一个示例、每本书和每篇文章都解释了如何将主表与子表关联起来,实际上是 100% 相关的,并且是您必须解决这个问题的方法。

    关系数据库不支持为“一个”新数据集创建一个全新的表,因为这种方法不能在报表中使用,查询语言也不支持这种设计。

    【讨论】:

    • 我很感激!解释非常有帮助,我理解数据库中需要干净的结构,因为一旦日期开始滚动,您就无法返回并切换结构。我想我真的不明白如何为“主表”制作一个“子表”,希望这个术语会产生更多富有成效的谷歌搜索。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多