来自链接的计算字段 Table
Calculated Field from Linked Table
我使用的是 MS Access 2013。我的数据库有四个相关表:
Table A) Numerical_Key_A, {Other Data Items}
Table B) Numerical_Key_B, "Adjustment Value", {Other Data Items}
Table C) Numerical_Key_C, {Other Data Items}
Table D) {Other Data Items}, Link-to-B, Link-to-A, Link-to-C
但是,它的工作方式是,进入 Table D 记录的链接到 C 始终正好 "Adjustment Value" 远离 Numerical_Key_A。因此,我希望在输入 Link-to-A 和 Link-to-B 时自动计算 Link-to-C。
据我所知,这需要 Table D 有一个计算字段,该字段从链接的 Table B 获取数据,而 Access 不允许这样做。还有另一种方法吗?如果可能的话,我宁愿不使用 VBA,但如果这是唯一的方法,我只需要学习如何去做。 (我知道 VBA 用于 Excel,但以前从未在 Access 中使用过它)。
如果我很了解你,你需要做的就是在 table 之间创建连接,例如:
SELECT D.Field1, D.Field2, B.[Adjustment Value]
FROM Table_D AS D INNER JOIN Table_B AS B ON D.Link-To-B = B.Numerical_Key_B
更多信息,请参阅:
Join tables and queries
How to: Perform Joins Using Access SQL
[编辑]
在tableD中,有一个字段,我在上面的snippit中标记为"Link-to-C"。此字段应填充 Link-to-A 加上 TableB.AdjustmentValue
的值
SELECT D.Field1, D.Link-To-C + D.Link-To-A + B.[Adjustment Value] AS CalculatedField
FROM (Table_D AS D INNER JOIN Table_B AS B ON D.Link-To-B = B.Numerical_Key_B)
INNER JOIN Table_C AS C ON C.Numerical_Key_C = D.Link-To-C)
INNER JOIN Table_A AS A ON A.Numerical_Key_A = D.Link-To-A
注意:我没有机会测试它。这只是一个想法。
最后我要警告你:Access 喜欢 () /brackets/ 而使用多个连接。
[EDIT2]
根据讨论,下面的查询应该return计算字段:
SELECT C.MetaLevel, R.LevelAdjustment, C.MetaLevel+ R.LevelAdjustment AS NominalLevel
FROM tblRank AS R INNER JOIN tblCreatures AS C ON R.ID = C.Rank;
如果您想在 tblCreatures 中更新 NominalLevel,请使用如下查询:
UPDATE tblCreatures AS C
INNER JOIN tblRank AS R ON R.ID = C.Rank
SET C.NominalLevel = (C.MetaLevel+ R.LevelAdjustment);
NominalLevel 已更新。你也可以 select 它也...
SELECT C.MetaLevel, R.LevelAdjustment, C.NominalLevel
FROM tblRank AS R INNER JOIN tblCreatures AS C ON R.ID = C.Rank;
干杯,
马切
我使用的是 MS Access 2013。我的数据库有四个相关表:
Table A) Numerical_Key_A, {Other Data Items}
Table B) Numerical_Key_B, "Adjustment Value", {Other Data Items}
Table C) Numerical_Key_C, {Other Data Items}
Table D) {Other Data Items}, Link-to-B, Link-to-A, Link-to-C
但是,它的工作方式是,进入 Table D 记录的链接到 C 始终正好 "Adjustment Value" 远离 Numerical_Key_A。因此,我希望在输入 Link-to-A 和 Link-to-B 时自动计算 Link-to-C。
据我所知,这需要 Table D 有一个计算字段,该字段从链接的 Table B 获取数据,而 Access 不允许这样做。还有另一种方法吗?如果可能的话,我宁愿不使用 VBA,但如果这是唯一的方法,我只需要学习如何去做。 (我知道 VBA 用于 Excel,但以前从未在 Access 中使用过它)。
如果我很了解你,你需要做的就是在 table 之间创建连接,例如:
SELECT D.Field1, D.Field2, B.[Adjustment Value]
FROM Table_D AS D INNER JOIN Table_B AS B ON D.Link-To-B = B.Numerical_Key_B
更多信息,请参阅:
Join tables and queries
How to: Perform Joins Using Access SQL
[编辑]
在tableD中,有一个字段,我在上面的snippit中标记为"Link-to-C"。此字段应填充 Link-to-A 加上 TableB.AdjustmentValue
的值SELECT D.Field1, D.Link-To-C + D.Link-To-A + B.[Adjustment Value] AS CalculatedField
FROM (Table_D AS D INNER JOIN Table_B AS B ON D.Link-To-B = B.Numerical_Key_B)
INNER JOIN Table_C AS C ON C.Numerical_Key_C = D.Link-To-C)
INNER JOIN Table_A AS A ON A.Numerical_Key_A = D.Link-To-A
注意:我没有机会测试它。这只是一个想法。
最后我要警告你:Access 喜欢 () /brackets/ 而使用多个连接。
[EDIT2]
根据讨论,下面的查询应该return计算字段:
SELECT C.MetaLevel, R.LevelAdjustment, C.MetaLevel+ R.LevelAdjustment AS NominalLevel
FROM tblRank AS R INNER JOIN tblCreatures AS C ON R.ID = C.Rank;
如果您想在 tblCreatures 中更新 NominalLevel,请使用如下查询:
UPDATE tblCreatures AS C
INNER JOIN tblRank AS R ON R.ID = C.Rank
SET C.NominalLevel = (C.MetaLevel+ R.LevelAdjustment);
NominalLevel 已更新。你也可以 select 它也...
SELECT C.MetaLevel, R.LevelAdjustment, C.NominalLevel
FROM tblRank AS R INNER JOIN tblCreatures AS C ON R.ID = C.Rank;
干杯,
马切