Хорошо, я делаю это много в последнее время. Итак, если у вас есть ссылка на SCRRUN.DLL, эта первая функция будет читать файл (и справится с ANSI и Unicode):
Function ReadFileE(Filename As Variant) As String
Dim oStream As scripting.TextStream
Dim sData As String
Set oFSO = New scripting.FileSystemObject
sData = vbNullString
On Error Resume Next
Set oStream = oFSO.OpenTextFile(Filename, ForReading, False, TristateMixed)
If Err.Number = 0 Then
sData = oStream.ReadAll
oStream.Close
Else
sData = vbNullString
End If
On Error GoTo 0
ReadFileE = sData
End Function
Следующие функции, которые я использую для открытия базы данных и запроса к ней:
Function OpenMDB(sFile As Variant) As Variant ' ADODB.Connection
Dim nErr As Long
Dim sErr As String
Dim oConnection As Object 'ADODB.Connection
Set oConnection = CreateObject("ADODB.Connection")
On Error Resume Next
oConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFile
nErr = Err.Number
sErr = Err.Description
On Error GoTo 0
If nErr <> 0 Then
Err.Raise OPENDATABASE_E_NOTFOUND, , sErr
End If
Set OpenMDB = oConnection
End Function
Function QueryMDB(ByRef oDB As Variant, sQuery As Variant, Optional bCmdText As Boolean = False) As Variant ''ADODB.Connection ADODB.Recordset
Const adOpenForwardOnly As Long = 0
Const adOpenStatic As Long = 3
Const adOpenDynamic As Long = 2
Const adOpenKeyset As Long = 1
Const adLockOptimistic As Long = 3
Const adCmdText As Long = 1
Dim oRecordSet As Object 'ADODB.Recordset
Set oRecordSet = CreateObject("ADODB.RecordSet")
oRecordSet.Open sQuery, oDB, adOpenKeyset, adLockOptimistic
Set QueryMDB = oRecordSet
End Function
А теперь немного примера кода:
Dim sText As String
sText = ReadFileE("c:\windows\system32\SQLSRDME.TXT")
Dim db As Variant
Dim rs as Variant
set db = OpenMDB("c:\users\bruce\documents\database.mdb")
set rs = QueryMDB( db, "SELECT * FROM Table1" )
rs.Find "Field1='SQLSRDME.TXT'"
If Not rs.EOF Then
rs("Field2") = sText
rs.Update
End If
rs.Close
db.Close
Этот последний бит был напечатан на макушке, поэтому в нем могут быть дыры. Другой код находится в файле Class, который используется ежедневно.
Кроме того, код файла класса представлен в COM-объекте, таким образом, преобладание Variant
объявлений.
НТН.