Miscrosoft访问表和数据输入问题

时间:2015-10-27 14:37:51

标签: ms-access

我在使用Access方面遇到了一些问题(我不是一个新手,但我离专家只有几英里远。)

我暂时没有使用Access,并决定为我的室内装潢业务建立一个数据库。

我创建了一个customers表,以便每次在表单上输入新客户详细信息时,它都会将数据存储在customers表中。

然后我在报价单上滚动了记录,直到它提取了相关客户的详细信息。

这就是问题所在......

然后我希望访问从包含客户信息的框中获取详细信息以及报价中的详细信息并将其存储在表中,以便我有一个名为报价的表,其中包含所有客户详细信息和报价详细信息,以便我可以打印报告(引号)。

我不知道如何将整个事物捆绑在一起并使其按预期工作。

1 个答案:

答案 0 :(得分:0)

这将导致"非标准化"并且在DB 101中教授。非标准化不好。非常糟糕。

您要做的是在Customers表中创建一个名为CustomerID的字段。此字段应为自动编号字段,也应该是您的主键。

在Quotations表中,创建一个名为QuotationsID的字段。这也应该是自动编号/主键。在此表中,您将CustomerID存储在一个字段中,与客户相关的CustomerID。这样,您可以更改Customers表中的任何信息,而不会影响数据集的其余部分。

然后,您将在查询中加入这些表格。您应该从不将其存储在单独的表中,因为一旦您的客户更改了他的电话号码或任何其他信息,您的数据就会脱节。您可以设置如下查询:

SELECT CInfo.*, Quot.*
FROM tblCustomers CInfo
LEFT JOIN tblQuotations Quot
ON tblCustomers.CustomerID = tblQuotations.CustomerID

这应该为您提供与每个客户相关的每个报价。如果您只想通过向上述查询添加WHERE子句来查看与特定客户相关的数据,则可以基于CustomerID进行过滤:

SELECT CInfo.*, Quot.*
FROM tblCustomers CInfo
LEFT JOIN tblQuotations Quot
ON tblCustomers.CustomerID = tblQuotations.CustomerID
WHERE CInfo.CustomerID = "12345"