提取特定查询记录并在VBA中分配给变量

时间:2018-05-24 09:54:36

标签: sql vba ms-access

我在VBA子中有一个查询,它使用一些先前定义的日期变量,生成一个记录集,其中包含5行数据,遵循以下结构:

ID |货币|日期|率

1 |欧元| 24/05/2018 | 1.24

2 |欧元| 23/05/2018 | 1.23

3 |欧元| 22/05/2018 | 1.22

4 |欧元| 21/05/2018 | 1.21

5 |欧元| 20/05/2018 | 1.20

Query = "SELECT Hist.ID, Hist.Currency, Hist.DateR, Hist.Rate FROM Hist WHERE Hist.Currency= " & CCY & " AND Hist.DateR= #" & TD & "#" OR " Hist.Currency= " & CCY & " AND Hist.DateRef= #" & Date_1 & "#" OR " Hist.Currency= " & CCY & " AND Hist.DateR= #" & Date_2 & "#" OR " Hist.Currency= " & CCY & " AND Hist.DateR= #" & Date_3 & "#" OR " Hist.Currency= " & CCY & " AND Hist.DateR= #" & Date_4 & "#"

我需要将每个日期的费率分配给一个单独的变量; XRate,Date1Rate,Date2Rate,Date3Rate,Date4Rate。以前要为查询中的记录分配变量,我完成了以下操作:

Set rs = CurrentDb.OpenRecordset(Query)
    XRate = rs("Rate")

但是,只有将查询拆分为5个单独的查询,每个日期对应一个查询并按上述方式分配,这才有效。我想知道是否有更聪明的方法来做到这一点,结果是5个变量,每个变量包含特定日期的费率。

感谢任何帮助或指导,谢谢你提前。

1 个答案:

答案 0 :(得分:1)

我决定采用一种稍微不同的方式,效果非常好,这是我的解决方案:

在子例程中,我将每个变量赋值给一个带有两个参数的函数,货币和日期,并返回该日期和货币的汇率。

XRate = GetRate(CCY, TD)
Date1Rate= GetRate(CCY, Date_1)
Date2Rate = GetRate(CCY, Date_2)
Date3Rate= GetRate(CCY, Date_3)
Date4Rate= GetRate(CCY, Date_4)

上述功能存储在一个单独的模块中,如下所示:

Function GetRate(CCY As Variant, RateD As Variant) As Variant

    Dim Query, rs, Rate
    Query = "SELECT Hist.ID, Hist.Currency, Hist.DateR, Hist.Rate FROM Hist WHERE Hist.Currency= " & CCY & " AND Hist.DateR= #" & RateD & "#"

    Set rs = CurrentDb.OpenRecordset(Query)
    Rate = rs("Rate")
GetRate = Rate
rs.Close
Set rs = Nothing

End Function

希望能帮助某人,但是如果有办法根据特定ID访问特定记录,我真的很想知道或者是否有更有效的方法来执行此操作。

相关问题