powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS Курсы валют Интернет
25 сообщений из 63, страница 2 из 3
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
25 сообщений из 63, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS Курсы валют Интернет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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