0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 202
1

Lotus и MS SQL

24.01.2007, 12:04. Показов 37799. Ответов 31
Метки нет (Все метки)

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

Ну со вторым вопросом, думаю, смогу разобраться (как миниммум методом тыка :())), а вот с первым вопросом помогите, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2007, 12:04
Ответы с готовыми решениями:

Lotus и MS SQL (jdbc)
Итак, по рекомендациям в топике ниже решено подключиться к sql2005 через JDBC. Из-под LD 8.5.1 ...

Lotus и MS SQL (ODBC)
Есть источник данных lotusdb СУБД - MS SQL В этом источнике есть база lotusdb В этой базе -...

Lotus и MS SQL (LCConnection)
Соединяюсь с базой - запускаю хранимую процедуру. Получаю одну запись. Dim LCRecord As...

Upload file from lotus to sql
Добрый день.. Собственно ломаю голову над сабжем.. Есть пусть получить файл как атач выложить его...

31
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
04.08.2009, 13:39 21
Author24 — интернет-сервис помощи студентам
ВарЬЯнт: LSX (хоть и через ODBC).
В LSX есть замечательные методы класса LCStream, позволяющие восстановить любые(?) кракозябры.

Именно так мне пришлось действовать, когда IBM-еры не признали ошибку коннектора Oracle
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
04.08.2009, 13:58 22
Цитата Сообщение от Constantin A Chervonenko
IBM-еры не признали ошибку коннектора Oracle
ну как раз с ораклом никаких граблей в плане кодировок не наблюдалось.. а вот MSSQL...
например, DECS в коннекшене даже не видит русские имена полей в таблице:
Owner: dbo
Name: Table_1
Field(s): ????1 (Text)
???2 (Text)


нарыл вот странное
http://groups.google.com/group/django-user...9e400a87bdbce4b
напряг админов, ща переустановят с бубном - мож что и получится...

а сам пока LCStream погляжу...
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
05.08.2009, 02:18 23
Цитата Сообщение от Klido
ну как раз с ораклом никаких граблей в плане кодировок не наблюдалось..
Ещё не всё потеряно. Зависит от комбинации кодировок сервера Oracle и того Oracle-клиента, которого юзает Lotus. Если, к примеру, оракл отдаёт данные в 1251, а LND живёт на Виндозе, то с кодировками всё будет Ok. Или Оракл отдаётся в utf8, а Домина живёт на Линухе - тоже будет Ok. А вот в других комбинациях... <_<
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
05.08.2009, 10:24 24
Цитата Сообщение от Constantin A Chervonenko
А вот в других комбинациях... blink.gif
это гипотетически... не хватало ещё в корпоративной среде иметь много "других" комбинаций <_<
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
09.08.2009, 11:47 25
Цитата Сообщение от Klido
это гипотетически... не хватало ещё в корпоративной среде иметь много "других" комбинаций
Не хватало. Контора организованно переезжает с Винюков на Линухи. Переходный период - сосуществование платформ.
А дай Бог ещё и до RISC-ов или mainfreim-ов дорастём..
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 223
05.12.2011, 14:29 26
Есть SQL база, где в одной из таблиц хранятся фотографии объектов.
В лотусе надо по коду объекта получать фотку (для еачала хотя-бы в файл).
написал<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">

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    Dim FS As NotesStream
Dim FileName As String
Dim AdrNo As Long
Dim PhotoFile As String
Dim PhotoDate As Variant
 
Set con =New ODBCConnection
Set qry =New ODBCQuery
Set rs =New ODBCResultSet
 
Call con.ConnectTo("Server1","sa","sa")
Set qry.Connection = con
Set rs.Query = qry
 
Set wks =New NotesUIWorkspace
Set Sess =New NotesSession
Set CurDoc =wks.CurrentDocument.Document
qry.SQL = "SELECT format, Date FROM img.dbo.images WHERE AdrNo=" & CurDoc.UnitCode(0)
rs.Execute
FileName = "c:\work\View.jpg"
 
Dim RetCode As Variant
RetCode =rs.NextRow
 
If rs.GetValue("Format") = "jpg" Then
Set FS = Sess.CreateStream
Call FS.Open(FileName)
qry.SQL = "SELECT Image FROM img.dbo.images WHERE AdrNo=" & CurDoc.UnitCode(0)
rs.Execute
RetCode =rs.NextRow
Call FS.Write( rs.GetValue("Image"))
Call FS.Close
End if
rs.Close( DB_CLOSE )
con.Disconnect
Так вот:
Call FS.Write( rs.GetValue("Image")) говорит, что данные должны быть бинарные
Call FS.WriteText( rs.GetValue("Image")) в выходной файл пишется слово "jpg"

Кто может знает - как?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.12.2011, 14:54 27
1 - не уверен, что ОДБЦ могет получать блобы
2 - нет уверенности что в блобе будет байнари (возможен и base64)
ну и в завершении http://web2.inttrust.ru/site/itforum.nsf/4...33;OpenDocument
для инфы о перекодировки бинарноков в базе64 и обратно
для лучшего резалта - java
0
RoJ
05.12.2011, 15:07 28
допиши второй параметр при открытии stream

LotusScript
1
Call FS.Open(FileName, "binary")
и используй Write - только писать надо кусками (размером около 30К)
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 223
05.12.2011, 15:41 29
Цитата Сообщение от lmike
1 - не уверен, что ОДБЦ могет получать блобы
2 - нет уверенности что в блобе будет байнари (возможен и base64)
ну и в завершении http://web2.inttrust.ru/site/itforum.nsf/4...33;OpenDocument
для инфы о перекодировки бинарноков в базе64 и обратно
для лучшего резалта - java
В базе хранятся фотки. Сейчас есть задача 1998(?) года на ACCESS. Там фотки дергаются через:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
     Dim r As Recordset
Dim FS As Stream
....
Set FS = New Stream
FS.Open
FS.Type = adTypeBinary
Set r = SQLConnect.OpenRecordset("SELECT image, date FROM images.dbo.images WHERE type=4 and adrno=" & AdrNo, dbOpenSnapshot)
FS.Write r!Image
Путь = "c:\work\View.jpg"
FS.SaveToFile Путь, adSaveCreateOverWrite
SQLConnect.Execute "DELETE FROM images.dbo.Images WHERE type=4 AND adrNo = " & AdrNo , dbSeeChanges
Про java думал, но чем лучше, объектная модель та же самая...
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
05.12.2011, 16:04 30
Про java думал, но чем лучше, объектная модель та же самая...
jdbc помощнее будет и не требует настройки на клиенте
не будет заморочек с нотусёвым стримом и конвертацией (коле на то будет потребность) base64<->binary
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 223
05.12.2011, 19:49 31
Цитата Сообщение от lmike
jdbc помощнее будет и не требует настройки на клиенте
не будет заморочек с нотусёвым стримом и конвертацией (коле на то будет потребность) base64<->binary
Ага... Копнем.
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 215
06.12.2011, 17:11 32
Посмотрите код, картинку брали из БЛОБа Информикса, но это не существенно, т.к. объекты АДО - теже.
И вот полезный линк вам:
http://www.w3schools.com/ado/default.asp
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код (ADO)</div></div><div class="sp-body"><div class="sp-content">

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Sub Click(Source As Button)
Dim ADOConnection As Variant, ADOCmd As Variant , RecordSet As Variant, ADOStream As Variant, ADOField As Variant
Dim RecordsCnt As Long, intLoop As Long, FileLength As Long, NumBlocks As Long, LeftOver As Long
 
 
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const Blocksize = 4096
 
Set ADOConnection = CreateObject( "ADODB.Connection" )
ADOConnection.Open "Provyder=Ifxoledbc;Data Source=clipper@ol_asu;User ID=lotus-user;Password=09032010;Persyst Security Info=true;"
 
If ADOConnection.State = 0 Then
Exit Sub
End If
 
Set RecordSet = CreateObject( "ADODB.Recordset" )
RecordSet.Open "foto", ADOConnection
 
If RecordSet.State = 0 Then
Print "==================== RecordSet.State = 0 ===================="
Goto l_finysh
End If
 
If Not( ( RecordSet.BOF <> True ) Or ( RecordSet.EOF <> True ) ) Then
Goto l_finysh
End If
 
Set ADOStream = CreateObject( "ADODB.Stream" )
ADOStream.Type = adTypeBinary
 
RecordSet.MoveFirst
 
Do
RecordsCnt = RecordsCnt + 1
 
Call ADOStream.Open
Set ADOField = RecordSet.Fields( "foto" )
 
FileLength = ADOField.ActualSize
NumBlocks = FileLength \ BlockSize
LeftOver = FileLength Mod BlockSize
 
If LeftOver <> 0 Then
ADOStream.Write ADOField.getchunk( LeftOver ) This gathers the remainder portion of the stream first, you could do it last if you want
End If
 
For intLoop = 1 To NumBlocks Now loop through the majority of the stream
ADOStream.Write ADOField.getchunk( BlockSize )
Next
 
Call ADOStream.SaveToFile( "C:\IBM\Photos\" + Cstr( RecordSet( "lc" ).value ) + ".gif", adSaveCreateOverWrite )
Call ADOStream.Close
 
If ( RecordsCnt Mod 50 ) = 0 Then
Print "==================== обработано записей: " + Cstr( RecordsCnt ) + " ===================="
End If
 
RecordSet.MoveNext
Loop    While RecordSet.EOF = False
 
l_finysh:
 
RecordSet.Close
ADOConnection.Close
 
Exit Sub
 
 
onerr:
Call LogErrorEx( Cstr( Getthreadinfo(1) ), 1, Nothyng )
Resume rez
rez:
End Sub
0
06.12.2011, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2011, 17:11
Помогаю со студенческими работами здесь

SQL Server сообщения через Lotus Notes
Добрый день. Может ищу решение задачи по рассылке писем SQL Server-ом через Lotus Notes...

При запросе в Lotus через Com, после 245 Search, Lotus падает
Проблема в следующем, надо написать стороннюю программу на Net, которая бы вытаскивала почтовый...

СЭД на Lotus за и против или стоит ли внедрять документооборот на Lotus?
Здравствуйте, озадачился заменой устаревшей СЭД (ДоксВижн) на новую. Рассматриваем...

Tomcat и Lotus, такое ощущение что не находит lotus.jar. Как с этим бороться???
Всем доброго дня! Осуществляем взаимодействие по технологии SOAP, используя Tomcat. Выдает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru