powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подгрузить данные о банке по БИК
17 сообщений из 17, страница 1 из 1
Подгрузить данные о банке по БИК
    #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
Подгрузить данные о банке по БИК
    #38990569
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DamasevichЧто из этого и куда я должен вставить чтобы получить результат?
Или хотя бы где прочитать?
В твоём случае я рекомендую бросить на форму MS Inet Transfer Control, получить ответ в XML и распарсить его вручную стандартными текстовыми функциями.
...
Рейтинг: 0 / 0
Подгрузить данные о банке по БИК
    #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
Подгрузить данные о банке по БИК
    #38990798
Mina Anna Mazzini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
9982, за пример - спасибо.
Мне пригадится.

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

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

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

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

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

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

И я видел руководство, разбирающееся в назначении стрелочников - раз. И разбирающееся в принципах функционирования сложных ответственных систем - "работает - не трогай". Это два. Это помогает им эффективно именно _руководить_ , а не разбираться...
Фу!!
а я уж подумал.......
...
Рейтинг: 0 / 0
Подгрузить данные о банке по БИК
    #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
Подгрузить данные о банке по БИК
    #38991011
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5057Можно сначала попробовать поискать в файле, и, если не найдено - запросить у веб-сервиса
Я бы рекомендовал в любом случае запрашивать веб-сервис. Не получен ответ - да и хрен с им... но возможен и тот редкий случай, что сервис даст отличающиеся от локальных данные - и тогда нужно вопить во всю глотку, что локальные данные повреждены или устарели.
А заодно при старте приложения можно пробовать получить сведения о файле-архиве на сайте распространителя, и при обнаружении обновления (изменены размер и/или дата) сообщать об этом... а то и просто скачивать и ставить взамен имеющегося.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Подгрузить данные о банке по БИК
    #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
Подгрузить данные о банке по БИК
    #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
Подгрузить данные о банке по БИК
    #39953222
decan68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon,

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

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

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

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

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

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

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

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


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