好吧,我需要一些幫助解決我面臨的問題。 我正在處理一個數據庫項目,並遇到了將貨幣值從各種不同貨幣轉換爲美元的問題。MS Access查詢將數值從一種貨幣轉換爲另一種貨幣
我之所以會遇到困難,是因爲我需要保留原始貨幣格式的原始記錄,但我也必須能夠將這些值轉換爲美元,然後執行一些動態查詢來總結然後將最終結果輸出到一系列報告中。
我已經有一張表,其中包含我所有的交易(其中包括貨幣類型字段和幾個貨幣值字段(每個記錄12個字段)) 我有第二張表,其中包含貨幣類型的參考列表根據它們與美元的關係,在12個月的時間內有必要的轉換率(所以還有12個數字字段)。 (即美元進入後面會有12個字段,其中1對1的匯率爲1)
我希望能夠運行一個查詢,從我的賬戶複製記錄交易表格轉換爲新的表格後,將它們全部轉換爲美元等值價值。但是,我不是撰寫這樣的查詢的專家,並且希望得到一些幫助。是否有可能在查詢中寫入where子句到表達式中,以便它從事務中獲取每條記錄,爲正確的月份找到正確的轉換率,計算數學結果並將其輸出到另一個具有修改值的相同記錄的表?
或者有沒有辦法使用VBA腳本執行相同的功能?如果有的話,你會爲該代碼做出什麼樣的建議?
更新進展/解決方案 所以在審查解決方案和評論這裏是我想出的解決方案。 我以我預期的CurrencyName格式建立了我的匯率表(ExRates),隨後是12個月中每個月的轉換率(這是因爲必須與現有數據庫元素一起工作)
建立了以下2個查詢匹配&轉換
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的這個答案歸功於他,因爲他的回答讓我接觸到幫助我達成解決方案的實驗路線。
再次感謝您的全力幫助
我不願意建議一系列嵌入[IIF](http://office.microsoft.com/en-us/access-help/iif-function-HA001228853.aspx)聲明。你應該可以通過JOIN來完成這個任務。您可能應該更多地將轉換表標準化 - 將每個月放在自己的行上,以便更輕鬆地進行連接。 – JDB
我試圖避免過度正常化我的數據(已經有這個問題),我可以規範化交換到一個單獨的表。你會如何推薦我構造這樣的桌子? –
第三種正常形式是* not * **超過** - 正常化。正常形式是爲了解決常見問題而創建的,幾十年的使用已經證明*它的工作非常出色。 – JDB