Private Sub СохранитьКурсы(ByRef Страница As String)
Dim P As Long, Строка, ВТаблице As Boolean, I As Integer, Данные(1 To 3), S As Integer
Dim Соединение As New ADODB.Connection, Таблица As New ADODB.Recordset
Соединение.Provider = "sqloledb"
Соединение.Properties("Data Source").Value = ИмяСервера
Соединение.Properties("Initial Catalog").Value = ИмяБазы
Соединение.Properties("Integrated Security").Value = "SSPI" ' Windows NT authentication
Соединение.Open
Таблица.Open "[Курсы валют]", Соединение, adOpenKeyset, adLockOptimistic
P = 1: ВТаблице = False
Do
Строка = ИзвлечьСтроку(Страница, P)
If IsNull(Строка) Then Exit Do
If ВТаблице Then
If InStr(Строка, "</table>") <> 0 Then
Exit Do
ElseIf InStr(Строка, "<td") <> 0 Then
If I <= 3 Then
S = InStr(Строка, ">")
If S <> 0 Then Данные(I) = Mid$(Строка, S + 1)
I = I + 1
End If
ElseIf InStr(Строка, "</tr>") <> 0 Then
If I > 3 Then
Таблица.AddNew
Таблица![Дата] = Данные(1)
Таблица![Курс] = Данные(3)
On Error Resume Next
Err.Clear
Таблица.Update
If Err <> 0 Then Таблица.CancelUpdate
On Error GoTo 0
End If
I = 1
End If
Else
If InStr(Строка, "<b>Курс</b>") <> 0 Then
ВТаблице = True
I = 1
End If
End If
Loop
Таблица.Close
Соединение.Close
End Sub
Private Function ИзвлечьСтроку(ByRef Страница As String, ByRef Указатель As Long)
Dim P As Long
If Указатель > Len(Страница) Then
ИзвлечьСтроку = Null
Exit Function
End If
P = InStr(Указатель, Страница, vbCrLf)
If P = 0 Then
ИзвлечьСтроку = Mid$(Страница, Указатель)
Указатель = Len(Страница) + 1
Else
ИзвлечьСтроку = Mid$(Страница, Указатель, P - Указатель)
Указатель = P + Len(vbCrLf)
End If
End Function
|