Извлечь конкретную запись запроса и назначить переменную в VBA - PullRequest
0 голосов
/ 24 мая 2018

У меня есть запрос внутри подпрограммы VBA, который, используя некоторые ранее определенные переменные даты, создает набор записей с 5 строками данных, которые соответствуют приведенной ниже структуре:

ID |Валюта |Дата |Оценить

1 |EUR |24/05/2018 |1,24

2 |EUR |23/05/2018 |1,23

3 |EUR |22/05/2018 |1,22

4 |EUR |21/05/2018 |1,21

5 |EUR |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 голосов
/ 24 мая 2018

Я решил пойти по этому пути немного по-другому, который работает очень хорошо, вот мое решение:

В подпрограмме я назначаю каждую переменную функции, которая принимает два аргумента, Currency и Date, и возвращаеткурс на эту дату и валюту.

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

Надеюсь, что кому-то поможет, однако, если естьспособ получить доступ к конкретным записям на основе определенных идентификаторов, я бы очень хотел знать, или есть ли более эффективный способ сделать эту операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...