MS Access查询将值从一种货币转换为另一种货币

时间:2014-01-09 17:37:58

标签: sql vba ms-access

好吧,我需要对我面临的问题提供一些帮助。 我正在研究一个数据库项目,并且遇到了将各种不同货币的货币价值转换成美元的问题。

我遇到困难的原因是我需要以原始货币格式保留原始记录,但我还必须能够将这些值转换为美元,然后执行一些动态查询以总结特定值记录,然后将最终结果输出到一系列报告中。

我已经有一个包含所有交易的表格(包括货币类型字段和几个货币值字段(每个记录12个字段)) 我有第二个表格,其中包含货币类型的参考列表以及12个月期间的必要转换率(因此,12个数字字段)基于它们与美元的关系。 (即美元的进入之后会有12个字段,其中1对1汇率的值均为1)

我希望能够运行一个查询,将所有记录从我的事务表复制到新表后,将它们全部转换为美元等值值。但是,我不是编写此类查询的专家,并希望得到一些帮助。是否可以将where子句写入查询中的表达式,以便从事务中获取每个记录,找到正确月份的正确转换率,数学并输出到具有修改值的相同记录的另一个表? / p>

或者有没有办法使用VBA脚本执行相同的功能?如果是的话,你会对该代码提出什么样的建议?

进展/解决方案的更新 因此,在审查了解决方案和评论后,我提出了解决方案。 我以我原定的CurrencyName格式构建了我的汇率表(ExRates),然后是12个月中每个月的转换率(这是由于必须使用现有的数据库元素)

构建以下2个查询Match&转换

    SELECT ForcastTrans.*, ExRates.JanRate, ExRates.FebRate, ExRates.MarRate, ExRates.AprRate, ExRates.MayRate, ExRates.JunRate, ExRates.JulRate, ExRates.AugRate, ExRates.SepRate, ExRates.OctRate, ExRates.NovRate, ExRates.DecRate
    FROM ForcastTrans, ExRates
    WHERE ForcastTrans.Currency=ExRates.CurrencyName;

    SELECT qryExRatematch.EntityID, qryExRatematch.Account, qryExRatematch.Currency, [qryExRatematch]![Month1]*[qryExRatematch]![JanRate] AS Jan, [qryExRatematch]![Month2]*[qryExRatematch]![FebRate] AS Feb, [qryExRatematch]![Month3]*[qryExRatematch]![MarRate] AS Mar, [qryExRatematch]![Month4]*[qryExRatematch]![AprRate] AS Apr, [qryExRatematch]![Month6]*[qryExRatematch]![JunRate] AS Jun, [qryExRatematch]![Month7]*[qryExRatematch]![JulRate] AS Jul, [qryExRatematch]![Month8]*[qryExRatematch]![AugRate] AS Aug, [qryExRatematch]![Month9]*[qryExRatematch]![SepRate] AS Sep, [qryExRatematch]![Month10]*[qryExRatematch]![OctRate] AS Oct, [qryExRatematch]![Month11]*[qryExRatematch]![NovRate] AS Nov, [qryExRatematch]![Month12]*[qryExRatematch]![DecRate] AS [Dec]
    FROM qryExRatematch
    ORDER BY qryExRatematch.EntityID, qryExRatematch.Account, qryExRatematch.Currency;

这些让我得到了我需要的转化,我可以将报告查询重新连接到这些表格,而不是我没有转换的原始表格。

感谢大家的帮助,建议和意见,我赞扬Johnny Bones的答案,因为他的回答让我进行了一系列实验,帮助我找到解决方案。

再次感谢您的帮助

1 个答案:

答案 0 :(得分:3)

你的桌布是否一成不变?最简单的方法是使用3个字段设置货币表:

  • CurrencyDate - 新货币汇率的日期
  • CurrencyName - 货币名称(日元,英镑,弗兰克等......)
  • CurrencyRate - 当天的汇率

然后,您将设置一个名为qryCurrentExchange的查询,您可以在其中获取每种货币的最大值(CurrencyDate)。这将为您提供一个查询,其中包含每种货币的当前激励率。

使用您的交易表创建另一个查询,并通过CurrencyName对上述查询进行内部加入,您应该能够提取汇率,您可以将其乘以交易表中的货币字段。如果要将结果输出到表,可以保留查询原样或将其转换为Make Table查询。