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

Проблема с LotusScript

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

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

ICQ 24295867
fhserv@mail.ru
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2004, 16:49
Ответы с готовыми решениями:

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

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

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

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

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

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

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
Приветствую
я в лотусе новичок поскажите пожалуйста как всавити данные в поля,
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.getval ue("city"))
result.NextRow
Loop
con_sql.Disconnect
Print "ODBC Connection to " & con_sql.DataSourceName & " clouse"

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


Code
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
(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
БОЖЕ!!!!!!!!!!, вы что все с ума сошли!
это простейшее.
ПРосто создаёшь OLE объект скриптом.
В MSDN полное описание объектной модели ворда. Есть даже примеры на бейсике.
Если уже совсем не получиться, то звони, скину пример


ISQ
231813219
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2004, 19:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru