Скрипт для загрузки из Интернет курсов валюты в базу Используем технологию Windows Script Host (WSH) Курс получаем с сайта Центрального банка.
Скрипт для загрузки из Интернет курсов валюты в базу Используем технологию Windows Script Host (WSH) Курс получаем с сайта Центрального банка. Все подробности тут http://www.cbr.ru/scripts/Root.asp В блокноте создаем файл с данным кодом. '*********************************************** ' Cкрипт загрузки из Интернета курса валют ' в базу Лизинг ' Версия ae 1.03.050919 ''*********************************************** Option Explicit
On Error Resume Next Public FSO Dim WshShell, WshNetwork Dim objConn, objRst, xmlDoc, node_List, xmlNode, node_Attr Dim strArrayType, strType, strConnect, strUserName, strSQL Dim url_Request Dim intValType, dtmBegDate, intIndex Set WshShell = CreateObject("WScript.Shell") Set WshNetwork = CreateObject("WScript.Network") ' Делаем отчет в журнале WshShell.LogEvent 4, "Старт скрипта загрузки курсов валют из ИНТЕРНЕТ'а - " & Now strUserName = WshNetwork.UserName strArrayType = Array("R01235", "R01239") ',"R0135") Set objConn = CreateObject("ADODB.Connection") strConnect ="Provider=SQLOLEDB;Persist Security Info=False;User ID=User;Data Source=NameaServer;Initial Catalog=NameDB" objConn.ConnectionString = strConnect objConn.CommandTimeout = 90 objConn.Open intValType = 2 For Each strType In strArrayType strSQL = "SELECT MAX(Start) As MaxDate FROM dbo.ValutaRate GROUP BY Valuta1 HAVING Valuta1 = " & intValType Set objRst = objConn.Execute(strSQL) dtmBegDate = objRst.Fields("MaxDate") If (dtmBegDate <> Date + 1) And (Weekday(Date, 2) < 6) Then ' Создаем экземпляр объекта - XML парзера Set xmlDoc = CreateObject("Msxml.DOMDocument") xmlDoc.async = False url_Request = "http://www.cbr.ru/scripts/XML_dynamic.asp?" & _ "date_req1=" & FormatFromDateInString(dtmBegDate + 1, "dd/mm/yyyy") & _ "&date_req2=" & FormatFromDateInString(Date + 1, "dd/mm/yyyy") & _ "&VAL_NM_RQ=" & strType ' загружаем документ по url If Not xmlDoc.Load(url_Request) = True Then WshShell.LogEvent 1, "Отсутствует подключение к ИНТЕРНЕТ ": WScript.Quit Set node_List = xmlDoc.selectNodes("*/Record") ' цикл по результирующему набору For intIndex = 0 To node_List.Length - 1 Set xmlNode = node_List.Item(intIndex).CloneNode(True) Set node_Attr = xmlNode.Attributes(0) ' Заносим курс в базу objConn.Execute "INSERT INTO ValutaRates (Start, Valuta1, Valuta2, Rate, CrWhen, CrWho) " & _ "VALUES (" & FormatFromDateInString(CDate(node_Attr.Value), "'yyyymmdd'") & _ ", " & CInt(intValType) & ", 1, " & _ Replace(xmlNode.childNodes(1).Text, ",", ".") & ", getdate(), 'script')" If Err.Number > 0 Then WshShell.LogEvent 1, "Error # " & CStr(Err.Number) & " " & Err.Description Err.Clear Next End If intValType = intValType + 1 Next Set node_Attr = Nothing Set xmlNode = Nothing Set node_List = Nothing Set xmlDoc = Nothing objConn.Close Set objConn = Nothing Set WshNetwork = Nothing WshShell.LogEvent 0, "Скрипт загрузки курсов валют из ИНТЕРНЕТ'а закончил работу " & Now Set WshShell = Nothing '================================= ' Функция форматирует дату в строковой тип '================================= Function FormatFromDateInString(dtmDate, strFormat) Dim strDay, strMonth, strYear strDay = Right("0" & Day(dtmDate), 2) strMonth = Right("0" & Month(dtmDate), 2) strYear = CStr(Year(dtmDate)) Select Case strFormat Case "dd/mm/yyyy" FormatFromDateInString = strDay & "/" & strMonth & "/" & strYear Case "'yyyymmdd'" FormatFromDateInString = "'" & strYear & strMonth & strDay & "'" Case Else FormatFromDateInString = "" End Select End Function
Присваиваем ему расширение vbs Выкладываете на сервере и с помощью планировщика заданий выполняете этот сценарий в нужное Вам время. |
Просмотров: 15239
Ваш коментарий будет первым | | |