Database MS从另一个表访问默认值

Database MS从另一个表访问默认值,database,ms-access,Database,Ms Access,我在一个数据库中有两个表。一个叫做salesreceipt,另一个叫做salesreceiptlinedetail salesreceiptlinedetail中的每一行都有一个字段IDKEY,该字段与salesreceipt中一行中的字段TxnID相匹配。salesreceiptlinedetail中可以有多行与salesreceipt中的同一行匹配 我有第三方软件,可以将access数据库与Salesforce同步。该软件一次只允许查询数据库中的一个表 我需要自动将salesreceipt表

我在一个数据库中有两个表。一个叫做salesreceipt,另一个叫做salesreceiptlinedetail

salesreceiptlinedetail中的每一行都有一个字段IDKEY,该字段与salesreceipt中一行中的字段TxnID相匹配。salesreceiptlinedetail中可以有多行与salesreceipt中的同一行匹配

我有第三方软件,可以将access数据库与Salesforce同步。该软件一次只允许查询数据库中的一个表

我需要自动将salesreceipt表中的一些字段复制到salesreceiptlinedetail表中的新字段,以便正确同步数据

我对MS access非常陌生。在尝试了许多不同的方法后,我找到了一个解决方案,我认为可能会奏效,但我不知道如何去做。看起来我可以设置字段的默认值。我想我需要做一个DLookup,在salesreceipt表中找到我想要复制的字段,并以某种方式使用条件来检查IDKEY是否与TxnID匹配。我想我需要创建一个带有函数的模块来实现这一点,但我不确定如何以及如何调用它


我可能在这方面做得太离谱了。我需要一些帮助或想法。我已经研究了好几个小时了,可能需要朝着正确的方向推动一下。提前谢谢。

以下是一些您可以尝试的东西,尽管我对您得到的表格和您想要的结果做了一些假设

因此,您有一个名为salesreceipt的表,其中包含一个ID字段TxnID和一些其他数据(例如CustomerRef\u FullName):

然后您得到了一个salesreceiptlinedetail表,该表有一个字段IDKEY字段,该字段与salesreceipt表的TxnID字段(即外键)相匹配,还有一个空字段(例如FullName),您希望通过将记录与salesreceipt表相匹配来获取数据

我可以想出一些方法来实现这一点,这样您就可以得到一个包含您想要的信息的表,但我不确定哪种方法最适合您。显示的所有这些选项都使用Access 2013

1) 使用选择查询获取数据,并将这些结果导出到您的第三方软件中

在Access中,转到创建/查询设计:

将salesreceipt和salesreceiptlinedetail表添加到查询中,然后关闭“显示表”窗口:

单击TxnID字段并将其拖动到IDKEY字段以创建联接(由Access中的一行表示):

双击salesreceiptlinedetail中的IDKEY和salesreceipt表中的CustomerRef_全名;它们应该显示为底部区域中的字段(如果您有其他需要的字段,那么也可以添加这些字段,为了便于说明,我将使用1个字段):

单击“运行”以查看此查询的结果:

希望这是一个开始填补您所需空白的表格:

然后可以保存查询(右键单击查询表并选择“保存”,然后根据需要命名):

并将结果导出到电子表格(假设电子表格是您的第三方软件采用的格式)。转到外部数据/然后单击导出组中的“Excel”:

带有您保存名称的查询将显示在Access对象侧栏中,以便您可以运行它并再次导出结果(双击它以再次运行):

这种方法的好处是,它比使用DLOOKUPs更快(如果您有很多记录,这些可能会占用大量资源),如果salesreceipt和salesreceiptlinedetail表中有新数据/记录,则查询将在新数据上运行,并将其包含在结果中,而无需修改查询

不过,对于您的问题,听起来您可能想用所需的数据填充salesreceiptlinedetail表。。。此SELECT查询不会执行此操作。如果要填充实际的salesreceiptlinedetail表,则需要更新查询

2) 使用与salesreceipt记录匹配的更新查询填充salesreceiptlinedetail中的空字段

在本例中,我们将在salesreceiptlinedetail中填充一个空字段,即FullName字段。我们将使用IDKEY和TxnID字段将salesreceiptlinedetail中的记录与salesreceipt进行匹配,然后将CustomerRef_FullName字段中的相应数据带到FullName字段

要执行此操作,请以与上面(1)中相同的方式设置新查询,并在完成此阶段后停止:

将查询类型更改为“更新”查询:

双击要填充的空字段,例如salesreceiptlinedetail表中的FullName:

在“更新到”框中,键入要用于填充空字段的相应表和字段的名称。用一对方括号括起表格和字段,并用圆点分隔。所以它应该是这样的:

[salesreceipt].[CustomerRef_FullName]
[salesreceiptlinedetail].[IDKEY]=[salesreceipt].[TxnID]

在“条件”框中,匹配IDKEY和TxnID字段,如下所示:

[salesreceipt].[CustomerRef_FullName]
[salesreceiptlinedetail].[IDKEY]=[salesreceipt].[TxnID]

单击“运行”,Access将显示一条警告,表示它将要更新表中的某些记录。单击“是”以允许它执行此操作:

如果返回salesreceiptlinedetail表,您应该会看到曾经为空的FullName字段现在已填充:

然后,您可以保存更新查询以供以后再次使用-请注意,双击查询将打开它并再次运行更新(即,它将尝试用新数据填充salesreceiptlinedetail表),因此如果您不希望发生这种情况,可以右击它并在选择运行它之前打开它的设计视图

如果您希望在已经存在的表中填充数据,而不是从现有表中构建一个新的结果表,那么这种方法是很好的