Использование LSX

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#1
хотелось бы узнать использует(зовал) ли кто данную библиотеку, какие ограничения и проблемы встречаются ? под какие задачи использовалось решения с участием этой либы ?

ну и соответственно, интересно использовали ее в конструкциях типа - пользовательский интерфейс в лотусе, данные в DB2 (oracle и т.д.)
 
H

Hedg

#2
Я юзаю, проблем особых не было, разве что с пробелами были траблы, когда доставал из базы значения с проблеми забыл указать res.TrimTrailingSpaces = False и долго парился с ошибкой.
 
K

K-Fire

#3
LSX это общее название, не какая-то конкретная библиотека.
Поэтому вопрос: что за lsx то собственно? :)
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#4
Для: Hedg

а на каких задачах, собственно, используется ?


Для: K-Fire

имелось ввиду данные класы:
LCSession, LCConnection, LCFieldlist, LCField, LCStream, LCNumeric, LCCurrency, LCDatetime
 
H

Hedg

#5
Задача стотит, вытягивать данные из SyBase в Лотус. Данные - накладные продаж, и формирование отчётов на основе полученных данных.
 
30.05.2006
1 345
11
#6
LSX это общее название, не какая-то конкретная библиотека.
Поэтому вопрос: что за lsx то собственно? :)
Так в чем и прелесть-то: конкретная библиотека выбирается уже на run-time (у меня оно лежит в настройках, в профайле)!
По сути вопроса:
юзаю давно, успешно. Глюков мало. Из особенностей:
1.не все библиотеки на LCConnect.Select возвращают счетчик (Oracle всегда - UNKNOWN (-1))
2.Дежурный баг - кириллица. Если хост-кодировка отличается от кодировки клиента, можно получить "иероглифы". Баг зарепорчен в IBM, но не признан. Workaround-ы известны
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#7
Для: Constantin A Chervonenko.

1. в хелпе написано что LSX может работать в двух режимах стандартном и LEI ..
т.е. если мы не купили LEI, то значит работаем в стандартном режиме, я правильно понимаю ?

2. можете дать пару комментариев по поводу того, как организовать пулл подключений ?

3. каким образом создать коннекшн, если лотус находится на одной машине, а реляционная база на другом ?
возможно это или все должно находиться на одной машине ?
 
30.05.2006
1 345
11
#8
Для: Constantin A Chervonenko.

1. в хелпе написано что LSX может работать в двух режимах стандартном и LEI ..
т.е. если мы не купили LEI, то значит работаем в стандартном режиме, я правильно понимаю ?

2. можете дать пару комментариев по поводу того, как организовать пулл подключений ?

3. каким образом создать коннекшн, если лотус находится на одной машине, а реляционная база на другом ?
возможно это или все должно находиться на одной машине ?
1.Под LEI не программировал ничего
2.Не понял вопроса
3.А у тебя как Лотусёвые формы и т.п. на юзерском ПК работают? База-то на др.машине. Клиент-сервер однако. С СУБД аналогично. На Лотусе тебе нужен СУБДшный клиент, а где уж сама база...
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#9
по поводу вопроса 2.
что написано в хелпе про пулл соединений я не совсем понял, вроде как там написано, что пулл соединений с бд как-то там сам по себе формирует подключения пользователей к бд

по пункту 3
вопрос заключался в том, что при формировании соединения указываются имя БД, логин, пароль..
и собственно не понятно как lotus определяет реляционка находится на этом же пк или на другом ?

если домино на одном сервере, а ДБ2 на другом, то как прописать соединение ?
 
H
#10
Для: Kee_Keekkenen
по пункту 3
Данные берутся из настроек ODBC из системных DSN, в которых указан драйвер для работы с конкретной базой, логин, пароль, адрес и порт базы.

Настраивается это всё в Панель Управления /Администрирование/Источники данных (ODBC)
 
30.05.2006
1 345
11
#11
по поводу вопроса 2.
что написано в хелпе про пулл соединений я не совсем понял, вроде как там написано, что пулл соединений с бд как-то там сам по себе формирует подключения пользователей к бд
А.. Да, было что-то такое. Пошли какие-то глюки - не юзаю
по пункту 3
вопрос заключался в том, что при формировании соединения указываются имя БД, логин, пароль..
и собственно не понятно как lotus определяет реляционка находится на этом же пк или на другом ?

если домино на одном сервере, а ДБ2 на другом, то как прописать соединение ?
Для СУБДы Лотус - обычный клиент. Так что разбираться, где физически лежит база - не Лотусиное дело. Лотус к СУБД обращается через АПИ соотв.клиента (SQLNet для Oracle к примеру).
К стати: при подключении к Oracle что есть идя БД? На самом деле там либо Connection string (это такое нехилое выражение о десятке параметров) либо ссылка на оное в tnsnames.ora
В промышленных СУБД БД - вовсе не файл!
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#12
Для: Hedg

вообще-то lsx (lcconnection и иже сним) вроде не использует odbc в принципе, хотя я возможно и ошибаюсь, но тогда непонятно как происходит соединение, потому что никаких настроек оdbc я не создаю вообще (может lsx создает ? но я так не думаю..)

Для: Constantin A Chervonenko

да, с этим все понятно..
 
H
#13
Для: Kee_Keekkenen

Покажу кусок своего кода
Код:
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim res As New ODBCResultSet
Dim fRc As Integer
Dim strProductID As String
strProductID=""

Dim sSQL As String
Dim sSQL1 As String
Dim sSQL2 As String
Dim sORDER As String

sSQL1="SELECT number_doc from lotus.v_sales_wholesale where date_check="
sORDER=" ORDER BY number_document"
sSQL=sSQL1+sDataSQL+sORDER

Код:
Function GetODBCNAme (sBase As String) As String
Dim sODBC As String

If sBase="одесса" Then
sODBC="base7_01"
End If

If sBase="масмаркет" Then
sODBC="trademas"
End If	

If sBase="элита" Then
sODBC="uel"	
End If

GetODBCNAme=sODBC
End Function
base7_01, trademas, uel - это системные DSN, которые настраиваются в ODBC.
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#14
я так понимаю мы говорим о немного разных вещах..
ты используешь UseLSX "*LSXODBC", а я Uselsx "*lsxlc" и соответственно подключение выглядит иначе

Sub new (dbName As String, userLogin As String, userPass As String, tableName As String)
try:
On Error Goto catch
Set db2session = New LCSession
Set db2conn = New LCConnection("db2")
db2conn.database = dbName
db2conn.userid = userLogin
db2conn.password = userPass
db2conn.metadata = tableName
db2conn.Connect
Print "Подключение к " + db2conn.database + " выполнено."
Exit Sub
catch:
If Err = 12325 Then
Print "Нет связи с базой "+dbName, "Сервер DB2 не запущен !"
Else
Print Cstr(Err) + " " + Error + " " + Cstr(Err), Cstr(Getthreadinfo(1)) + " from " + Cstr(Getthreadinfo(10))
End If
Exit Sub
End Sub
 
30.05.2006
1 345
11
#15
вообще-то lsx (lcconnection и иже сним) вроде не использует odbc в принципе, хотя я возможно и ошибаюсь, но тогда непонятно как происходит соединение, потому что никаких настроек оdbc я не создаю вообще (может lsx создает ? но я так не думаю..)
Немножко ошибаешься. lsx может использовать ODBC, это просто один из коннекторов:

Set db2conn = New LCConnection("odbc2")

Полезная штука - для всяк старья (типа dbf) и связи с M$. Я таким образом к 1С подрубаюсь (на SQL Server-е). Настройки там расползаются по двум местам: наша прикладушка+ODBC. В панели управления odbc логин-пароли не пишу, конкретные таблицы - тоже. Но сервер, ip, порты...