Страдалец
В общем, занимался такой темой, делал через ODBC (у меня импортировалась целая БД из нескольких таблиц).
Сначала для dbf-ок создается ODBC-источник данных.
Затем, пишется примерно следующий
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='ls'>Dim con As New ODBCConnection 'Соединение с источником данных
Dim query As New ODBCQuery 'Запрос к источнику данных
Dim resultSet As New ODBCResultSet 'Набор данных, получаемый в результате выполнения запроса
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = ... ' берешь свою БД
con.ConnectTo "Имя твоего источника данных" 'подключаемся
query.Connection = con
query.SQL = "SELECT fieldA, fieldB FROM TheTable"
resultSet.Query = query
resultSet.Execute 'выполняем запрос
'Если что-то вернулось...
If resultSet.IsResultSetAvailable Then
'перебираем поля набора данных
Do
resultSet.NextRow
Set doc = New NotesDocument(db)
'извлекаем значение поля набора данных для текущей строки и кладем в
'одноименное поле документа
doc.ReplaceItemValue "FieldA", resultSet.GetValue("fieldA")
doc.ReplaceItemValue "FieldB", resultSet.GetValue("fieldB")
doc.Save True, False
Loop Until resultSet.IsEndOfData
resultSet.Close
End If[/CODE]
Если необходимо выполнить запрос с параметрами, то это будет выглядеть примерно
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">так</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='ls'>Dim con As New ODBCConnection 'Соединение с источником данных
Dim query As New ODBCQuery 'Запрос к источнику данных
Dim resultSet As New ODBCResultSet 'Набор данных, получаемый в результате выполнения запроса
con.ConnectTo "Имя твоего источника данных" 'подключаемся
query.Connection = con
query.SQL = "SELECT fieldA, fieldB FROM TheTable WHERE fieldC = ?param?"
resultSet.Query = query
resultSet.SetParameter "param", "'значение параметра'" 'устанавливаем значение параметра
resultSet.Execute 'выполняем запрос[/CODE]
Для того, чтобы нормально извлекались русские буковки, следует использовать функцию OemToCharA. Для этого в раздел Declarations добавь:
<!--shcode--><pre><code class='ls'>Declare Function OemToCharA Lib "user32" (Byval lpszSrc As String, Byval lpszDst As String) As Long[/CODE]
После этого можно уже извлекать русский текст в нормальной кодировке:
<!--shcode--><pre><code class='ls'>Dim tempString As String, code As Long
...
tempString = resultSet.GetValue("fieldA")
code = OemToCharA(tempString, tempString)
'теперь в tempString находится уже строка в нормальной кодировке
doc.ReplaceItemValue "FieldA", tempString
...[/CODE]
Забыл отметить, если dbf-ка большая, то имеет смысл в настройках ODBC-источника снять галочку на тему извлечения данных в фоновом режиме (не помню точно, как зовется), а то лично у меня, например, агент-импортер из-за нее зависал иногда.