Отправляет email-рассылки с помощью сервиса Sendsay

Бюллетень "Lotus Notes CodeStore"

  Все выпуски  

Бюллетень "Lotus Notes CodeStore" No 91 от 2008-10-20


Рассылку ведет: Программист на Lotus NotesLotus CoderВыпуск No 91 от 2008-10-20
рассылка о программировании на Lotus Notes/Domino
Обсуждения на форумах, блогах. Примеры программного кода на LotusScript,@formula, Java

рассылка:выпускархивлентаблогсайт

Бюллетень "Lotus Notes CodeStore" Выпуск 13 от 21.04.2008

comp.soft.prog.lotuscodesrore

CodeStore. Примеры кодов

In this sample application I show you how you can use RMcharts in an Lotus Notes Dashboard application. You need to download RMchart at http://www.rmchart.com/ and install it on your PC (a restart is required). Make sure the files RMchart.ocx and RMchart.dll are installed in your windows\system32 directory. RMchart is completely freeware. Go to the website for more information. I created this application because I could not find any free product to create realtime graphs from (view) data within Lotus Notes. Finally I found this software and this made my work a lot easier. No more excel and no more exports needed. This is a completly free solution and I think it works great. If you would like to use RMcharts in a real application make sure your users have the RMcharts installed. You could copy above files manualy or automatic via an script to windows\system32\ directory and use 'regsvr32' command line program to register the .ocx file in Windows. This database contains a view for the sales sample data and a lookup view I use to quickly & dynamic get the values to display in the charts. The dashboard form contains the embedded activex elements and all the code I used to get the data and display the data in the embedded activex elements. It makes use of a script library for the needed constants. TIP: You can build your own charts with RMCdesigner, also available at www.rmchart.com. Use the program to generate source code for VB6 / ActiveX and paste it in an Lotus Notes button in a form. With very limited changes you can use that generated code in your application. If you have any questions regarding this application, mail me. Ferry Kranenburg
Еще примеры:
Больше кодов на сайтах:

Форумы.Свежи темы и обсуждения

так вот, хочу спросить совета. есть такая задача - нужно создавать динамический запрос в базе.
для этого необходимо разработать такой механизм построения запроса:
- создается 3 поля, в первом можна выбрать любое поле документа базы.
- во втором выбирается "равно"/"не равно"/"больше"/"меньше"/"подобно"
- в третем указывается значения
как тольк заполняем первый критерий, можна нажать кнопочку "+" и ниже появятся еще 3 таких же поля, для ввода новых критериев, причем вводить их можно сколько угодно.
подобный механизм работает в MS Access.
потом по значениях этих полей в цикле должен строится запрос и выводится данные во вьювере.
возможно ли и целесообразно сделать подобное на LotusScript и если да, то как создавать поля в форме динамически?
или может удобнее будет написать апплет на Java...
Description
This library provides functions for mapping NT network drives using Win 32 API (only tested on NT 4.0, Service Pack 3). These functions are particularly useful for background agents that run on an NT server where the Domino server is set up as a NT service using the Local System account. In this case, the NT machine is not logged into any domain and no drives are mapped. UNC names do not work in this situation either.

To use these Functions, add the following line to the Declarations section of your script module:


Code

CODE
----- File that contains SYS_USERNAME and SYS_PASSWORD constants for login
%INCLUDE "LOGIN.LSS"

'----- DLL containing the needed Win32 functions
Public Const WIN32_DLL = "mpr.dll"

'----- Flags
Public Const RESOURCETYPE_ANY = &H00000000
Public Const RESOURCETYPE_DISK = &H00000001
Public Const RESOURCETYPE_PRINT = &H00000002
Public Const CONNECT_UPDATE_PROFILE = &H00000001

'----- Network resource structure
Public Type WIN32_NETRESOURCE
dwScope As Long
dwType As Long '<< Any/disk/print
dwDisplayType As Long
dwUsage As Long
lpLocalName As String '<< Local drive name to use
lpRemoteName As String '<< Remote path
lpComment As String
lpProvider As String
End Type

'----- Win 32 API function(s)
Declare Function WNetAddConnection2& Lib WIN32_DLL Alias "WNetAddConnection2A" ( _
lpNetResource As WIN32_NETRESOURCE, _ 'Network resource structure
Byval lpPassword As String, _ 'User password
Byval lpUserName As String, _ 'User name
Byval dwFlags As Long) 'Flags

Declare Function WNetCancelConnection& Lib WIN32_DLL Alias "WNetCancelConnectionA" ( _
Byval lpName As String, _ 'Name of local device to disconnect
Byval fForce As Long) 'Force the disconnect

'----- Error codes from error.h
Public Const NO_ERROR = 0
Public Const ERROR_ACCESS_DENIED = 5
Public Const ERROR_ALREADY_ASSIGNED = 85
Public Const ERROR_INVALID_PASSWORD = 86

'----- Error codes from winerror.h
Public Const ERROR_BAD_DEV_TYPE = 66
Public Const ERROR_BAD_NET_NAME = 67
Public Const ERROR_BUSY = 170
Public Const ERROR_BAD_DEVICE = 1200
Public Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202
Public Const ERROR_NO_NET_OR_BAD_PATH = 1203
Public Const ERROR_BAD_PROVIDER = 1204
Public Const ERROR_CANNOT_OPEN_PROFILE = 1205
Public Const ERROR_BAD_PROFILE = 1206
Public Const ERROR_EXTENDED_ERROR = 1208
Public Const ERROR_NO_NETWORK = 1222
Public Const ERROR_CANCELLED = 1223
Public Const ERROR_NOT_CONNECTED = 2250
Public Const ERROR_DEVICE_IN_USE = 2404
Dim retCode&, ascLett&, drivNam$, tmp$

Public Function Win32ConnectDrive$(Byval pathNam$)

Win32ConnectDrive = ""
On Error Goto Errors
Const FUNC_NAME = "Win32ConnectDrive"
Dim netRes As WIN32_NETRESOURCE
Dim retCode&, ascLett&, drivNam$
Dim fst&, sec&, mach$, shar$, pth$, tmp$
drivNam = ""
If Instr(pathNam, "") = 0 Then Goto TheEnd

'----- Try to find a drive that isn't being used
For ascLett = 90 To 68 Step -1
tmp = Chr$(ascLett) & ":"
If Not(IsDriveAvailable(tmp)) Then
drivNam = tmp
Exit For
End If
Next ascLett
If drivNam = "" Then Goto TheEnd

'----- Explode the pieces of the UNC name
pathNam = Mid$(pathNam, 3) 'remove first 2 slashes
fst = Instr(pathNam, "") 'first slash ""
mach = Left$(pathNam, fst-1) 'machine name
sec = Instr(fst+1, pathNam, "") 'second slash ""
If (sec <> 0) Then
shar = Mid$(pathNam, fst+1, Instr(fst+1, pathNam, "")-(fst+1)) 'share name
Else
shar = Mid$(pathNam, fst+1)
End If

tmp = "" & mach & "" & shar
pth = Mid$(pathNam, Len(tmp))
pathNam = tmp

'----- Fill out the relevant info in the resource structure
netRes.dwType = RESOURCETYPE_DISK
netRes.lpLocalName = drivNam
netRes.lpRemoteName = pathNam

'----- Make the necessary call to map the drive
retCode = WNetAddConnection2(netRes, SYS_PASSWORD, SYS_USERNAME, 0)
If (retCode <> NO_ERROR) Then
tmp = Win32GetErrorString(retCode)
Print FUNC_NAME & ": " & tmp & "(" & Trim$(Str(retCode)) & ")"
Exit Function
End If

'----- Return the new full path
Win32ConnectDrive = drivNam & "" & pth

TheEnd:
Exit Function

Errors:
Win32ConnectDrive = ""
Print FUNC_NAME & ": " & Error$
Resume TheEnd

End Function

Function Win32GetErrorString$(retCode&)

Dim tmp$
Select Case(retCode)

Case NO_ERROR:
tmp = "No error"
Case ERROR_ACCESS_DENIED:
tmp = "Access to resource was denied"
Case ERROR_ALREADY_ASSIGNED:
tmp = "Resource already assigned"
Case ERROR_INVALID_PASSWORD:
tmp = "Specified password is invalid"
Case ERROR_BAD_DEV_TYPE:
tmp = "Type of local device and the type of network resource do not match"
Case ERROR_BAD_NET_NAME:
tmp = "The resource name is invalid, or the named resource cannot be located"
Case ERROR_BUSY:
tmp = "The router or provider is busy, possibly initializing"
Case ERROR_BAD_DEVICE:
tmp = "The local name is invalid"
Case ERROR_DEVICE_ALREADY_REMEMBERED:
tmp = "An entry for the specified device is already in the user profile"
Case ERROR_NO_NET_OR_BAD_PATH:
tmp = "A network component has not started, or the specified name could not be handled"
Case ERROR_BAD_PROVIDER:
tmp = "The provider value is invalid"
Case ERROR_CANNOT_OPEN_PROFILE:
tmp = "Unable to open the user profile to process persistent connections"
Case ERROR_BAD_PROFILE:
tmp = "The user profile is in an incorrect format"
Case ERROR_EXTENDED_ERROR:
tmp = "A network specific error occurred"
Case ERROR_NO_NETWORK:
tmp = "No network is present"
Case ERROR_CANCELLED:
tmp = "The action was cancelled"
Case Else:
tmp = "Error"
End Select
Win32GetErrorString = tmp
End Function
Public Function Win32DisconnectDrive(Byval drivNam$) As Variant
Const FUNC_NAME = "Win32DisconnectDrive"
On Error Goto Errors
Dim retCode&, tmp$
Win32DisconnectDrive = True

drivNam = Left$(drivNam, Instr(drivNam, ":"))
If Not(IsDriveAvailable(drivNam)) Then Exit Function
retCode = WNetCancelConnection(drivNam, 1)
If (retCode <> NO_ERROR) Then
tmp = Win32GetErrorString(retCode)
Print FUNC_NAME & ": " & tmp & " (" & Trim$(Str$(retCode)) & ")"
End If

TheEnd:
Exit Function

Errors:
Print FUNC_NAME & ": " & Error$
Win32DisconnectDrive = False
Resume TheEnd

End Function
Function IsDriveAvailable(drivNam$) As Variant
On Error Goto Errors
IsDriveAvailable = False
If Dir$(drivNam, 8) <> "" Then
IsDriveAvailable = True
End If
TheEnd:
Exit Function
Errors:
Resume TheEnd
End Function
Public Function SetupPathRoot(Byval filePathRoot$) As String

On Error Goto Errors
Dim bak$
bak = filePathRoot

'----- If we are dealing with UNC names, map a drive
If Instr(filePathRoot, ":") = 0 And Left$(filePathRoot, 2) = "" Then
filePathRoot = Win32ConnectDrive(filePathRoot)
If filePathRoot = "" Then filePathRoot = bak
End If

'----- Make sure the last character is a backslash
If Right(filePathRoot, 1) <> "" Then filePathRoot = filePathRoot & ""
SetupPathRoot = filePathRoot

TheEnd:
Exit Function

Errors:
SetupPathRoot = bak
Resume TheEnd

End Function
Public Function TermPathRoot(Byval filePath$)

On Error Goto Errors
Call Win32DisconnectDrive(filePath)
TermPathRoot = True

TheEnd:
Exit Function

Errors:
TermPathRoot = False
Resume TheEnd

End Function


Comments
Error in code
There are some typos in the code - the Win32ConnectDrive function is missing some backslashes.
A working copy of the same code can be found here :
|#^#]>http://www-10.lotus.com/ldd/46dom.nsf/0/55...e6?OpenDocument|#^#]>
or you can do a search on Google for 'WNetAddConnection2 domino' to find other code that uses the same API function
otherwise it does work correctly...

Источник - _http://openntf.org/Projects/codebin/codebin.nsf/CodeBySubType/905238D64CADE53488256BDC000CC17D
Задаю точный RGB-цвет ну, скажем, для текста.

Например - 158, 202, 58. В цветовом диалоге еще все нормально - в Лотусе цвет уже изменен : 130, 193, 104.
Предизменения на "дельту" ничего не дают, цвет сносит еще больше.

Он что, имеет какой-то свой предефайнед набор цветов и подгоняет задаваемое под него ?

Как установить точный цвет экранного объекта в Lotus ?
Внезапно пропал доступ к базам у всех пользователей.
...
Подскажите, пожалуйста, что в это случае необходимо сделать?
Ребята, следующая ситуация:
в ОС установлено неправильное время, запустили лотус и он это время подхватил,
как после корректировки времени в ОС заставить лотус правильное время подхватить без перезапуска Лотуса?

спасибо
Новая версия: http://194.87.13.59/site/itforum.nsf/f1eb228a7ae49970c3256a99004aff3d/f6919b9a3b3d712dc32574e50053c987!OpenDocument
...
Предыдущая версия: |#^#]>http://194.87.13.59/site/itforum.nsf/f1eb2...33;OpenDocument|#^#]>

Интеграция с офисными пакетами:
IBM Lotus Symphony (*.odt)
OpenOffice.org (*.odt)
Microsoft Word (*.docx)

Тестировалось на
ОС: Microsoft Windows XP, Microsoft Server 2003, Ubuntu 8.04 Hardy Heron

Офисные пакеты: IBM Lotus Symphony 1.0, OpenOffice.org 3.0 (2.4), Microsoft Word 2003

Версии Lotus: 6.5.5, 7.0.2, 8.5

С Уважением
Шабалин Сергей
господа, подскажите, если кто знает, пожалуйста!
что с локализацией? есть ли локализованная русская версия клиента ноутс 7 или 8? а то то что нам передали в качестве образца почему то английское..
господа, подскажите, если кто знает, пожалуйста!
что с локализацией? есть ли локализованная русская версия клиента ноутс 7 или 8? а то то что нам передали в качестве образца почему то английское..
есть локализированные версии 7ки 100%. Но только Notes. Admin и Designer только англицкий. Локализацию можно найти здесь же на сайте ( тока зарегаться надо ) или тут - _http://forum.codeby.net/topic19390.html
Задаю точный RGB-цвет ну, скажем, для текста.
...
есть локализированные версии 7ки 100%. Но только Notes. Admin и Designer только англицкий. Локализацию можно найти здесь же на сайте ( тока зарегаться надо ) или тут - _http://forum.codeby.net/topic19390.html
Интересные темы:
Список форумов:

Tips. Советы

Еще советы:
Смотри советы на сайтах:

Блоги. Что обсуждают и пишут

Author: marco foellmer
Tags: Lotus Note App Store
Idea:
I would really like to see a App Store for Lotus Notes. Please include a tool in Notes client to access the Apps.

Author: Dale Dean
Tags: Domino Administrator Domino server lotus journaling multiple
Idea:
It would be very helpful for companies, like ours, with only one mail server to be able to setup multiple mail journaling databases. We have a need for this now, and I find it hard to believe we are the only company that could use this feature.

Author: Tommy Valand
Tags: formula @formula evaluate
Idea: As far as I know, formula can only output 64k of data.

This especially limits the usage of formula in Evaluate-statements.

Formula is --really fast-- compared to LotusScript. Formula has some inbuilt functionality that LS lacks. Two really powerful are @Tranform and @Sort.

Try sorting/filtering an array in LS (code is probably on OpenNTF in the codebin), and then do the same in Formula.

The problem with LS is that it needs a -lot- more code to sort/filter arrays, as there is no API for this in LS, and it is a lot slower (yes, there is Java, but with the current editor, I'm not touching it).

The problem with formula is that it can only output 64k (another problem is that @Sort doesn't like custom sorting of big lists/arrays).

I don't know what limitations there are on server side JS (N8.5). If there are none, and arrays are blindingly fast, I probably won't care about this problem in the future. Throw away the 32k limit on array indexes, and I'll be really happy!
Author: Mark Bennett
Tags: out of office voicemail
Idea:
Build a connector that links my voicemail to my out of office. When I set my out of office it should read (text to voice) my out of office message.
 
When I turn off my out of office assistant my voicemail should return to a standard greeting (which should be able to be set globally for all users like we do for signatures).

Еще записи:
Интересные блоги специалистов:

Статьи и Документация

On Solaris for 32 bit application, if Unix user's stack soft limitation is changed to unlimited, kernel will reserve up-bound 2GB memory (starting memory address 0x80000000 to 0xFFFFFFFF) to stack, this will limit the 32 bit application memory address space to 2GB.
Release prior to Domino 7.0.2 had access to only 8 segments of memory now with AIX_VERY_LARGE_MM=1 the value is 10.
You have two (or more) Domino 7.0.3 partitioned servers on one AIX 5.3 machine . You install the last release of Symantec Mail Security 3.2 for Domino 7 on AIX because the previous version 3.0 is no more supported.
When the HTTP task on a Domino server starts, the following error occurs: "LDAP Realm does not match config setting [Single Sign-On token is invalid]"
An enhancement request SPR# GPKS6MNHWQ has been submitted requesting better table editing with the Editor Java applet.
Также почитатай:
Найти документацию можно на сайтах:

В избранное