powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS Курсы валют Интернет
63 сообщений из 63, показаны все 3 страниц
ACCESS Курсы валют Интернет
    #33285359
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно сделать в Форме кнопку, после нажатия которой, указания кода валюты и даты происходила закачка курса валюты из сайта нацыонального банка.??????????????????
Спасибо
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33285450
sraider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В давние времена делал так:
получал html-страницу с адреса

Код: plaintext
1.
"http://www.cbr.ru/currency_base/dynamics.asp?VAL_NM_RQ=R01235&date_req1=" & Format$(ДатаМин, "dd/mm/yyyy") & "&r1=1&date_req2=" & Format$(ДатаМакс, "dd/mm/yyyy") & "&C_month=05&C_year=2004&rt=0&mode=1&val_name=%C4%EE%EB%EB%E0%F0+%D1%D8%C0&x=33&y=5"

И парсил ее таким образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
Private Sub СохранитьКурсы(ByRef Страница As String)
  Dim P As Long, Строка, ВТаблице As Boolean, I As Integer, Данные( 1  To  3 ), S As Integer
  Dim Соединение As New ADODB.Connection, Таблица As New ADODB.Recordset
  
  Соединение.Provider = "sqloledb"
  Соединение.Properties("Data Source").Value = ИмяСервера
  Соединение.Properties("Initial Catalog").Value = ИмяБазы
  Соединение.Properties("Integrated Security").Value = "SSPI" ' Windows NT authentication
  Соединение.Open
  Таблица.Open "[Курсы валют]", Соединение, adOpenKeyset, adLockOptimistic
  
  P =  1 : ВТаблице = False
  Do
    Строка = ИзвлечьСтроку(Страница, P)
    If IsNull(Строка) Then Exit Do
    If ВТаблице Then
      If InStr(Строка, "</table>") <>  0  Then
        Exit Do
      ElseIf InStr(Строка, "<td") <>  0  Then
        If I <=  3  Then
          S = InStr(Строка, ">")
          If S <>  0  Then Данные(I) = Mid$(Строка, S +  1 )
          I = I +  1 
        End If
      ElseIf InStr(Строка, "</tr>") <>  0  Then
        If I >  3  Then
          Таблица.AddNew
          Таблица![Дата] = Данные( 1 )
          Таблица![Курс] = Данные( 3 )
          On Error Resume Next
          Err.Clear
          Таблица.Update
          If Err <>  0  Then Таблица.CancelUpdate
          On Error GoTo  0 
        End If
        I =  1 
      End If
    Else
      If InStr(Строка, "<b>Курс</b>") <>  0  Then
        ВТаблице = True
        I =  1 
      End If
    End If
  Loop
  
  Таблица.Close
  Соединение.Close
End Sub

Private Function ИзвлечьСтроку(ByRef Страница As String, ByRef Указатель As Long)
  Dim P As Long
  
  If Указатель > Len(Страница) Then
    ИзвлечьСтроку = Null
    Exit Function
  End If
  
  P = InStr(Указатель, Страница, vbCrLf)
  If P =  0  Then
    ИзвлечьСтроку = Mid$(Страница, Указатель)
    Указатель = Len(Страница) +  1 
  Else
    ИзвлечьСтроку = Mid$(Страница, Указатель, P - Указатель)
    Указатель = P + Len(vbCrLf)
  End If
End Function

Сейчас гружу через XML.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33285467
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример получения курсов валют в формате XML с сайта ЦБ России (www.cbr.ru) и дальнейшей обработки полученного документа с использованием библиотеки MS Msxml.dll
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33285512
sraider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот то же самое через html
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33285515
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33518476
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кто знает как скачать в ассеss Курс євро на заданый день с национального банка Украины http://www.bank.gov.ua/
Помогите очень надо!!!!
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33518633
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все просто
сохраняй html в определенный файл
линкуй его в базе как таблицу, мастер тебе вывалит все таблицы файла - выбери нужную
дальше работай аки с обычными таблицами Акса
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33518698
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1Если кто знает как скачать в ассеss Курс євро на заданый день с национального банка Украины http://www.bank.gov.ua/
Помогите очень надо!!!!
а искать на http://www.bank.gov.ua/ ссылку мы должны сами ?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33518750
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверно я точно не знаю но очень надо
http://www.bank.gov.ua/kurs/last_kurs1.htm
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33518838
re500c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bass1Наверно я точно не знаю но очень надо

такие перлы потом Задорнов с Петросяном по ТВ крутят... теперь понятно откуда они берутся :)
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33523659
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может это вам поможет!
Есть форма с датой и ячейкой для курса нужно постоянно самому заполнять ячейку с курсом.

Помогите сделать так чтобы после нажатия на форме кнопки, курс евро к гривне(Украина) заносился в ячейку для курса. http://www.ufs.com.ua/xml/nbu_fx.php
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33523785
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1Может это вам поможет!
Есть форма с датой и ячейкой для курса нужно постоянно самому заполнять ячейку с курсом.

Помогите сделать так чтобы после нажатия на форме кнопки, курс евро к гривне(Украина) заносился в ячейку для курса. http://www.ufs.com.ua/xml/nbu_fx.php
см.импорт с cbr , поскольку формат xml схож проблем не предвидиться
например здесь
/topic/80087
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33524210
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по детски - так(XML в референцес):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Sub Кнопка0_Click()
Dim MyStr As String
Dim MyDoc As MSXML2.DOMDocument
Dim MyNodeList As MSXML2.IXMLDOMNodeList
Dim MyNode As MSXML2.IXMLDOMNode
Dim MyCt As Long
Dim IntCt As Long
Set MyDoc = New MSXML2.DOMDocument
        MyDoc.async = False
        MyStr = "http://www.ufs.com.ua/xml/nbu_fx.php"
        If Not MyDoc.Load(MyStr) = True Then
             MsgBox ("Документ не загружен,инет ёк/ресурс ёк")
             Set MyDoc = Nothing
             Exit Sub
        End If
Set MyNodeList = MyDoc.selectNodes("r00t")
Set MyNode = MyNodeList.Item( 0 ).cloneNode(True)
For MyCt = MyNode.childNodes.length -  1  To  0  Step - 1 
    If Left(MyNode.childNodes.Item(MyCt).Text,  3 ) = "EUR" Then
        For IntCt = MyNode.childNodes.Item(MyCt).childNodes.length -  1  To  0  Step - 1 
            If MyNode.childNodes.Item(MyCt).childNodes(IntCt).baseName = "rate" Then
                MsgBox ("Курс евро валюты--->" & MyNode.childNodes.Item(MyCt).childNodes(IntCt).Text)
            Set MyDoc = Nothing
            Exit Sub
            End If
        Next IntCt
    End If
Next MyCt
MsgBox ("Облом - паник дамп")
Set MyNode = Nothing
Set MyNodeList = Nothing
Set MyDoc = Nothing
End Sub
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33528480
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!!!
Всьо работает
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33528777
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1Большое спасибо!!!
Всьо работает
а гривны где ?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33529229
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если бы они были ато только евры да евры!
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33529241
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что нужно дописать чтобы показывало ещё и дату возле курса?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33529668
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1А что нужно дописать чтобы показывало ещё и дату возле курса?
не понял - курс ТЕКУЩИЙ , т.е. Date()
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33529835
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1Если бы они были ато только евры да евры!
Евры тоже пойдут
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33530354
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сайте есть и дата
В 18:00 крс дается на следущий день и дата меняется, тоестьт не текущая

- <item>
<title>EUR</title>
- <link>
- <![CDATA[ http://ufs.com.ua/currency/curgraph.php?CharID=EUR&Mode=Off&Date=&Amount=30&Table=&Graphic=
]]>
</link>
<description>евро</description>
<rate>604.6365</rate>
<qty>100</qty>
<chg>-0.4040</chg>
<date>2006-02-08</date>
</item>
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33530358
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно сделать так чтобы можно было копировать курс из окошка?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33530596
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1А можно сделать так чтобы можно было копировать курс из окошка?
1 можно - делайте
2 <date>2006-02-08</date> - достаньте, если настолько не владете VBA , что не можете понять мой код - меняйте специальность, это диагноз
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33532240
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет не владею
По спецыальности конструктор.
Для упрощения расчетов для нашых секретарей сделал базу в АССЕSS (большую: заказы-товары-списание материалов-расчет времени на производство-планирование.........)
Я саамоучка! Учусь, разбираюсь, хочу понять....
Есть Хорошие Люди - помагают
Спасибо.......!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33648662
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как сделать так чтобы можно было копировать курс из окошка
и вытянуть дату
пожалуйста!
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #33648805
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bass1Подскажите как сделать так чтобы можно было копировать курс из окошка
и вытянуть дату
пожалуйста!
вот цеж приперло - код менять
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035670
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1)Подскажите как сделать так чтобы можно было копировать курс из окошка
2)вытянуть дату
пожалуйста!!!
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035718
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какого окошка? откуда вытянуть? какую дату?
_____________________________________
Мое конг-фу сильнее твоего
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035726
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так получаю курсы валют
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
'Функция для получения курса валюты по коду на определенную дату
'c интернет-ресурса http://www.cbr.ru/scripts/XML_daily.asp?date_req=
'использует MS Msxml.dll
Public Function GetCourse(CURRENCYID As Long, onDate As Date) As Double
  On Error GoTo ErrGetCourse
    Dim xmlDoc As MSXML2.DOMDocument
    Dim xmlNode As MSXML2.IXMLDOMNode
    'если не стоит в ссылках MicroSoft XML, ver.5 то используйте тип Object
    'Dim xmlDoc As Object
    'Dim xmlNode As Object
    
    Dim i As Integer, j As Integer
    Dim strSQL As String, strVal As String, strCourse As String
    
    DoCmd.Hourglass True
    If onDate > Date +  1  Then
        DoCmd.Hourglass False
        'MsgBox "Слишком рано, вы не получите достоверного курса валюты!!!", , "Опрерация преостановленна."
        GetCourse = - 3  'Слишком рано, вы не получите достоверного курса валюты
        Exit Function
    End If
    'Выбор валюты
    If CURRENCYID = GetUSDID Then     'Доллар
        strVal = "USD"
    ElseIf CURRENCYID = GetEURID Then 'Евро
        strVal = "EUR"
    ElseIf CURRENCYID = GetUEID Then  'У.Е.
        GetCourse =  35 
        Exit Function
    ElseIf CURRENCYID = GetRUSID Then 'Рубль
        GetCourse =  1 
        Exit Function
    Else
        GetCourse = - 2                 'неверный код валюты
        Exit Function
    End If
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    xmlDoc.async = False ' флаг асинхронной загрузки документа
    ' загружаем документ по url
    If Not xmlDoc.Load("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" & Format(onDate, "dd.mm.yyyy")) Then
        GetCourse = - 4 
        DoCmd.Hourglass False
        MsgBox ("Документ не загружается. Проверьте подключение к Интернету или ссылка не работает.")
        GoTo Exit_GetCourse
    End If
        'dateXML = xmlDoc.selectNodes("ValCurs").Item(0).cloneNode(True).Attributes(0).Text
        'Debug.Print dateXML
    Set xmlNode = xmlDoc.selectNodes("ValCurs").Item( 0 ).cloneNode(True)
    For i =  0  To xmlNode.childNodes.Length -  1 
        'Выбираем в дереве XML документа ветку с нужной валютой
        If xmlNode.childNodes.Item(i).childNodes.Item( 1 ).Text = strVal Then
            strCourse = xmlNode.childNodes.Item(i).childNodes.Item( 4 ).Text
            'Debug.Print strCourse
            For j =  1  To Len(strCourse) 'заменяем "," на "."
                If mid(strCourse, j,  1 ) = "," Then
                    Mid(strCourse, j,  1 ) = "."
                End If
            Next j
            Exit For
        End If
    Next i
    GetCourse = CDbl(strCourse)
Exit_GetCourse:
    Set xmlDoc = Nothing
    Set xmlNode = Nothing
    DoCmd.Hourglass False
    Exit Function
ErrGetCourse:
    DoCmd.Hourglass False
    GetCourse = - 1 
    Resume Exit_GetCourse
End Function
_____________________________________
Мое конг-фу сильнее твоего
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035783
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сайт http://www.ufs.com.ua/xml/nbu_fx.php


авторPrivate Sub Кнопка0_Click()
Dim MyStr As String
Dim MyDoc As MSXML2.DOMDocument
Dim MyNodeList As MSXML2.IXMLDOMNodeList
Dim MyNode As MSXML2.IXMLDOMNode
Dim MyCt As Long
Dim IntCt As Long
Set MyDoc = New MSXML2.DOMDocument
MyDoc.async = False
MyStr = "http://www.ufs.com.ua/xml/nbu_fx.php"
If Not MyDoc.Load(MyStr) = True Then
MsgBox ("Документ не загружен,инет ёк/ресурс ёк")
Set MyDoc = Nothing
Exit Sub
End If
Set MyNodeList = MyDoc.selectNodes("r00t")
Set MyNode = MyNodeList.Item(0).cloneNode(True)
For MyCt = MyNode.childNodes.length - 1 To 0 Step -1
If Left(MyNode.childNodes.Item(MyCt).Text, 3) = "EUR" Then
For IntCt = MyNode.childNodes.Item(MyCt).childNodes.length - 1 To 0 Step -1
If MyNode.childNodes.Item(MyCt).childNodes(IntCt).baseName = "rate" Then
MsgBox ("Курс евро валюты--->" & MyNode.childNodes.Item(MyCt).childNodes(IntCt).Text)
Set MyDoc = Nothing
Exit Sub
End If
Next IntCt
End If
Next MyCt
MsgBox ("Облом - паник дамп")
Set MyNode = Nothing
Set MyNodeList = Nothing
Set MyDoc = Nothing
End Sub
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035864
Bass1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне нужно с Украинского сайта!!!!!!!!!!!!!!!! Украинские курсы
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #34035949
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может лоботомия поможет ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ACCESS Курсы валют Интернет
    #37326894
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые Гуру.
Решил оптимизировать свою работу дабы оставалось время на обучение поэтому сейчас занимаюсь тем что делаю базу в access по обработке данных из процессинга, все бы ничего только если с access знаком немного то с VB только понаслышке, в данном топике много примеров по загрузке курсов с сайта ЦБ, а как бы их немного переделать под мои нужды?
Суть такова:
В access есть таблица ("Курсы Валют") со столбцами: Дата, USD, EUR.
Хотелось бы чтобы при нажатии кнопки из формы "обновить курсы" запускалась програмка которая проверяла последнюю дату(в таблице "Курсы валют") за которую курсы загружены и загружала новые курсы в эту таблицу с даты за которую они есть по текущую, если курсы не загружались ни разу то возникал бы запрос с какой даты загрузить курсы, после обновления появлялось бы сообщение "Курсы актуальны на DDMMYYYY", при отсутствии доступа к сайту cbr.ru возникало сообщение "Нет доступа к сайту ЦБ". Очень расчитываю на ваше понимание, помощь и поддержку.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37326920
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Я бы подрихтовал ф-ию - за один присест имеет смысл получать курс не одной валюты на заданную дату а всех нужных валют на заданную дату - в отклике сайта ЦБР именно так и есть.
2. Остальное - приятное VBA программирование на собственных формах.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37326927
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л,

необходима именно таблица с курсами за дату, потому что база будет архивом транзакций в разных валютах при обращении к которой вся статистика должна формироваться в рублях.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37326934
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л,

За один присест - это здорово, если бы я так мог, я бы обязательно Вам помог :)
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37326956
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zerber-ruЗа один присест - это здорово, если бы я так мог, я бы обязательно Вам помог :)
Посмотрите код ф-ии. Она получает курсы многих валют за дату и затем вытаскивает из XML значение только для одного заданного кода валюты. Вам же надо:

Сформировать список или массив кодов валют для передачи как аргумен ф-ии.
В ней извлекать курсы для каждого кода валюты.
Вернуть курсы в вызывающую программу как выходной аргумент.

Затем рекордсетом или инсертом вставить эти значения в вашу БД.

Для получения курсов за интервал дат повторить эту процедуру для каждой отдельно взятой даты.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37326965
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите пример. Мне кажется под Ваши нужды он подойдет.
При необходимости можно легко доработать в зависимости от того что Вы хотите.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327026
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Лzerber-ruЗа один присест - это здорово, если бы я так мог, я бы обязательно Вам помог :)
Посмотрите код ф-ии. Она получает курсы многих валют за дату и затем вытаскивает из XML значение только для одного заданного кода валюты. Вам же надо:

Сформировать список или массив кодов валют для передачи как аргумен ф-ии.
В ней извлекать курсы для каждого кода валюты.
Вернуть курсы в вызывающую программу как выходной аргумент.

Затем рекордсетом или инсертом вставить эти значения в вашу БД.

Для получения курсов за интервал дат повторить эту процедуру для каждой отдельно взятой даты.

Если у Вас найдется немного времени буду Вам очень благодарен если Вы сможете мне объяснить некоторые моменты.
потому как логика выполнения загрузки мне понятна, проблема в том как это написать на VB.

1. В листе "Курсы Валют" ищем дату([Дата]) за которую курсы известны.
2. Если курсы валют отсутствуют или даты нет выдаем запрос "с какой даты загрузить курсы"
3. n=1
4. Пишем запрос к серверу cbr.ru
5. Если сервер недоступен или отсутствует подключение к интернет пишем сообщение "Невозможно загрузить курсы. ПРоверьте подключение к интернет или доступность сервера cbr.ru" GOTO 12
6. Проверяем [Дата]=([Текущая Дата]-1) Если да то сообщение "Курсы актуальны. Обновление не требуется" GOTO 12
7. находим курсы за дату [Дата]+n
8. Резльтат вставляем в таблицу "Курсы Валют" в строку с значением даты [Дата]+n в столбец соответствующий коду валюты
9. Проверяем если [Дата]+n=([Текущая Дата]-1) GOTO 11
10. Иначе n=n+1 goto 7
11. сообщнение " Курсы актуальны на [Дата]+n
12. Конец программы

Наверное как то так.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327043
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALEXIS_22Посмотрите пример. Мне кажется под Ваши нужды он подойдет.
При необходимости можно легко доработать в зависимости от того что Вы хотите.

Спасибо за отклик.

Здесь курсы загружаются для просмотра в свободную таблицу в форме.
Я так понимаю, для того чтобы они загружались в отдельную таблицу(при условии одинаковых заголовков) нужно изменить вот эту строку:

Me!lstRate.RowSource = strS

а именно Me!lstRate

Что необходимо здесь написать чтобы курсы вставлялись в таблицу Curs
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327093
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗдесь курсы загружаются для просмотра в свободную таблицу в форме.
Формируется строка с данными по курсам валют, которая служит .RowSource (источником строк) для элемента список.

Вам по всей видимости нужно заполнить (дополнить) получаемыми данными таблицу Curs.
Это можно делать или работая с рекордсетом (метод .AddNew), или используя инструкцию SQL (INSERT INTO).

Данные в форме можно выводить через список или подчиненную форму. Для подчиненной формы используйте свойство .RecordSource
(на основе Вашей таблицы или запроса).
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327199
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALEXIS_22,

прицеплен файл с базо где загружаются курсы так как мне надо только вылетает ошибка не могу понять почему.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327356
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторALEXIS_22,
прицеплен файл с базо где загружаются курсы так как мне надо только вылетает ошибка не могу понять почему.

У меня ошибка не вылетает. Что именно не так?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327385
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALEXIS_22,

скрин
У меня access 2007
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327421
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может из-за этого ?
Код: plaintext
& "WHERE [NumCode] In (SELECT [color=red]CStr([/color][Код][color=red]) [/color]FROM Валюты)"
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327424
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извините, хотел выделить

Код: plaintext
& "WHERE [NumCode] In (SELECT [color=red]CStr([/color][Код]) FROM Валюты)"
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327452
zerber-ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALEXIS_22,

Вы гений!
Поменяв тип данных на "текстовый" все заработало, только остался вопрос, почему без этих изменений работало у Вас?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327457
ALEXIS_22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу сказать. У меня MS ACCESS 2003 (SP3).
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37327539
цукенг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо за советы и поддержку.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37368752
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zerber-ruALEXIS_22,

Вы гений!
Поменяв тип данных на "текстовый" все заработало, только остался вопрос, почему без этих изменений работало у Вас?

Хочу поблагодарить всех, кто оставил тут свои решения и советы.

У меня тоже случай с ошибкой. Дело в том, что само значение курса валюты у меня передается в виде 1.1111, то есть с точкой вместо запятой. И как следствие выдается ошибка типа данных.
Уже все перепробовал. Решил проблему только установкой текстового типа данных для поля с курсом валюты.

То есть в примере ниже, взятом из файла выше ), значение Value никак не форматируется в другой формат, кроме текстового.

Код: plaintext
1.
2.
3.
4.
        CurrentProject.Connection.Execute "INSERT INTO [Курсы валют] ( [Код валюты], [Курс ЦБ], Дата ) " _
        & "select NumCode , Value , " & Format(dateMax, "\#mm\/dd\/yyyy\#") _
        & " FROM Valute " _
        & "WHERE [NumCode] In (SELECT CStr([Код]) FROM Валюты)"
        CurrentProject.Connection.Execute "drop table Valute"
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37368768
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не дописал....

Может кто знает как его форматнуть в нормальный вид, чтобы потом можно было оперировать с числовыми значениями курса.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37368793
askerli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MacroНе дописал....

Может кто знает как его форматнуть в нормальный вид, чтобы потом можно было оперировать с числовыми значениями курса.
val(replace("1,1111",",","."))
пойдет?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #37368907
Macro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
askerliMacroНе дописал....

Может кто знает как его форматнуть в нормальный вид, чтобы потом можно было оперировать с числовыми значениями курса.
val(replace("1,1111",",","."))
пойдет?

Большое спасибо. Подошел этот вариант.
Для начала прохожу импортированную таблицу с данными курсов и меняю значения с точек на запятые, а уже потом пишу их в постоянную таблицу курсов с денежным форматом поля.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ACCESS Курсы валют Интернет
    #39169717
1234_5678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как (где) посмотреть название всех полей возвращаемых ЦБ?
мне бы вытащить обозначение валюты ("$", "EUR"...) и курс не только "за рубль" (как во всех примерах), но и "за $", "за EUR".
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #39169852
1234_5678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашёл, "CharCode" энто называется...
но вопрос с кросскурсом остаётся актуальным, на сайте ЦБ в явном виде не нашёл.

сегодня за доллар дают 79,1144р, за евро - 89,3439р, примем условно 80 и 90
правильно ли будет считать доллар за евро 1,125, а евро за доллар 0,8889?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #39266647
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RVI, подскажите, как дальше эти данные, которые скачивает RateXML импортировать в таблицу?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ACCESS Курсы валют Интернет
    #40025478
annetby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, не могу понять почему не загружаются курсы валют.
Функция рабочая, много лет использовалась (Access 2003 + SQL SERVER.2000).
...
Dim xd, nl, N, i, j, USD, EUR, RUB, CurrDate, CurrDate2, sql
Dim ce As Variant
If IsNull(DLookup("DateCur", "tCurChange", "DateCur = '" & Date & "'")) Then
Set xd = CreateObject("Msxml.DOMDocument")
xd.async = False
If Not xd.Load(" https://www.nbrb.by/Services/XmlExRates.aspx") = True Then
MsgBox ("Ошибка получения документа с курсами валют")
Else
MsgBox ("Документ с курсами валют получен")
Set nl = xd.selectNodes("DailyExRates")
Set N = nl.Item(0).CloneNode(True)
...

Выдает - MsgBox ("Ошибка получения документа с курсами валют")

в браузере страницу открывает https://www.nbrb.by/Services/XmlExRates.aspx.
На сайте Нацбанка сообщение опубликовано о переходе на протокол https:
Версия для печати
RSS канал (RSS 2.0)

В сентябре 2020 года запланирован переход официального интернет-сайта Национального банка Республики Беларусь на работу только по протоколу https.

С момента перехода все сервисы интернет-сайта (новости в формате RSS, API, получение данных, используя XML, и др.) будут также доступны только по протоколу https. В связи с вышесказанным, рекомендуем при необходимости заблаговременно перенастроить клиентское программное обеспечение для доступа к указанным сервисам.

Попробывала подключиться к России If Not xd.Load(" http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + Format(Date, "dd\/mm\/yyyy")) Then - отработала правильно.

Поделитесь пожалуйста идеями . Спасибо.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025518
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
annetby
Ребята, не могу понять почему не загружаются курсы валют.
Функция рабочая, много лет использовалась (Access 2003 + SQL SERVER.2000).
...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Dim xd, nl, N, i, j, USD, EUR, RUB, CurrDate, CurrDate2, sql
    Dim ce As Variant
    If IsNull(DLookup("DateCur", "tCurChange", "DateCur = '" & Date & "'")) Then
        Set xd = CreateObject("Msxml.DOMDocument")
        xd.async = False
        If Not xd.Load("https://www.nbrb.by/Services/XmlExRates.aspx") = True Then
            MsgBox ("Ошибка получения документа с курсами валют")
        Else
            MsgBox ("Документ с курсами валют получен")
            Set nl = xd.selectNodes("DailyExRates")
            Set N = nl.Item(0).CloneNode(True)
...


Выдает - MsgBox ("Ошибка получения документа с курсами валют")

в браузере страницу открывает (подозрительная ссылка!) https://www.nbrb.by/Services/XmlExRates.aspx.
На сайте Нацбанка сообщение опубликовано о переходе на протокол https:
Версия для печати
RSS канал (RSS 2.0)

В сентябре 2020 года запланирован переход официального интернет-сайта Национального банка Республики Беларусь на работу только по протоколу https.

С момента перехода все сервисы интернет-сайта (новости в формате RSS, API, получение данных, используя XML, и др.) будут также доступны только по протоколу https. В связи с вышесказанным, рекомендуем при необходимости заблаговременно перенастроить клиентское программное обеспечение для доступа к указанным сервисам.

Попробывала подключиться к России If Not xd.Load(" (подозрительная ссылка!) http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + Format(Date, "dd\/mm\/yyyy")) Then - отработала правильно.

Поделитесь пожалуйста идеями . Спасибо.
нормально всё отработало ...
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
?xd.xml
<?xml version="1.0"?>
<DailyExRates Date="12/08/2020">
    <Currency Id="170">
        <NumCode>036</NumCode>
        <CharCode>AUD</CharCode>
        <Scale>1</Scale>
        <Name>Австралийский доллар</Name>
        <Rate>1.8959</Rate>
    </Currency>
    <Currency Id="191">
        <NumCode>975</NumCode>
        <CharCode>BGN</CharCode>
        <Scale>1</Scale>
        <Name>Болгарский лев</Name>
        <Rate>1.5875</Rate>
    </Currency>
    <Currency Id="290">
        <NumCode>980</NumCode>
        <CharCode>UAH</CharCode>
        <Scale>100</Scale>
        <Name>Гривен</Name>
        <Rate>9.094</Rate>
    </Currency>
    <Currency Id="291">
        <NumCode>208</NumCode>
        <CharCode>DKK</CharCode>
        <Scale>10</Scale>
        <Name>Датских крон</Name>
        <Rate>4.1708</Rate>
    </Currency>
    <Currency Id="145">
        <NumCode>840</NumCode>
        <CharCode>USD</CharCode>
        <Scale>1</Scale>
        <Name>Доллар США</Name>
        <Rate>2.5674</Rate>
    </Currency>
    <Currency Id="292">
        <NumCode>978</NumCode>
        <CharCode>EUR</CharCode>
        <Scale>1</Scale>
        <Name>Евро</Name>
        <Rate>3.1076</Rate>
    </Currency>
    <Currency Id="293">
        <NumCode>985</NumCode>
        <CharCode>PLN</CharCode>
        <Scale>10</Scale>
        <Name>Злотых</Name>
        <Rate>6.9366</Rate>
    </Currency>
    <Currency Id="355">
        <NumCode>392</NumCode>
        <CharCode>JPY</CharCode>
        <Scale>100</Scale>
        <Name>Иен</Name>
        <Rate>2.4617</Rate>
    </Currency>
    <Currency Id="303">
        <NumCode>364</NumCode>
        <CharCode>IRR</CharCode>
        <Scale>100000</Scale>
        <Name>Иранских риалов</Name>
        <Rate>6.1129</Rate>
    </Currency>
    <Currency Id="294">
        <NumCode>352</NumCode>
        <CharCode>ISK</CharCode>
        <Scale>100</Scale>
        <Name>Исландских крон</Name>
        <Rate>2.041</Rate>
    </Currency>
    <Currency Id="23">
        <NumCode>124</NumCode>
        <CharCode>CAD</CharCode>
        <Scale>1</Scale>
        <Name>Канадский доллар</Name>
        <Rate>2.0028</Rate>
    </Currency>
    <Currency Id="304">
        <NumCode>156</NumCode>
        <CharCode>CNY</CharCode>
        <Scale>10</Scale>
        <Name>Китайских юаней</Name>
        <Rate>3.9255</Rate>
    </Currency>
    <Currency Id="72">
        <NumCode>414</NumCode>
        <CharCode>KWD</CharCode>
        <Scale>1</Scale>
        <Name>Кувейтский динар</Name>
        <Rate>8.4296</Rate>
    </Currency>
    <Currency Id="296">
        <NumCode>498</NumCode>
        <CharCode>MDL</CharCode>
        <Scale>10</Scale>
        <Name>Молдавских леев</Name>
        <Rate>1.4823</Rate>
    </Currency>
    <Currency Id="286">
        <NumCode>554</NumCode>
        <CharCode>NZD</CharCode>
        <Scale>1</Scale>
        <Name>Новозеландский доллар</Name>
        <Rate>1.8009</Rate>
    </Currency>
    <Currency Id="297">
        <NumCode>578</NumCode>
        <CharCode>NOK</CharCode>
        <Scale>10</Scale>
        <Name>Норвежских крон</Name>
        <Rate>2.8932</Rate>
    </Currency>
    <Currency Id="298">
        <NumCode>643</NumCode>
        <CharCode>RUB</CharCode>
        <Scale>100</Scale>
        <Name>Российских рублей</Name>
        <Rate>3.456</Rate>
    </Currency>
    <Currency Id="299">
        <NumCode>960</NumCode>
        <CharCode>XDR</CharCode>
        <Scale>1</Scale>
        <Name>СДР (Специальные права заимствования)</Name>
        <Rate>3.6952</Rate>
    </Currency>
    <Currency Id="119">
        <NumCode>702</NumCode>
        <CharCode>SGD</CharCode>
        <Scale>1</Scale>
        <Name>Сингапурcкий доллар</Name>
        <Rate>1.918</Rate>
    </Currency>
    <Currency Id="300">
        <NumCode>417</NumCode>
        <CharCode>KGS</CharCode>
        <Scale>100</Scale>
        <Name>Сомов</Name>
        <Rate>3.0266</Rate>
    </Currency>
    <Currency Id="301">
        <NumCode>398</NumCode>
        <CharCode>KZT</CharCode>
        <Scale>1000</Scale>
        <Name>Тенге</Name>
        <Rate>6.0819</Rate>
    </Currency>
    <Currency Id="302">
        <NumCode>949</NumCode>
        <CharCode>TRY</CharCode>
        <Scale>10</Scale>
        <Name>Турецких лир</Name>
        <Rate>3.2723</Rate>
    </Currency>
    <Currency Id="143">
        <NumCode>826</NumCode>
        <CharCode>GBP</CharCode>
        <Scale>1</Scale>
        <Name>Фунт стерлингов</Name>
        <Rate>3.4057</Rate>
    </Currency>
    <Currency Id="305">
        <NumCode>203</NumCode>
        <CharCode>CZK</CharCode>
        <Scale>100</Scale>
        <Name>Чешских крон</Name>
        <Rate>11.6987</Rate>
    </Currency>
    <Currency Id="306">
        <NumCode>752</NumCode>
        <CharCode>SEK</CharCode>
        <Scale>10</Scale>
        <Name>Шведских крон</Name>
        <Rate>3.0226</Rate>
    </Currency>
    <Currency Id="130">
        <NumCode>756</NumCode>
        <CharCode>CHF</CharCode>
        <Scale>1</Scale>
        <Name>Швейцарский франк</Name>
        <Rate>2.8736</Rate>
    </Currency>
</DailyExRates>


что выводит такое
Код: vbnet
1.
2.
3.
4.
    If Not xd.Load("https://www.nbrb.by/Services/XmlExRates.aspx") = True Then
'        MsgBox ("Ошибка получения документа с курсами валют")
        MsgBox xd.ParseError.reason
    Else
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025527
annetby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
выдает сообщение: Не удается найти указанный ресурс/
Спасибо
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025529
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
annetby
court,
выдает сообщение: Не удается найти указанный ресурс/
Спасибо
интернет не через прокси ?
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025531
annetby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
Вы правы, через прокси.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025543
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
annetby
court,
Вы правы, через прокси.
а как тогда на cbr.ru подключилось ?

вообщем, если дело в прокси, то нужно использовать какой-то объект, который умеет через него подключаться
MSXML2.ServerXMLHTTP например
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025546
annetby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

не понимаю почему загрузилась Россия. Сегодня еще раз подключилась к России, загружает. Свой - нет :-(
Спасибо.
...
Рейтинг: 0 / 0
ACCESS Курсы валют Интернет
    #40025550
annetby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На скрепке принтскрин отработки функции НацБанк РБ и России
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS Курсы валют Интернет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]