Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/175: Рейтинг темы: голосов - 175, средняя оценка - 4.67
fyryhyod
1

Проблема с LotusScript

27.07.2004, 16:49. Показов 32135. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такая вот проблема!
Как в LotusScript зделать экспорт в файл MS Word содержимого письма?

ICQ 24295867
fhserv@mail.ru
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2004, 16:49
Ответы с готовыми решениями:

Проблема с вызовом java из lotusscript
Всем здравствуйте, есть проблемка. Написал класс на джаве : Код (Java): public class...

Проблема с запуском агента на Lotusscript
Доброе время суток! Столкнулся с такой проблемой.. создал на форме кнопку и прописал код...

Проблема с созданным Lotusscript-ом документом
Доброго времени суток! Столкнулся с проблемой, с которой, наверное, когда-то сталкиваются все. ...

Проблема при создании Calendar Entry с помощью Lotusscript
Доброго времени суток. Столкнулся с проблемкой. Создаю Reminder с помощью LotusScript. Когда...

14
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
27.07.2004, 17:06 2
Ну вообще то простейший экспорт есть в меню File - Export или то же самое на "собаках" @Command([FileExport]; fileType ; fileName ))
0
fyryhyod
27.07.2004, 17:14 3
@-Command не запускается из LotusScript? а мне надо в сложном агенте одну из функций такую зделать!
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
27.07.2004, 17:25 4
А документ при этом открыт на UI или нет ?
Если открыт, то имхо может прокатить агент с собакой, а вызывать его можно из скрипта.
Еще из того что приходит в голову. Где то валялась у меня dll, сбрасывающая содержимое поля в rtf файл. Но dll малость специфичная и подойдет ли - не знаю.
Попробуй поиграться с двумя агентами, если не получится кинь сообщение, попробую поискать dll.
0
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
27.07.2004, 17:27 5
Кстати, не уверен что в данном случае можно, но вообще то "собаки" можно выполнять из скрипта. Посмотри Evaluate
0
fyryhyod
27.07.2004, 17:31 6
Я тут совсем новичок - подскажите по подробней плиз!

Вот эта хрень не работает:

If doc.HasEmbedded Then
Set body = doc.GetFirstItem("Body")
Forall att In body.EmbeddedObjects
If att.Type = EMBED_ATTACHMENT Then
filepath$ = "C:\MAIL\IN\" & att.Source
Call att.ExtractFile(filepath$)
End If
End Forall
Else
Set agent = db.GetAgent("import")
agent.Run(doc.NoteID)
End If
End Sub

Говорит Notes error: @-функция не может использоваться в этом контексте
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
27.07.2004, 17:44 7
А в дебагере ругается на месте вызова агента ?
0
fyryhyod
27.07.2004, 17:52 8
Как вызвать @-команду из LotusScript - ГЛАВНЫЙ вопрос
?????????????????????????????????????????????????
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
27.07.2004, 18:01 9
я ж раньше писал функция Evaluate. посмотри в хелпе.
Из приведенного тобой кода ничего определенного сказать не могу. имхо там все грамотно и никаких заморочек вознивать не должно. Возможны проблемы в агенте Import. Но его кода я не знаю
Если что стучи в асю 128084858
0
fyryhyod
28.07.2004, 08:57 10
ПОЛНЫЙ текст агента

Sub Initialize
Dim session As New NotesSession
Dim doc As NotesDocument
Dim fileNum As Integer
Dim collection As NotesDocumentCollection
Dim body As NotesRichTextItem
Dim pathName As String, fileName As String
Dim agent As NotesAgent

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
fileNum%=Freefile
Open "c:\MailMaster.add" For Output As fileNum%
Print #fileNum%, doc.GetItemValue("Subject")0)
Close fileNum%
REM Удаление
pathName$ = "C:\MAIL\IN\"
fileName$ = Dir$(pathName$+"*.*", 0)
Do While fileName$ <> ""
Kill pathName$+fileName$
fileName$ = Dir$()
Loop



REM Извлечение
If doc.HasEmbedded Then
Set body = doc.GetFirstItem("Body")
Forall att In body.EmbeddedObjects
If att.Type = EMBED_ATTACHMENT Then
filepath$ = "C:\MAIL\IN\" & att.Source
Call att.ExtractFile(filepath$)
End If
End Forall
Else
Set agent = db.GetAgent("import")
agent.Run(doc.NoteID)
End If
End Sub


ТЕКСТ АГЕНТА import

@Command( [FileExport] ; "Microsoft Word 6.0" ; "C:\\MAIL\\IN\\0.doc")
09.08.2004, 17:10 11
Приветствую
я в лотусе новичок поскажите пожалуйста как всавити данные в поля,
connect и выборка данных с SQL успешна, не получается обратиться к
полю для вставки значения, что-то не понимаю.
один из вариантов кода(их было много, возможно есть лишнее)

Option Public
uselsx"*LSXODBC"

Sub Initialize

Dim city As String
Dim con_sql As New ODBCConnection
Dim query As New ODBCQuery
Dim result As New ODBCResultSet
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim source As NotesUIDocument

Set workspace = New NotesUIWorkspace
Set source = workspace.currentdocument

Print "LS:DO LSX Version: " & con_sql.GetLsdoMasterRevision
If con_sql.ConnectTo ("test_sql") Then
Print "ODBC Connection to " & con_sql.DataSourceName & " opened"
Else
Messagebox "FAILED"
Messagebox "Error number: " & con.GetError & Chr( 13 ) & "error message: "& con.GetExtendedErrorMessage
Exit Sub
End If
----------------------------- запрос к SQL и возврат в Lotus
Set query.Connection = Con_sql
Set result.Query =Query
query.SQL = "select Country, Region, City from Address where City=Москва "
result.Execute

result.FirstRow

Do While Not result.IsEndOfData
city=result.GetValue ("City")
region=result.GetValue ("Region")
country=result.GetValue ("Country")
Call source.fieldsettext("city",result.getvalue("city"))
result.NextRow
Loop
con_sql.Disconnect
Print "ODBC Connection to " & con_sql.DataSourceName & " clouse"

End Sub
mor
17.08.2004, 16:14 12
... & con_sql.DataSourceName & " clouse"
"там close" надо писать
19.08.2004, 10:03 13
["там close" надо писать]
Так дело в том что этот код не рабочий
данные он то получает но не "вставляет"
Я эту проблему решил открывая два connectа
один с SQLбазай другой с Lotusовской базой,
но это не дело - два коннекта.
Ты разве больше ошибок не заметил?
mor
19.08.2004, 12:31 14
Дмитрий
Я пошутить неудачно пытался, обращая внимание на неправильное написание слова "закрыть" на английском языке. Если бы я мог найти ошибку, я бы конечно тебе о ней сказал, а так мне нечего было сказать, потому что мне нужно "потрогать руками" твой код, сидеть за твоим компом и т.д., надеюсь, ты меня понимаешь, что удаленно трудно найти ошибку, если она не очевидна.
Сейчас я приведу тебе примеры кода из рабочей базы данных (R6.5), которая работает напрямую с MS SQL Server 2000, возможно это тебе поможет. Если что непонятно, то спрашивай. Я просто код писал года два назад и с тех пор не работал с sql, уже тоже немного подзабыл все тонкости...


Код
(Declaration)
декларация в библиотеке программ
Объявление переменных для работы с SQL- сервером
Public usrtype As Integer
Public keyret As Variant
Public mysource  As String
Public  myuser  As String
Public  mypass  As String
Public con As ODBCConnection
Public qry As ODBCQuery
Public result As ODBCResultSet
Public sqlstring As String

Public CurMonth As String
Public CurYear As String
Public CurDay As String

Sub Initialize
инициация в библиотеке программ
Set ws = New NotesUIWorkspace
Set session = New NotesSession
Set db = session.CurrentDatabase

Установка текущих дня, месяца и года
CurDay = Cstr( Day(Now()) )
CurMonth = Cstr( Month(Now()) )
CurYear = Cstr( Year(Now()) )

Установка переменных для соединения с SQL- сервером
mysource = "server"
myuser = "Webuser"
mypass = "webuser"

Set con = New ODBCConnection
Set qry = New ODBCQuery
Set result = New ODBCResultSet
Set qry.Connection = con
Set result.Query = qry

End Sub

Sub Click(Source As Button)
действие (action) на форме, обновляет информация о пользователе, его счете с sql сервера
Dim CurDollarRate As Double
Dim Message  As String

If doc.RegNum(0) = 0 Or doc.RegNum(0) = 20000 Then
Message = "Неверный регистрационный номер  - " + Cstr(doc.RegNum(0) )
Messagebox Message, MB_OK + MB_ICONSTOP, "ПРЕДУПРЕЖДЕНИЕ!"
Exit Sub
End If

Установка соединения с SQL- сервером
(остальные переменные инициируются при подкл. библ. по Initialize)
keyret = con.ConnectTo( mysource, myuser, mypass)
If Not con.IsConnected Then
Messagebox "Could not connect to  " + mysource + "  for  " + myuser ,,  "No connection"
Exit Sub
End If

Call  UserRefresh(doc)  Обновление  текушей карточки пользователя (абонента сети)

Разрыв соединения с SQL- сервером
result.Close(DB_CLOSE)
con.Disconnect

End Sub

Sub  UserRefresh( doc As notesdocument)
функция библиотеки программ
Обновление  карточки абонента
Dim  Message  As String

Запрос общих данных пользоавтеля
qry.SQL = "EXEC UserCommonInfo "+ Cstr(doc.RegNum(0))
If Not result.Execute Then
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Message = "Сбой при запуске процедуры UserCommonInfo для абонента  " + Cstr(doc.RegNum(0))
Messagebox Message, MB_OK + MB_ICONSTOP, "ПРЕДУПРЕЖДЕНИЕ!"
Exit Sub
End If
result.nextrow

doc.RegName=result.getvalue("Name")
If doc.RegName(0) = "" Then
Message = "Нет имени абонента или неверный регистрационный номер  - " + Cstr(doc.RegNum(0) )
Messagebox Message, MB_OK + MB_ICONSTOP, "ПРЕДУПРЕЖДЕНИЕ !"
Exit Sub
End If

doc.vv = result.getvalue("Money")      Принимается текстовая строка с разделителем "."
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )   Заменяем  "."  на  ","
If doc.vv(0) = "" Then
doc.Counter = 0.0
Else
doc.Counter = Cdbl( doc.vv(0)  )
End If

doc.vv = result.getvalue("Credit")
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )
If doc.vv(0) = "" Then
doc.Credit = 0.0
Else
doc.Credit = Cdbl( doc.vv(0)  )
End If

doc.UserPassword = result.getvalue("Password")
doc.UserIP =  result.getvalue("UserIP")
doc.UserIPCount = Cstr( result.getvalue("UserIPCount") )
doc.PlanID = Cstr( result.getvalue("PlanID") )
doc.UserIPInt = result.getvalue("UserIPInt")

If doc.AccountSort(0) <> "1" Then
doc.vv = result.getvalue("Cost")
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )
If doc.vv(0) = "" Then
doc.Cost = 0.0
Else
doc.Cost = Cdbl( doc.vv(0)  )
End If
End If
doc.vv = result.getvalue("Bond")
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )
If doc.vv(0) = "" Then
doc.Bond = 0.0
Else
doc.Bond = Cdbl( doc.vv(0)  )
End If

doc.UserIPPlanDate = Mid$( result.getvalue("StartDate"), 9, 2 ) + "." +  Mid$( result.getvalue("StartDate"), 6, 2 ) + "." +_
Mid$( result.getvalue("StartDate"), 1, 4 ) + " " + Mid$( result.getvalue("StartDate"), 12, 2 ) + ":" + Mid$( result.getvalue("StartDate"), 15, 2 )

usrtype=result.getvalue("Type")
If usrtype=0 Or usrtype=1 Or usrtype=2 Or usrtype=3 Then
doc.UserDisable = "0"          Работа разрешена
Else
doc.UserDisable = "1"
End If
If usrtype=0 Or usrtype=1 Or usrtype=4 Or usrtype=5 Then
doc.RegTraf = "0"              Учет трафика
Else
doc.RegTraf = "1"
End If
If usrtype=0 Or usrtype=2 Or usrtype=4 Or usrtype=6 Then
doc.Disconnect = "0"      Отключение при исчерпании счета и кредита
Else
doc.Disconnect = "1"
End If

doc.UserType =  result.getvalue("UserType")
doc.AccountType =  result.getvalue("AccountType")
doc.MACAddress = result.getvalue("MACAddress")
doc.RegDate = result.getvalue("RegDate")

doc.Phones = result.getvalue("Phones")
doc.EMail=result.getvalue("EMail")
doc.Fax = result.getvalue("Fax")
doc.FullUserName = result.getvalue("FullUserName")
doc.Post = result.getvalue("Post")
doc.UserNote = result.getvalue("UserNote")
doc.ZIP=result.getvalue("ZIP")
doc.City=result.getvalue("City")
doc.Street=result.getvalue("Street")
doc.Building=result.getvalue("Building")
doc.Room=result.getvalue("Room")

Запрос трафика за ноябрь:  ( Форма строки  - EXEC GetUserTrafficM 20103, 2002.11.1 00:00:00, 2002.11.23 00:00:00, mm   )

qry.SQL =  "EXEC GetUserTrafficM " + Cstr(doc.RegNum(0) ) + ", " + CurYear + "." + CurMonth + "." + "1" + " 00:00:00, " + CurYear + "." + CurMonth + "." + CurDay + " 00:00:00, mm"
If Not result.Execute Then    выдача запроса о трафике
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Message = "Сбой при запуске проц. GetUserTrafficM для абонента  " + Cstr(doc.RegNum(0) )
Messagebox Message, MB_OK + MB_ICONSTOP, "ПРЕДУПРЕЖДЕНИЕ !"
Exit Sub
End If
result.nextrow

If result.getvalue("Cost") = False Then                       Полная стоимость в у.е.
doc.CostAll = 0.0
Else
doc.CostAll = result.getvalue("Cost")/10000000
End If

If result.getvalue("CostInternet") = False Then          Стоимость интернет в у.е.
doc.CostI = 0.0
Else
doc.CostI = result.getvalue("CostInternet")/10000000
End If

Просчет  трафика
If result.getvalue("InTrafficInternet") = False Then           Вхд трафик Интернет в Мб
doc.InTrafI = 0.0
Else
doc.InTrafI = result.getvalue("InTrafficInternet")/100
End If

If result.getvalue("OutTrafficInternet") = False Then          Исхд трафик Интернет в Мб
doc.OutTrafI = 0.0
Else
doc.OutTrafI = result.getvalue("OutTrafficInternet")/100
End If

Запрос 2-х последних Платежей:

qry.SQL =  "exec UserPaymentsInfo " + Cstr(doc.RegNum(0) )
If Not result.Execute Then    выдача запроса
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Message = "Сбой при запуске проц. Exec UserPaymentsInfo для абонента  " + Cstr(doc.RegNum(0) )
Messagebox Message, MB_OK + MB_ICONSTOP, "ПРЕДУПРЕЖДЕНИЕ !"
Exit Sub
End If

doc.PName = ""
doc.PDate = ""
doc.PMoney = ""
doc.PNameP = ""
doc.PDateP = ""
doc.PMoneyP = ""
Последний платеж
If Not result.IsResultSetAvailable Then Exit Sub
result.LastRow

If result.getvalue("PName") = False Then
doc.PName = ""
Else
doc.PName = result.getvalue("PName")                      Тип платежа
End If

If result.getvalue("PDate") = False Then                       Дата платежа
doc.PDate = ""
Else
doc.PDate = Mid$( result.getvalue("PDate"), 9, 2 ) + "." +  Mid$( result.getvalue("PDate"), 6, 2 ) + "." +_
Mid$( result.getvalue("PDate"), 1, 4 ) + " " + Mid$( result.getvalue("PDate"), 12, 2 ) + ":" + Mid$( result.getvalue("PDate"), 15, 2 )
End If
Сумма платежа
doc.vv = result.getvalue("PMoney")      Принимается текстовая строка с разделителем "."
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )   Заменяем  "."  на  ","
If doc.vv(0) = "" Then
doc.PMoney = ""
Else
doc.PMoney = Cdbl( doc.vv(0)  )
End If

Предыдущий платеж
If result.PrevRow Then
If result.getvalue("PName") = False Then
doc.PNameP = ""
Else
doc.PNameP = result.getvalue("PName")       Тип платежа
End If

If result.getvalue("PDate") = False Then                       Дата платежа
doc.PDateP = ""
Else
doc.PDateP = Mid$( result.getvalue("PDate"), 9, 2 ) + "." +  Mid$( result.getvalue("PDate"), 6, 2 ) + "." +_
Mid$( result.getvalue("PDate"), 1, 4 ) + " " + Mid$( result.getvalue("PDate"), 12, 2 ) + ":" + Mid$( result.getvalue("PDate"), 15, 2 )
End If
Сумма платежа
doc.vv = result.getvalue("PMoney")      Принимается текстовая строка с разделителем "."
doc.vv = Evaluate({ @ReplaceSubstring( vv; "."; "," )  }, doc )   Заменяем  "."  на  ","
If doc.vv(0) = "" Then
doc.PMoneyP = ""
Else
doc.PMoneyP = Cdbl( doc.vv(0)  )
End If
End If

End Sub
0 / 0 / 0
Регистрация: 09.11.2003
Сообщений: 283
21.09.2004, 19:14 15
БОЖЕ!!!!!!!!!!, вы что все с ума сошли!
это простейшее.
ПРосто создаёшь OLE объект скриптом.
В MSDN полное описание объектной модели ворда. Есть даже примеры на бейсике.
Если уже совсем не получиться, то звони, скину пример


ISQ
231813219
0
21.09.2004, 19:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2004, 19:14
Помогаю со студенческими работами здесь

Lotusscript
Доброго времени суток всем. Возникли некоторые вопросы по ЛС. Вообще он очень похож на бейсик. Но...

Lotusscript -> @-формулы
Добрый =) Подскажите как обработать массив значений @-формулами, т.е. на lotusscript это так if...

Lotusscript -> Javascript
Имеется простенький поиск на lotusscript, который берет из бд строки с именами пользователей и ищет...

Enumeration В Lotusscript
Доброе время суток! Продолжаю скромные попытки расширить возможности разработки на LS. На сей...


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

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