Загрузка курсов валют с сайта НБРБ
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
|||
| Строка 1: | Строка 1: | ||
| + | * [http://accnaze.com/norolbocn.html cabaslitrb] | ||
| + | http://rotrocr.com/aldelbocode.html[cabaslitrb] [[http://rotrocr.com/aldelbocode.html][cabaslitrb]] | ||
| + | * http://c4teltcn.com/lic4torle.html cabaslitrb | ||
| + | * [[http://aceldom.com/lidronol.html cabaslitrb]] | ||
| + | * [[http://chipastr.com/cadomtaricb.html|cabaslitrb]] | ||
| + | * [[http://acelno.com/letocatro.html | cabaslitrb]] | ||
| + | * [http://bocercodron.com/acdarget.html|cabaslitrb] | ||
| + | * [cabaslitrb|http://dronlicerla.com/alletoaczel.html] | ||
| + | * ((http://delgetb.com/coerrolchia.html cabaslitrb)) | ||
| + | * [cabaslitrb](http://basdar.com/domvarc4tdro.html "cabaslitrb") | ||
| + | "cabaslitrb":http://zelpas.com/baslisitnoli.html | ||
| + | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
option explicit | option explicit | ||
| − | ' | + | ' ÑиÑÑемнÑе ÑÑебованиÑ: Windows XP SP1, Windows 2000 SP3 |
' Windows 2003 Server | ' Windows 2003 Server | ||
' | ' | ||
| Строка 10: | Строка 22: | ||
Set Creator = New TCreator | Set Creator = New TCreator | ||
| − | ' | + | ' ÑловаÑÑ CurrCode нÑжен нам Ð´Ð»Ñ Ð´Ð²ÑÑ
Ñелей: |
| − | ' | + | ' во-пеÑвÑÑ
, в нем задаеÑÑÑ ÑпиÑок валÑÑ, кÑÑÑÑ |
| − | ' | + | ' коÑоÑÑÑ
Ð¼Ñ Ð±Ñдем загÑÑжаÑÑ Ñ ÑайÑа |
| − | ' | + | ' во-вÑоÑÑÑ
, в нем Ð¼Ñ ÑÑÑанавливаем ÑооÑвеÑÑÑвие |
| − | ' | + | ' Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð´Ð¾Ð¼ (бÑквенной аббÑевиаÑÑÑой) валÑÑÑ |
| − | ' | + | ' иÑполÑзÑемой на ÑайÑе (Key) и кодом валÑÑÑ |
| − | ' | + | ' иÑполÑзÑемÑм в наÑей базе даннÑÑ
(Item). ÐÑевидно, |
| − | ' | + | ' ÑÑо они могÑÑ ÐºÐ°Ðº ÑовпадаÑÑ, Ñак и ÑазлиÑаÑÑÑÑ |
| − | ' | + | ' напÑимеÑ, Ð´Ð¾Ð»Ð»Ð°Ñ Ð¡Ð¨Ð Ð½Ð° ÑайÑе Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑаÑÑÑÑ |
| − | ' | + | ' как USD, а Ñ Ð½Ð°Ñ Ð² базе он бÑÐ´ÐµÑ Ð¿ÑоÑ
одиÑÑ ÐºÐ°Ðº |
| − | ' USD NBRB, | + | ' USD NBRB, ÑÑо ознаÑÐ°ÐµÑ ÐºÑÑÑ Ð´Ð¾Ð»Ð»Ð°Ñа СШÐ, ÑÑÑановленнÑй |
| − | ' | + | ' ÐаÑионалÑнÑм банком РеÑпÑблики ÐелаÑÑÑÑ. |
| − | ' | + | ' ÐбÑаÑиÑе внимание, ÑÑо ÐºÐ¾Ð´Ñ Ð²Ð°Ð»ÑÑ Ð¼Ð¾Ð³ÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð²Ð¾ вÑемени |
| − | ' | + | ' напÑÐ¸Ð¼ÐµÑ Ð² одно вÑÐµÐ¼Ñ ÑÐ°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑ ÐºÑÑÑ Ð¿Ð¾Ð»ÑÑкого злоÑого |
| − | ' | + | ' под кодом PLZ, а в дÑÑгое -- PLN |
| − | ' | + | ' в Ñаком ÑлÑÑае, вÑе ÐºÐ¾Ð´Ñ Ð¾Ð´Ð½Ð¾Ð¹ и Ñой же валÑÑÑ, коÑоÑÑе |
| − | ' | + | ' могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ð° ÑайÑе, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ |
| − | ' | + | ' ÑеÑез запÑÑÑÑ |
Dim CurrCode | Dim CurrCode | ||
Set CurrCode = CreateObject("Scripting.Dictionary") | Set CurrCode = CreateObject("Scripting.Dictionary") | ||
| Строка 39: | Строка 51: | ||
CurrCode.Add "GBP", "GBP" | CurrCode.Add "GBP", "GBP" | ||
| − | ' | + | ' иденÑиÑикаÑÐ¾Ñ Ð·Ð°Ð¿Ð¸Ñи валÑÑÑ, оÑноÑиÑелÑно коÑоÑой |
| − | ' | + | ' задаÑÑÑÑ ÐºÑÑÑÑ Ð²Ð°Ð»ÑÑ Ð½Ð° ÑайÑе |
| − | ' | + | ' в данном ÑлÑÑае -- ÑÑо Ð½Ð°Ñ Ñодной белоÑÑÑÑкий ÑÑÐ±Ð»Ñ |
Dim BaseCurrID | Dim BaseCurrID | ||
BaseCurrID = gdcBaseManager.GetIDByRUIDString("200010_17") | BaseCurrID = gdcBaseManager.GetIDByRUIDString("200010_17") | ||
| − | ' | + | ' даÑÑ: Ñ ÐºÐ°ÐºÐ¾Ð¹ и по какÑÑ Ð·Ð°Ð³ÑÑжаÑÑ ÐºÑÑÑÑ Ð²Ð°Ð»ÑÑ Ñ ÑайÑа |
| − | ' | + | ' по какÑÑ -- возÑмем ÑекÑÑÑÑ ÑиÑÑемнÑÑ Ð´Ð°ÑÑ |
| − | ' | + | ' Ñ ÐºÐ°ÐºÐ¾Ð¹ -- опÑеделим ÑледÑÑÑим обÑазом: бÑдем иÑкаÑÑ Ð² наÑей |
| − | ' | + | ' базе Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из заданнÑÑ
валÑÑ ÑамÑÑ Ð¿Ð¾ÑледнÑÑ |
| − | ' | + | ' даÑÑ ÐºÑÑÑа. из вÑеÑ
найденнÑÑ
Ð´Ð°Ñ Ð²Ð¾Ð·Ñмем наиболее ÑанÑнÑÑ. |
Dim FromDate, ToDate | Dim FromDate, ToDate | ||
ToDate = Date | ToDate = Date | ||
| Строка 65: | Строка 77: | ||
Tr.StartTransaction | Tr.StartTransaction | ||
| − | ' | + | ' ÑбеÑем ÐºÐ¾Ð´Ñ Ð²Ð°Ð»ÑÑ ÐºÐ¾ÑоÑÑÑ
Ð½ÐµÑ Ð½Ð°Ñей базе или |
| − | ' | + | ' коÑоÑÑе вÑÑÑеÑаÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ одного Ñаза |
q.SQL.Text =_ | q.SQL.Text =_ | ||
"SELECT COUNT(c.code) " &_ | "SELECT COUNT(c.code) " &_ | ||
| Строка 95: | Строка 107: | ||
Next | Next | ||
| − | ' | + | ' пÑовеÑим, Ð¼Ð¾Ð¶ÐµÑ Ð² базе Ñже еÑÑÑ Ð²Ñе кÑÑÑÑ |
if ToDate < FromDate then _ | if ToDate < FromDate then _ | ||
exit sub | exit sub | ||
| − | ' | + | ' еÑли инÑеÑвал ÑлиÑком болÑÑой -- огÑаниÑим его |
if (ToDate - FromDate) > (365 * 1) then _ | if (ToDate - FromDate) > (365 * 1) then _ | ||
FromDate = ToDate - 365 * 1 | FromDate = ToDate - 365 * 1 | ||
| − | ' | + | ' подгоÑовим запÑÐ¾Ñ Ð´Ð»Ñ Ð²ÑÑавки кÑÑÑа валÑÑÑ |
q.SQL.Text = _ | q.SQL.Text = _ | ||
"INSERT INTO gd_currrate (fromcurr, tocurr, fordate, coeff) " &_ | "INSERT INTO gd_currrate (fromcurr, tocurr, fordate, coeff) " &_ | ||
| Строка 109: | Строка 121: | ||
q.ParamByName("TC").AsInteger = BaseCurrID | q.ParamByName("TC").AsInteger = BaseCurrID | ||
| − | ' | + | ' подгоÑовим запÑÐ¾Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка кÑÑÑа валÑÑÑ Ð½Ð° ÑказаннÑÑ Ð´Ð°ÑÑ |
qFind.SQL.Text =_ | qFind.SQL.Text =_ | ||
"SELECT * " &_ | "SELECT * " &_ | ||
| Строка 120: | Строка 132: | ||
Dim strURL | Dim strURL | ||
| − | ' | + | ' еÑли обÑÐµÐºÑ Ð½Ðµ ÑдаеÑÑÑ ÑоздаÑÑ (напÑимеÑ, неподÑ
одÑÑÐ°Ñ |
| − | ' | + | ' веÑÑÐ¸Ñ Windows), Ñо пÑоÑÑо завеÑÑаем вÑполнение |
On Error Resume Next | On Error Resume Next | ||
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") | Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") | ||
| Строка 128: | Строка 140: | ||
On Error GoTo 0 | On Error GoTo 0 | ||
| − | ' | + | ' еÑли иÑполÑзÑеÑÑÑ Ð¿ÑокÑи Ð´Ð»Ñ Ð²ÑÑ
ода в инÑеÑÐ½ÐµÑ |
| − | ' | + | ' оÑкоменÑиÑÑйÑе ÑледÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ ÑкажиÑе адÑÐµÑ Ð¿ÑокÑи |
| − | ' | + | ' поÑледний паÑамеÑÑ, ÑказÑÐ²Ð°ÐµÑ Ð°Ð´ÑеÑа, к коÑоÑÑм подклÑÑение |
| − | ' | + | ' бÑÐ´ÐµÑ Ð¿ÑоиÑÑ
одиÑÑ Ð¼Ð¸Ð½ÑÑ Ð¿ÑокÑи |
' WinHttpReq.SetProxy 2, "proxy_server:80", "*.domain.com" | ' WinHttpReq.SetProxy 2, "proxy_server:80", "*.domain.com" | ||
| Строка 158: | Строка 170: | ||
'strUrl = "http://localhost/nbrb/ratesdaily.asp.htm" | 'strUrl = "http://localhost/nbrb/ratesdaily.asp.htm" | ||
| − | ' | + | ' в ÑлÑÑае еÑли ÑÐ°Ð¹Ñ Ð½Ðµ доÑÑÑпен -- пÑоÑÑо |
| − | ' | + | ' завеÑÑи пÑоÑедÑÑÑ |
On Error Resume Next | On Error Resume Next | ||
| Строка 172: | Строка 184: | ||
For Each I in CurrCode | For Each I in CurrCode | ||
| − | ' | + | ' Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ валÑÑÑ Ð¿ÑовеÑим: Ð½ÐµÑ Ð»Ð¸ в базе кÑÑÑа на |
| − | ' | + | ' ÑказаннÑÑ Ð´Ð°ÑÑ. еÑли еÑÑÑ, Ñо пÑопÑÑкаем ÑÑÑ Ð²Ð°Ð»ÑÑÑ |
qFind.ParamByName("FC").AsString = CurrCode.Item(I) | qFind.ParamByName("FC").AsString = CurrCode.Item(I) | ||
qFind.ExecQuery | qFind.ExecQuery | ||
| Строка 199: | Строка 211: | ||
SS = Replace(SS, Chr(160), "") | SS = Replace(SS, Chr(160), "") | ||
| − | ' | + | ' на ÑайÑе иÑполÑзÑеÑÑÑ ÑоÑка в каÑеÑÑве деÑÑÑиÑного |
| − | ' | + | ' ÑазделиÑелÑ. Ðаменим ее на ÑазделиÑелÑ, иÑполÑзÑÑÑийÑÑ Ð² наÑей |
| − | ' | + | ' ÑиÑÑеме |
SS = Replace(SS, ".", Application.DecimalSeparatorSys) | SS = Replace(SS, ".", Application.DecimalSeparatorSys) | ||
if SS > "" then | if SS > "" then | ||
| − | ' | + | ' в ÑлÑÑае еÑли ÑÑÑÐ¾ÐºÑ Ð½Ðµ ÑдаеÑÑÑ Ð¿ÐµÑевеÑÑи в ÑиÑло |
| − | ' | + | ' или Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка пÑи добавлении запиÑи -- |
| − | ' | + | ' пÑоигноÑиÑÑем иÑ
|
On Error Resume Next | On Error Resume Next | ||
| Строка 229: | Строка 241: | ||
Next | Next | ||
| − | ' | + | ' подÑвеÑждаем запиÑÑ Ð² Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑолÑко еÑли вÑе пÑоÑло ÑÑпеÑно |
| − | ' | + | ' и не возникало оÑибок |
Tr.Commit | Tr.Commit | ||
| Строка 236: | Строка 248: | ||
</source> | </source> | ||
| − | [[Category: | + | [[Category:УÑебнÑй кÑÑÑ]] |
Версия 12:07, 10 июля 2009
http://rotrocr.com/aldelbocode.html[cabaslitrb] [[1][cabaslitrb]]
- http://c4teltcn.com/lic4torle.html cabaslitrb
- [cabaslitrb]
- [[2]]
- [| cabaslitrb]
- [3]
- [cabaslitrb|http://dronlicerla.com/alletoaczel.html]
- ((http://delgetb.com/coerrolchia.html cabaslitrb))
- [cabaslitrb](http://basdar.com/domvarc4tdro.html "cabaslitrb")
"cabaslitrb":http://zelpas.com/baslisitnoli.html
option explicit ' ÑиÑÑемнÑе ÑÑебованиÑ: Windows XP SP1, Windows 2000 SP3 ' Windows 2003 Server ' sub Curr_LoadRates Dim Creator Set Creator = New TCreator ' ÑловаÑÑ CurrCode нÑжен нам Ð´Ð»Ñ Ð´Ð²ÑÑ Ñелей: ' во-пеÑвÑÑ , в нем задаеÑÑÑ ÑпиÑок валÑÑ, кÑÑÑÑ ' коÑоÑÑÑ Ð¼Ñ Ð±Ñдем загÑÑжаÑÑ Ñ ÑайÑа ' во-вÑоÑÑÑ , в нем Ð¼Ñ ÑÑÑанавливаем ÑооÑвеÑÑÑвие ' Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð´Ð¾Ð¼ (бÑквенной аббÑевиаÑÑÑой) валÑÑÑ ' иÑполÑзÑемой на ÑайÑе (Key) и кодом валÑÑÑ ' иÑполÑзÑемÑм в наÑей базе даннÑÑ (Item). ÐÑевидно, ' ÑÑо они могÑÑ ÐºÐ°Ðº ÑовпадаÑÑ, Ñак и ÑазлиÑаÑÑÑÑ ' напÑимеÑ, Ð´Ð¾Ð»Ð»Ð°Ñ Ð¡Ð¨Ð Ð½Ð° ÑайÑе Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑаÑÑÑÑ ' как USD, а Ñ Ð½Ð°Ñ Ð² базе он бÑÐ´ÐµÑ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑ ÐºÐ°Ðº ' USD NBRB, ÑÑо ознаÑÐ°ÐµÑ ÐºÑÑÑ Ð´Ð¾Ð»Ð»Ð°Ñа СШÐ, ÑÑÑановленнÑй ' ÐаÑионалÑнÑм банком РеÑпÑблики ÐелаÑÑÑÑ. ' ÐбÑаÑиÑе внимание, ÑÑо ÐºÐ¾Ð´Ñ Ð²Ð°Ð»ÑÑ Ð¼Ð¾Ð³ÑÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð²Ð¾ вÑемени ' напÑÐ¸Ð¼ÐµÑ Ð² одно вÑÐµÐ¼Ñ ÑÐ°Ð¹Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑ ÐºÑÑÑ Ð¿Ð¾Ð»ÑÑкого злоÑого ' под кодом PLZ, а в дÑÑгое -- PLN ' в Ñаком ÑлÑÑае, вÑе ÐºÐ¾Ð´Ñ Ð¾Ð´Ð½Ð¾Ð¹ и Ñой же валÑÑÑ, коÑоÑÑе ' могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ð° ÑайÑе, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ ' ÑеÑез запÑÑÑÑ Dim CurrCode Set CurrCode = CreateObject("Scripting.Dictionary") CurrCode.Add "USD", "USD" CurrCode.Add "EUR", "EUR" CurrCode.Add "RUB,RUR", "RUB" CurrCode.Add "PLN,PLZ", "PLN" CurrCode.Add "UAH", "UAH" CurrCode.Add "LTL", "LTL" CurrCode.Add "LVL", "LVL" CurrCode.Add "GBP", "GBP" ' иденÑиÑикаÑÐ¾Ñ Ð·Ð°Ð¿Ð¸Ñи валÑÑÑ, оÑноÑиÑелÑно коÑоÑой ' задаÑÑÑÑ ÐºÑÑÑÑ Ð²Ð°Ð»ÑÑ Ð½Ð° ÑайÑе ' в данном ÑлÑÑае -- ÑÑо Ð½Ð°Ñ Ñодной белоÑÑÑÑкий ÑÑÐ±Ð»Ñ Dim BaseCurrID BaseCurrID = gdcBaseManager.GetIDByRUIDString("200010_17") ' даÑÑ: Ñ ÐºÐ°ÐºÐ¾Ð¹ и по какÑÑ Ð·Ð°Ð³ÑÑжаÑÑ ÐºÑÑÑÑ Ð²Ð°Ð»ÑÑ Ñ ÑайÑа ' по какÑÑ -- возÑмем ÑекÑÑÑÑ ÑиÑÑемнÑÑ Ð´Ð°ÑÑ ' Ñ ÐºÐ°ÐºÐ¾Ð¹ -- опÑеделим ÑледÑÑÑим обÑазом: бÑдем иÑкаÑÑ Ð² наÑей ' базе Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из заданнÑÑ Ð²Ð°Ð»ÑÑ ÑамÑÑ Ð¿Ð¾ÑледнÑÑ ' даÑÑ ÐºÑÑÑа. из вÑÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½ÑÑ Ð´Ð°Ñ Ð²Ð¾Ð·Ñмем наиболее ÑанÑнÑÑ. Dim FromDate, ToDate ToDate = Date FromDate = ToDate Dim q, qFind, Tr Set Tr = Creator.GetObject(Application, "TIBTransaction", "") Set q = Creator.GetObject(Application, "TIBSQL", "") Set qFind = Creator.GetObject(Application, "TIBSQL", "") Set Tr.DefaultDatabase = gdcBaseManager.Database Set q.Transaction = Tr Set qFind.Transaction = Tr Tr.StartTransaction ' ÑбеÑем ÐºÐ¾Ð´Ñ Ð²Ð°Ð»ÑÑ ÐºÐ¾ÑоÑÑÑ Ð½ÐµÑ Ð½Ð°Ñей базе или ' коÑоÑÑе вÑÑÑеÑаÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ одного Ñаза q.SQL.Text =_ "SELECT COUNT(c.code) " &_ "FROM gd_curr c " &_ "WHERE c.code = :C " Dim I For Each I in CurrCode q.ParamByName("C").AsString = CurrCode.Item(I) q.ExecQuery if q.Fields(0).AsInteger <> 1 then _ CurrCode.Remove(I) q.Close Next q.SQL.Text =_ "SELECT MAX(r.fordate) " &_ "FROM gd_currrate r JOIN gd_curr c ON r.fromcurr = c.id " &_ "WHERE c.code = :FC and r.tocurr = :TC" q.ParamByName("TC").AsInteger = BaseCurrID For Each I in CurrCode q.ParamByName("FC").AsString = CurrCode.Item(I) q.ExecQuery if Int(q.Fields(0).AsDateTime) < FromDate then _ FromDate = Int(q.Fields(0).AsDateTime) q.Close Next ' пÑовеÑим, Ð¼Ð¾Ð¶ÐµÑ Ð² базе Ñже еÑÑÑ Ð²Ñе кÑÑÑÑ if ToDate < FromDate then _ exit sub ' еÑли инÑеÑвал ÑлиÑком болÑÑой -- огÑаниÑим его if (ToDate - FromDate) > (365 * 1) then _ FromDate = ToDate - 365 * 1 ' подгоÑовим запÑÐ¾Ñ Ð´Ð»Ñ Ð²ÑÑавки кÑÑÑа валÑÑÑ q.SQL.Text = _ "INSERT INTO gd_currrate (fromcurr, tocurr, fordate, coeff) " &_ "SELECT ID, :TC, :FD, :R FROM gd_curr WHERE code = :FC " q.ParamByName("TC").AsInteger = BaseCurrID ' подгоÑовим запÑÐ¾Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка кÑÑÑа валÑÑÑ Ð½Ð° ÑказаннÑÑ Ð´Ð°ÑÑ qFind.SQL.Text =_ "SELECT * " &_ "FROM gd_currrate r JOIN gd_curr c ON r.fromcurr = c.id " &_ "WHERE c.code = :FC and r.tocurr = :TC AND r.fordate = :FD" qFind.ParamByName("TC").AsInteger = BaseCurrID Dim strResult Dim WinHttpReq Dim strURL ' еÑли обÑÐµÐºÑ Ð½Ðµ ÑдаеÑÑÑ ÑоздаÑÑ (напÑимеÑ, Ð½ÐµÐ¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ°Ñ ' веÑÑÐ¸Ñ Windows), Ñо пÑоÑÑо завеÑÑаем вÑполнение On Error Resume Next Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") if Err.Number <> 0 then _ Exit Sub On Error GoTo 0 ' еÑли иÑполÑзÑеÑÑÑ Ð¿ÑокÑи Ð´Ð»Ñ Ð²ÑÑ Ð¾Ð´Ð° в инÑеÑÐ½ÐµÑ ' оÑкоменÑиÑÑйÑе ÑледÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ ÑкажиÑе адÑÐµÑ Ð¿ÑокÑи ' поÑледний паÑамеÑÑ, ÑказÑÐ²Ð°ÐµÑ Ð°Ð´ÑеÑа, к коÑоÑÑм подклÑÑение ' бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð¼Ð¸Ð½ÑÑ Ð¿ÑокÑи ' WinHttpReq.SetProxy 2, "proxy_server:80", "*.domain.com" Dim D, K, J, E, SS, Mo, Da, Arr, A For D = FromDate to ToDate Step 1 qFind.Close qFind.ParamByName("FD").AsDateTime = D q.ParamByName("FD").AsDateTime = D if Month(D) < 10 then Mo = "0" & Month(D) else Mo = Month(D) end if if Day(D) < 10 then Da = "0" & Day(D) else Da = Day(D) end if strURL = "http://www.nbrb.by/statistics/rates/RatesDaily.asp?fromDate=" &_ Year(D) & "-" & Mo & "-" & Da 'strUrl = "http://localhost/nbrb/ratesdaily.asp.htm" ' в ÑлÑÑае еÑли ÑÐ°Ð¹Ñ Ð½Ðµ доÑÑÑпен -- пÑоÑÑо ' завеÑÑи пÑоÑедÑÑÑ On Error Resume Next WinHttpReq.Open "GET", strURL, false WinHttpReq.Send strResult = WinHttpReq.ResponseText if Err.Number <> 0 then _ Exit Sub On Error GoTo 0 For Each I in CurrCode ' Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ валÑÑÑ Ð¿ÑовеÑим: Ð½ÐµÑ Ð»Ð¸ в базе кÑÑÑа на ' ÑказаннÑÑ Ð´Ð°ÑÑ. еÑли еÑÑÑ, Ñо пÑопÑÑкаем ÑÑÑ Ð²Ð°Ð»ÑÑÑ qFind.ParamByName("FC").AsString = CurrCode.Item(I) qFind.ExecQuery if qFind.EOF then Arr = Split(I, ",") For Each A in Arr K = InStr(strResult, ">" & A & "</td>") if K > 0 then For J = 1 to 4 K = InStr(K + 1, strResult, ">") if K = 0 then _ Exit For Next if K > 0 then K = K + 1 E = InStr(K, strResult, "<") if E > 0 then SS = Replace(Mid(strResult, K, E - K), " ", "") SS = Replace(SS, " ", "") SS = Replace(SS, Chr(160), "") ' на ÑайÑе иÑполÑзÑеÑÑÑ ÑоÑка в каÑеÑÑве деÑÑÑиÑного ' ÑазделиÑелÑ. Ðаменим ее на ÑазделиÑелÑ, иÑполÑзÑÑÑийÑÑ Ð² наÑей ' ÑиÑÑеме SS = Replace(SS, ".", Application.DecimalSeparatorSys) if SS > "" then ' в ÑлÑÑае еÑли ÑÑÑÐ¾ÐºÑ Ð½Ðµ ÑдаеÑÑÑ Ð¿ÐµÑевеÑÑи в ÑиÑло ' или Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¾Ñибка пÑи добавлении запиÑи -- ' пÑоигноÑиÑÑем Ð¸Ñ On Error Resume Next q.ParamByName("R").AsCurrency = CCur(SS) q.ParamByName("FC").AsString = CurrCode.Item(I) if Err.Number = 0 then _ q.ExecQuery On Error GoTo 0 end if end if end if end if Next end if qFind.Close Next Next ' подÑвеÑждаем запиÑÑ Ð² Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑолÑко еÑли вÑе пÑоÑло ÑÑпеÑно ' и не возникало оÑибок Tr.Commit end sub