Lotus и MS SQL

Тема в разделе "Lotus - Программирование", создана пользователем IsAvailable, 25 янв 2007.

  1. IsAvailable

    IsAvailable Гость

    Возникла необходимость подключиться к MS SQL Server'у из Лотуса.
    Про LSX почитал - в общем-то понятно как пользоваться. Ничего сложного не наблюдается. Как читать и писать данные теоретически понятно. Единственно столкнулся с одной проблемой:
    Чтобы воспользоваться методом ConnectTo у ODBCConnection мне необходимо указать в качестве первого параметра - некий источник данных... Вот тут и загвоздка.
    1. Нужно сначала скачать драйвер ODBC? (откуда его можно скачать? Что-то поиск по Сети не рулит =( Описалово есть всякое, а вот линков на скачку - не видать. Он платный? Из дистра MS SQL его можно взять?)
    2. Через менеджер драйвера добавить нужный источник данных?

    Ну со вторым вопросом, думаю, смогу разобраться (как миниммум методом тыка :())), а вот с первым вопросом помогите, пожалуйста.
     
  2. Elena Nefedova

    Elena Nefedova Гость

    Драйвер скачивать не нужно
    Control Panel -> Administrative Tools -> Data Sources (ODBC)
    Вкладка System DSN (лучше, чем User DSN)
    Кнопка Add
    В конце списка выбрать драйвер для SQL Server
    Далее специфическая настройка
     
  3. IsAvailable

    IsAvailable Гость

    О! Как оказывается, всё просто было )))))
    Elena Nefedova, огромное спасибо за помощь!
     
  4. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Здравствуйте.

    Интересует вот какой вопрос.

    Как в определённую таблицу определённой базы MSSQL записать данные из лотусового документа?

    Хотябы куда копать, где почитать, как вообще сделать лучше связь MSSQL и Lotus?
    Если у кого нибудь найдутся какие либо исходники буду очень благодарен)

    Решение с кодом для ODBC уехало сюда.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
  6. osmor

    osmor Гость

    Как вариант использовать ADODB
    Вот кусок кода который запихивает пользователей из DD в таблицу на MS SQL.
    если пользователь с таким NotesGUID уже есть в таблице MS SQL, то обновляет данные, если нет, то добавляет нового.
    строка подключения к SQL серверу формируется на Postopen из профильного документа
    Код (Text):
        Set doc = db.GetProfileDocument("frmSetupServer")
    strConnect = "Provider=sqloledb;Data Source=" & doc.SQLServIP(0) & ";Initial Catalog=" & doc.SQLServBDName(0) & ";User Id=" & doc.SQLServLogin(0) & ";Password=" & doc.SQLServPass(0)
    Документация по ADO есть на сайте MS
    Выбрал с корнем из рабочей базы, так что могут быть оборванные хвосты
    <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='vb'> Dim ws As NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim docCurrent As NotesDocument
    Dim doc As NotesDocument
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim strGUID As String
    Dim con
    Dim rst
    Dim session As New NotesSession
    Dim nameUser As String
    Dim books As Variant
    books = session.AddressBooks
    Forall b In books
    If b.ispublicAddressbook Then Set db = b
    End Forall
    Set con = CreateObject("ADODB.Connection")
    con.ConnectionString = strConnect
    con.open
    Call db.Open("","")
    Set rst = CreateObject("ADODB.Recordset")
    Set view = db.GetView("People")
    Set doc = view.GetFirstDocument
    While Not(doc Is Nothing)
    nameUser = session.CreateName(doc.GetItemValue("FullName")(0)).common
    strGuid = Cstr(doc.UniversalID)
    rst.open "select count(*) from dbo.tblLotusUser where NotesGUID = '" & strGuid & "'", con
    If Isnull(rst.fields(0).value ) Or rst.fields(0).value = 0 Then
    con.execute "INSERT INTO dbo.tblLotusUser (NameLotusUser, FullAccess, NotesGUID) Values ('" & nameUser & "' , 0 ,'" & strGuid & "')"
    Else

    con.execute "UPDATE dbo.tblLotusUser Set NameLotusUser = '" & nameUser & "' WHERE NotesGUID = '" & strGuid &"'"
    End If
    rst.close
    Set doc = view.GetNextDocument(doc)
    Wend
    con.close[/CODE]
     
  7. Klido

    Klido Гость

    Несколько лет назад, когда не удалось настроить нормальный коннект из-под линуха к ms sql (проблемы с кодировкой возвращаемых запросами данных) проблема была решена через domino on win2003 (благо такой оказался неподалёку) odbc и т.д...

    Ноыве задачи, новая организация, domino по-прежнему на линухе, задача коннекта к ms sql 2005 возникла опять... и целый отдел админов линуха и реляционки заверяют меня в том, что ничего не изменилось и не выйдет нормально подключаться в такой конфигурации... Выхода видится 2: ставить domino на win рядышком и использовать старую схему (организация против), либо пытаться запускать линуховый скрипт (реально perl или-что-там-ещё) на сервере, который будут принимать параметры, выполнять действия в реляционке и возвращать результаты в файло, которое обрабатывать.

    В связи с чем вопросы (перед тем как проводить эксперименты): случалось ли вам связываться из-под линухового лотуса с ms sql или случалось использовать скрипты под линуксом из-под domino? Особенно смущают всякие ограничения по командам ОС и темы вроде
    "Shell: Window styles are ignored." - что именно игнорируется? Стоит ли заморачиваться или проще на win лотус поднять для коннекта?
     
  8. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    А почему не хотите использовать JDBC ?
     
  9. Klido

    Klido Гость

    вот там и проблема с кодировками кириллицы - была, но утверждают, что до сих пор...
    мне хотелось бы знать, что есть место, где реально работает норм - тогда я напрягу адептов серьёзнее подойти к решению вопроса :)
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    не понял суть проблемы....
    JDBC получает резалт - перекодировать сложно?
    что такое скрипты под линухом на домине?
    всё что может линух - можно запустить из домины
     
  11. Klido

    Klido Гость

    нет никаког ожелания ещё и тут что-то делать..
    хочется банального и обычного: источник, логин, пароль, вызов сторед-процедуры, получение результатов.... не хватало тут где-то ещё перекодировкой заниматься.. на дворе всё-таки почти 2010 год :)
     
  12. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    2010 г. - а в какой кодировке драйвер (писаный МС) отдаёт строки?

    про кодировку есть литиратура (ведь от кода тоже многое зависит)
    http://javaportal.ru/java/articles/UnicodeJDK1_6.html
    занятие перекодировкрй - 1на строка, если это сложней инсталяции на винду домины, то я не знаю как прокоментировать :)
     
  13. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    Как раз на JDBC так и получается :) Хотелось бы поподробней узнать про проблему с кодировкой. Какие кодовые таблицы использует МС СКЛ? и при каком моменте возникает проблема с кодировкой?
     
  14. Klido

    Klido Гость

    есть как минимум 3 подразделения: админы ОС (линуха), реляционщики и лотусисты, все не пересекаются в возможностях, доступах и пр.
    Админы настраивают на линухе коннект к реляционке и сообщают имя, логи, пароль лотусистам. Те применяют любимый способ - в результатах кракозяблы. Админы мучают локали, таблицы символов, хз что ещё - нет результата. Про "кодовые таблицы использует МС СКЛ" я ничего пока не знаю, хочется верить, что коллеги достаточно компетентны и помнят про них :)

    ОК, я понял, надо самому закопаться в это дело и понять раз и навсегда в чем траблы... И пошто у них тут MS SQL, а не оракл на линухе? там всё прекрасно :)
     
  15. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    Если использовать JDBC никаких админов не надо (по крайней мере с начала) :)
    1. Качаете драйвер (jdbc ms sql)
    2. Пишите на java агент. Драйвер можно вставить сначала в агент (потом лучше выложить его в каталог на сервере домино)
    3. Конект к базе логин и пароль указываете в агенте. Пример:
    Код (Text):
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
    "databaseName=AdventureWorks;user=MyUserName;password=*****;";
    Connection con = DriverManager.getConnection(connectionUrl);
    Собственно все что нужно от админов это логин и пароль.
     
  16. Klido

    Klido Гость

    зато всё что нужно от лотусистов - переписывать заново код, который норм работает который год... и это вместо банально подключиться и получить всё, что необходимо...
    В общем почти понятно, что с шашкой и без бубна не пройти... И подключается вроде норм, а вот дальше...
    Вот тест агента - почти хелп (в реляционке 1 таблица и 2 поля с русскими именами "поле1" и "поле2")
    <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">
    Код (Text):
    Sub Initialize
    Dim con As New ODBCConnection
    Dim msg As String
    If Not con.ConnectTo("olapMSSQL","sa","123") Then
    Print "Cannot connect to ....."
    Exit Sub
    End If
    If con.IsConnected Then
    Print "подключено"
    Print con.DataSourceName
    tables = con.ListTables("olapMSSQL")
    Print "SQL contains the following tables:" & Chr(10)
    For n% = Lbound(tables) To Ubound(tables)
    Print tables(n%)
    Next
    fields = con.ListFields("Table1")
    Print "Table contains the following fields:" & Chr(10)
    For n% = Lbound(fields) To Ubound(fields)
    Print fields(n%)
    Next
    con.Disconnect
    End If
    End Sub
    печальный результат... что интересно, строк хоть и пустых должно быть 2 для полей, а видим одну....
    <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">
    добавив extendederror получаем после коннекта (якобы) при получении таблиц
    04/08/2009 16:05:09 Agent Manager: Agent printing: [unixODBC][FreeTDS][SQL Server] Unable to connect to data source
    ну и как это назвать, если isConnected даёт true, а реально - ничего подобного?
     
  17. Klido

    Klido Гость

    дальше - хуже... при попытке напрямую выполнить запрос за выборку из таблицы, где поля именованы на русском и значения на русском такой вот еррор..
    Agent Manager: Agent printing: [unixODBC][FreeTDS][SQL Server]Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier
    грустно...
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    пынятно ;)
    выж грили про JDBC (вернее мы, а вы подтвердили)
    а оказалось юниксовый ОДБЦ, да ещё и в LS....
     
  19. vincent_vega

    vincent_vega Lotus team
    Lotus team

    Регистрация:
    2 апр 2005
    Сообщения:
    165
    Симпатии:
    1
    ИМХО, лучше 1 раз по нормальному переписать и больше не заморачиватсья на зависимости от ОС.
     
  20. Klido

    Klido Гость

    про него изначально речь и шла, а вы как раз порекомендовали JDBC, я лишь сказал, что в своё время пробовали всё, что смогли и были проблемы, которые обошлись только виндовым лотусом и ODBC...
    как бы что в инете, что вообще тема, что ODBC работает из-под линуха в ms sql, но... похоже до сих пор не с кириллицей (юникодом?).
    ОК, будем искать... или на джаве писать ;)
     
Загрузка...
Похожие Темы - Lotus SQL
  1. swyatogor
    Ответов:
    30
    Просмотров:
    1.208
  2. anna
    Ответов:
    15
    Просмотров:
    1.133
  3. nayke
    Ответов:
    11
    Просмотров:
    3.696
  4. NickProstoNick
    Ответов:
    17
    Просмотров:
    5.324
  5. turumbay
    Ответов:
    19
    Просмотров:
    5.879

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