Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подгрузить данные о банке по БИК / 17 сообщений из 17, страница 1 из 1
23.06.2015, 12:21
    #38990542
Damasevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Здравствуйте!

У меня есть приложение на VBA (Аксесс 2007).
Стоит задача - по нажатию кнопки подгружать в нужные поля кор.счет и наименование банка имея только БИК.
Сейчас я импортирую таблицу БИКов себе в приложение вручную и обновляю раз в полгода.
Выглядит это так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Заполнить_по_БИК_Click()

On Error Resume Next

Dim Ks, Bank, Bik

Bik = Me![БИК].Value
Ks = Me![КС].Value

If IsNull(Bik) Then
        MsgBox ("Введите БИК!")
        Exit Sub
Else
        Bik = Me![БИК].Value
        Ks = DLookup("CorrAcc", "tblBIC", "BIC='" & Me![БИК] & "'")
        Bank = DLookup("Bank", "tblBIC", "BIC='" & Me![БИК] & "'")
End If

If IsNull(Ks) And IsNull(Bank) Then MsgBox ("В базе БИКов такого банка нет. Последнее обновление базы 30.07.2014 г.")
Me![КС].Value = Ks
Me![БИК].Value = Bik
Me![Банк].Value = Bank

End Sub



Но хочется по-взрослому: чтоб все всегда было актуально само.
Вот на http://www.bik-info.ru/base.html нашел такое:

авторAPI: получение информации по одному БИК номеру
Для получения информации в формате JSON: http://www.bik-info.ru/api.html?type=json&bik=НОМЕР_БИК (Кодировка UTF-8)

В формате XML: http://www.bik-info.ru/api.html?type=xml&bik=НОМЕР_БИК (Кодировка Windows-1251)

Что из этого и куда я должен вставить чтобы получить результат?
Или хотя бы где прочитать?

Заранее спасибо!
...
Рейтинг: 0 / 0
23.06.2015, 12:46
    #38990569
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
DamasevichЧто из этого и куда я должен вставить чтобы получить результат?
Или хотя бы где прочитать?
В твоём случае я рекомендую бросить на форму MS Inet Transfer Control, получить ответ в XML и распарсить его вручную стандартными текстовыми функциями.
...
Рейтинг: 0 / 0
23.06.2015, 15:49
    #38990791
9982
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Damasevich,

Код: vbnet
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.
Function test(ByVal БИК As String)
    Dim xmlDoc As Object
    Dim xmlhtp As Object
    Dim adoStream As Object
    
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    xmlDoc.async = False
    
    Set adoStream = CreateObject("ADODB.Stream")
    adoStream.Open
    adoStream.Type = 1
    
    Set xmlhtp = CreateObject("MSXML2.XMLHTTP")
    With xmlhtp
        .Open "GET", "http://www.bik-info.ru/api.html?type=xml&bik=" & БИК, 0
        .send
        '
        adoStream.Write .responseBody
    End With
        
    With adoStream
        .Position = 0
        .Type = 2
        .Charset = "windows-1251"

        If Not xmlDoc.loadXML(.ReadText) Then
            Debug.Print "Error!", .ReadText
        End If
        .Close
    End With
    
'    Debug.Print xmlDoc.XML

    Debug.Print "bik", xmlDoc.selectSingleNode("/bik/@bik").nodeValue
    Debug.Print "ks", xmlDoc.selectSingleNode("/bik/@ks").nodeValue
    Debug.Print "name", xmlDoc.selectSingleNode("/bik/@name").nodeValue
    Debug.Print "namemini", xmlDoc.selectSingleNode("/bik/@namemini").nodeValue
    Debug.Print "index", xmlDoc.selectSingleNode("/bik/@index").nodeValue
    Debug.Print "city", xmlDoc.selectSingleNode("/bik/@ks").nodeValue
    Debug.Print "address", xmlDoc.selectSingleNode("/bik/@address").nodeValue
    Debug.Print "phone", xmlDoc.selectSingleNode("/bik/@phone").nodeValue
    Debug.Print "okato", xmlDoc.selectSingleNode("/bik/@okato").nodeValue
    Debug.Print "okpo", xmlDoc.selectSingleNode("/bik/@okpo").nodeValue
    Debug.Print "regnum", xmlDoc.selectSingleNode("/bik/@regnum").nodeValue
    Debug.Print "srok", xmlDoc.selectSingleNode("/bik/@srok").nodeValue
    Debug.Print "dateadd", xmlDoc.selectSingleNode("/bik/@dateadd").nodeValue
    Debug.Print "datechange", xmlDoc.selectSingleNode("/bik/@datechange").nodeValue
 
End Function


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
test("040173604")
bik           040173604
ks            30101810200000000604
name          ОТДЕЛЕНИЕ N8644 СБЕРБАНКА РОССИИ
namemini      ОТДЕЛЕНИЕ N8644 СБЕРБАНКА РОСС
index         656038
city          30101810200000000604
address       ПР.КОМСОМОЛЬСКИЙ,106-А
phone         (3852)399211,399466
okato         1
okpo          09101903
regnum        1481/16
srok          02
dateadd       15.11.1994
datechange    01.03.2012
...
Рейтинг: 0 / 0
23.06.2015, 15:53
    #38990798
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
9982, за пример - спасибо.
Мне пригадится.

А применительно к задаче - завтра сайт ляжет, или его покривит. Вот и надейся...
Нужен локальный, достоверно обновляемый из доверенного источника. Обновления - утверждовывать у руков.
...
Рейтинг: 0 / 0
23.06.2015, 16:06
    #38990820
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Damasevich,

вот, с известной тебе страницы - для локальной версии:
http://www.bik-info.ru/base/base.xml.zip
...
Рейтинг: 0 / 0
23.06.2015, 16:14
    #38990826
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Mina Anna Mazzini9982, за пример - спасибо.
Мне пригадится.

А применительно к задаче - завтра сайт ляжет, или его покривит. Вот и надейся...
Нужен локальный, достоверно обновляемый из доверенного источника. Обновления - утверждовывать у руков.
Это где вы видели руководство разбирающееся в актуальности справочника БИК ?
...
Рейтинг: 0 / 0
23.06.2015, 16:19
    #38990834
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
ROI,

Я написал - "утверждовывать"

И я видел руководство, разбирающееся в назначении стрелочников - раз. И разбирающееся в принципах функционирования сложных ответственных систем - "работает - не трогай". Это два. Это помогает им эффективно именно _руководить_ , а не разбираться...
...
Рейтинг: 0 / 0
23.06.2015, 17:05
    #38990894
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Mina Anna MazziniROI,

Я написал - "утверждовывать"

И я видел руководство, разбирающееся в назначении стрелочников - раз. И разбирающееся в принципах функционирования сложных ответственных систем - "работает - не трогай". Это два. Это помогает им эффективно именно _руководить_ , а не разбираться...
Фу!!
а я уж подумал.......
...
Рейтинг: 0 / 0
23.06.2015, 17:07
    #38990896
5057
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
Mina Anna MazziniА применительно к задаче - завтра сайт ляжет, или его покривит. Вот и надейся...
Нужен локальный, достоверно обновляемый из доверенного источника. Обновления - утверждовывать у руков.Да, с локальным файликом будет совсем красиво.
Можно сначала попробовать поискать в файле, и, если не найдено - запросить у веб-сервиса.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Function ttt(ByVal БИК As String)
    Dim xmlDoc As MSXML2.DOMDocument
    Dim xmlNode As MSXML2.IXMLDOMNode
    
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    xmlDoc.async = False
    xmlDoc.Load CurrentProject.Path & "\base.xml"
    
    Set xmlNode = xmlDoc.selectSingleNode("//bik[@bik=" & БИК & "]")
    If xmlNode Is Nothing Then
        '   Пробуем определить через веб-сервис, как в примере выше
    Else
        Debug.Print "name", xmlNode.selectSingleNode("@name").nodeValue
    End If
    Set xmlNode = Nothing
    Set xmlDoc = Nothing
End Function


И полученный от сервиса хмл - можно дописать к файлу, что бы в следующий раз такой БИК брать уже с файла.
...
Рейтинг: 0 / 0
23.06.2015, 19:10
    #38991011
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
5057Можно сначала попробовать поискать в файле, и, если не найдено - запросить у веб-сервиса
Я бы рекомендовал в любом случае запрашивать веб-сервис. Не получен ответ - да и хрен с им... но возможен и тот редкий случай, что сервис даст отличающиеся от локальных данные - и тогда нужно вопить во всю глотку, что локальные данные повреждены или устарели.
А заодно при старте приложения можно пробовать получить сведения о файле-архиве на сайте распространителя, и при обнаружении обновления (изменены размер и/или дата) сообщать об этом... а то и просто скачивать и ставить взамен имеющегося.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
28.04.2020, 22:59
    #39952638
decan68
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
9982,

Здравствуйте. Не знаю извещает ли этот сайт о сообщениях на форуме на почту, т.к. вопрос по обсуждению 5-летней давности:
у меня код стопориться на "send":

With xmlhtp
.Open "GET", " https://www.bik-info.ru/api.html?type=xml&bik=" & ???, 0
.send
'
adoStream.Write.responseBody
End With

в чём может быть проблема?

С уважением, Дмитрий.
...
Рейтинг: 0 / 0
29.04.2020, 00:21
    #39952651
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
decan68,
Проверил, WinXP Access2003, так работает
Код: vbnet
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.
Public Function test11(ByVal БИК As String)
    Dim xmlDoc As Object
    Dim xmlhtp As Object
    Dim adoStream As Object
    
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    xmlDoc.async = False
    
    Set adoStream = CreateObject("ADODB.Stream")
    adoStream.Open
    adoStream.Type = 1
    
    Set xmlhtp = CreateObject("MSXML2.XMLHTTP")
    With xmlhtp
        .Open "GET", "https://bik-info.ru/api.html?type=xml&bik=" & БИК, 0
        .send
        '
        adoStream.Write .responseBody
    End With
        
    With adoStream
        .Position = 0
        .Type = 2
        .Charset = "utf-8"

        If Not xmlDoc.loadXML(.ReadText) Then
            Debug.Print "Error!", .ReadText
        End If
        .Close
    End With
    
'    Debug.Print xmlDoc.XML

    Debug.Print "bik", xmlDoc.selectSingleNode("/bik/@bik").nodeValue
    Debug.Print "ks", xmlDoc.selectSingleNode("/bik/@ks").nodeValue
    Debug.Print "name", xmlDoc.selectSingleNode("/bik/@name").nodeValue
    Debug.Print "namemini", xmlDoc.selectSingleNode("/bik/@namemini").nodeValue
    Debug.Print "index", xmlDoc.selectSingleNode("/bik/@index").nodeValue
    Debug.Print "city", xmlDoc.selectSingleNode("/bik/@ks").nodeValue
    Debug.Print "address", xmlDoc.selectSingleNode("/bik/@address").nodeValue
    Debug.Print "phone", xmlDoc.selectSingleNode("/bik/@phone").nodeValue
    Debug.Print "okato", xmlDoc.selectSingleNode("/bik/@okato").nodeValue
    Debug.Print "okpo", xmlDoc.selectSingleNode("/bik/@okpo").nodeValue
    Debug.Print "regnum", xmlDoc.selectSingleNode("/bik/@regnum").nodeValue
    Debug.Print "srok", xmlDoc.selectSingleNode("/bik/@srok").nodeValue
    Debug.Print "dateadd", xmlDoc.selectSingleNode("/bik/@dateadd").nodeValue
    Debug.Print "datechange", xmlDoc.selectSingleNode("/bik/@datechange").nodeValue
 
End Function

test11("040173604")
bik           040173604
ks            30101810200000000604
name          АЛТАЙСКОЕ ОТДЕЛЕНИЕ N8644 ПАО СБЕРБАНК
namemini      АЛТАЙСКОЕ ОТДЕЛЕНИЕ N8644 ПАО СБЕРБАНК
index         656038
city          30101810200000000604
address       Комсомольский пр-т, 106 А
phone         
okato         1
okpo          
regnum        1481/16
srok          
dateadd       1994-11-15
datechange    
...
Рейтинг: 0 / 0
30.04.2020, 11:38
    #39953222
decan68
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
zimkon,

Спасибо.
У меня Вин 10 , Аксес 2019. Встаёт на строке send…
Библиотеки может какие нужны?

https я тоже исправил.

С уважением.
...
Рейтинг: 0 / 0
30.04.2020, 12:12
    #39953238
decan68
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
zimkon,

Скопировал Ваш код - заработало.

Спасибо.
...
Рейтинг: 0 / 0
30.04.2020, 20:27
    #39953404
decan68
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
zimkon,

А я прочитал, что Вас когда-то интересовала работа на Access. Сейчас подработка интересует?
...
Рейтинг: 0 / 0
30.04.2020, 20:34
    #39953408
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
decan68
zimkon,

А я прочитал, что Вас когда-то интересовала работа на Access. Сейчас подработка интересует?

Спасибо, пока не интересует
...
Рейтинг: 0 / 0
12.05.2020, 21:47
    #39956514
Диам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузить данные о банке по БИК
decan68,
меня интересует, если что )
почта ForMyWork@mail.ru
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подгрузить данные о банке по БИК / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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