1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Lotus и DBF

Тема в разделе "Lotus - Программирование", создана пользователем at-soft-utility, 6 окт 2004.

Статус темы:
Закрыта.
  1. Don

    Don Гость

    Репутация:
    0
    Для решения такого и подобных вопросов использую программы написанные на Дельфи. Основа - набор компонентов DNotes. Гибкость получается абсолюной. Компоненты позволяют читать и писать в лотусные базы, а всё остальное решается на Delphi
     
  2. Vagor.ini

    Vagor.ini Гость

    Репутация:
    0
    Don
    Где сие компоненты можно заюзать, поподробне пожалуйста...
     
  3. Guest

    Guest Гость

    Репутация:
    0
    Была такая фирма VSoft Technologies Pty Ltd из Австралии. Она их и разработала. Там мы их и покупали. Правда, поддержка прекращена. Автор Vincent Parett считает, что правильнее использовать COM - Lotus предоставляет его бесплатно. А я давно и успешно пишу всякие утилиты и пр. Есть в Инете эти компоненты с лекарством. Этот вариант могу выслать.
    Похожие компоненты писал в Росии Колчин. Они бесплатные.
     
  4. Afrael

    Afrael Гость

    Репутация:
    0
  5. Azazel

    Azazel Гость

    Репутация:
    0
    Здравствуйте.
    У меня возникла проблема. Требуется считывать определенную инфу из приходящих dbf файлов и заносить ее в другую базу. Так вот - как можно из Лотуса открыть dbf файл и выполнить в нем какие то запросы. Я сделал это прописав данный файл в администраторе источников данных ODBC. таким образом я его свободно открываю и выполняю нужные мне действия. Но - файлы будут приходить каждый раз разные ( с одинаковыми полями естественно ) - неужели каждый раз их надо прописывать в администраторе? Нет ли какого либо другого способа работы с dbf файлами?
    Заранее спасибо.
     
  6. SkyRanger

    SkyRanger Active Member

    Репутация:
    0
    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Как из dbf файла импортировать данные. Т.е. мне нужно создать документ для каждой строки dbf файла и заполнить поля документа данными из столбцов dbf

    Киньте линков плииз, а то найти ничего приличного или доступного не могу :D
     
  7. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Страдалец :D
    В общем, занимался такой темой, делал через 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-источника снять галочку на тему извлечения данных в фоновом режиме (не помню точно, как зовется), а то лично у меня, например, агент-импортер из-за нее зависал иногда.
     
  8. SkyRanger

    SkyRanger Active Member

    Репутация:
    0
    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Это что? У меня куча ошибков <_<

    Это акшн создавать?
     
  9. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    У меня это агент. Насчет ошибков - в студию, разберемся. В любом случае, код приводится в сокращении (так сказать, суть передаю) <_<
     
  10. SkyRanger

    SkyRanger Active Member

    Репутация:
    0
    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Ааа разобрался надо было в опции добавить:
    Код:
    Uselsx "*LSXODBC"
    Получилось вот что:
    <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 session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim workspace As New NotesUIWorkspace

    Set db = session.CurrentDatabase

    'con.ConnectTo( "fams")

    If Not con.ConnectTo("fams") Then
    Messagebox "Could not connect to fams"
    Exit Sub
    End If

    Set query.Connection = con
    Set resultSet.Connection = con

    query.SQL = "SELECT STREET_NID,NAME FROM db.streets_names"
    Set resultSet.Query = query

    resultSet.Execute

    'Если что-то вернулось...
    If resultSet.IsResultSetAvailable Then
    'перебираем поля набора данных
    Do
    Call resultSet.NextRow
    Set doc = New NotesDocument(db)
    doc.Form = "streets"
    'извлекаем значение поля набора данных для текущей строки и кладем в
    'одноименное поле документа
    Call doc.ReplaceItemValue ("street_cod", resultSet.GetValue("STREET_NID") )
    Call doc.ReplaceItemValue ("street_name", resultSet.GetValue("NAME"))

    doc.Save True, False
    Loop Until resultSet.IsEndOfData
    resultSet.Close
    End If[/CODE]только что-то нефига не возвращает.

    If resultSet.IsResultSetAvailable Then

    всегда false

    А как правильно настроить ODBC источник???
     
  11. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Ну да, забыл про него <_<
    Панель управления - Администрирование - Источники данных (ODBC) - вкладка Пользовательский DSN (хотя можно и системный имхо) - Добавить. В открывшемся диалоге выбираешь драйвер (у меня был для FoxPro, ибо dbf-ка создавалась в FoxPro 2.6), потом открывается диалог, в котором вводишь Data Source Name (имя источника данных, которое будешь использовать при подключении), Database type (я выбирал Free Table directory, ибо файла БД в FP 2.6 не было), указываешь путь к каталогу с твоими dbf-ками. Можешь также таыкнуть Options и снять галочку Fetch data in background (как я упоминал, с этим бывают проблемы).
    А так, еще запрос свой проверь, мож он неправильный... Например, зачем там префикс db перед названием таблицы?
     
  12. SkyRanger

    SkyRanger Active Member

    Репутация:
    0
    Регистрация:
    17 мар 2007
    Сообщения:
    44
    Симпатии:
    0
    Сапасибо!

    Все получилось :)

    Оказывается это глючный драйвер фокспро не хочет понимать VFP 9 таблицы.

    Пришлося извращатся конвертить в dbase4 и из них в прогу, в общем все как всегда через одно место o_O
     
  13. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    Доброе время суток

    Есть файл DBF к надо импортнуть. При этом некоторые поля таблицы - кракозяблы. как побороть?

    з.ы. - файл свабодно распространяеммая выписка о банках Украины с сайта нац. банка _http://bank.gov.ua/
    Вот есть, если интересно
    Посмотреть вложение RcuKru.arj.rar

    Lotus и DBF
     
  14. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.323
    Симпатии:
    4
    Через LSX. Там для текстовых полей есть LCStream, которому можно задать любое преобразование кодировки.
     
  15. morpheus

    morpheus скриптописец

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    3.915
    Симпатии:
    1
    всем спасибо, проблем с кодировкой нет. глюки из-за неподдерживания DBF укр. символов І или Ї
     
  16. Eagle69

    Eagle69 Гость

    Репутация:
    0
    Добрый день коллеги!

    Столкнулся с задачей - не представляю с какой стороны подойти.

    Есть domino 7 работающий на linux. В некоторую папку скидывается dbf файл. Хочется записи этого файла кинуть в базу.

    Спасибо. Буду рад любым ответам
     
  17. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей