自动填充Access中的单元格

时间:2016-12-15 16:31:06

标签: sql database ms-access database-design

我正在启动Access + SQL,因为我必须将一些繁重的Excel文档传输到访问数据库中,我仍然是这里的新手。我尝试了一些你可以在下面看到的东西,但它没有正常工作,我觉得VBA更容易......

问题我正在尝试根据前一个单元格中的用户输入自动填写一些单元格。

情况:我有一个名为 Overview 的访问数据库表,它将由用户逐行填充。我将主键设置为ShipmentID,这样每当他开始新行时,他必须先输入此值。

enter image description here

之后,当用户输入DealerNo时,我希望分别填写3个下一个信息(DealerName,Country,ShipperContact)。

该信息来自另一个表 DealerLookup ,其中列出了所有不同的经销商并收集了他们的所有信息。

DealerLookup 分别包含CompanyName,Country,ContactName列中的3个信息,而此表中的主键是DealerNo。

尝试:但这根本不起作用,所以我希望你能帮我解决这个问题。

INSERT INTO Overview (DealerName, Country, ShipperContact)
WHERE DealerNo = 50535
SELECT CompanyName , Country , ContactName FROM DealerLookupNew 
WHERE DealerNo =  Overview.DealerNo ;

备注:

  1. 即使它可以工作,也不会是一个好的解决方案,因为这只对一个DealerNo有效。所以它只适用于那一行,但是如果用户输入其他经销商,那么这段代码就不能做任何事......一个好的解决方案(我不知道如何用SQL编写)将是用DealerNo中最后一个非空单元格的值替换50535。
  2. 如果我删除了WHERE DealerNo = 50535,则错误来自最后一行,因为Overview.DealerNo并非正确的说法"取最后一个非空单元格的值经销商没有形成概述表"
  3. 任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试在数据表视图中执行此操作。您需要的是AfterUpdate事件,该事件在数据表视图中不可用。

我非常确定执行此操作的唯一方法是向表单添加字段并在DealerNo的AfterUpdate事件中进行计算。它会改变用户输入数据的方式,但它会比标准的数据表视图更灵活地操作数据。

或者,正如Dan在评论中建议的那样,在导入之前只需在Excel中完成所有工作。但是,一旦您的所有数据都在Access中并且您正在输入新记录,这将无法帮助您继续前进。