Very often we need to use Dates in view's SELECT. Let's say that we should show documents which are older than current day. What do we usually do?
SELECT FldName = @Now
SELECT FldName = @TextToTime("Today")
I just want to refresh head and show another approach. We can use schedule agent on server and modify SELECT formula each day.
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dt As String
Set db = s.CurrentDatabase
dt = Join(Evaluate({@Text(@Today)}))
Set view = db.GetView("viewName")
view.SelectionFormula = {SELECT Form = "Form" & FldDate = (([} + dt + {]}
after that it will work faster and better. it's just only one another approach not more, but I like it )
Tuesday, March 25, 2008
Wednesday, March 12, 2008
Securety for different parts of document. 1-st approach.
Let's say we have one document and it contains couple different areas, for example 1 part of document contains information about salary of employee and another one contains information about family of employee. Of course, fields that contains information about salary have to be hide from all eyes except special role (Finance department). Information about employee's family also has to be hide from all except (HR department). Application should work in Lotus Notes client and in WEB also.
We can't just hide fields using "hide formula", because smart users can use next approach and they can found fields with salary. But it should be private information.
So, I propose next approach, we can create one main document and N response documents (it depends on how many areas you have). Each response document will contain information about special area and also will contain information about Readers, in our case it will be 2 documents - 1 for Salary information + Readers field = "Finance department" and another one for HR department. All others manipulations it is only game with QueryOpen and QuerySave event in Client and Web.
Simple chart :-).
What I did:
1) on QO event I put code that take all data from response documents and put to main document. It is very usefull to use NotesItem.SaveToDisk = false in QO event, because in this case you can forget about removing values in QS event from main document.
2) on QS event I put code which takes values from main document and put data back to response documents.
Probably it is not the best way but it works.
Any new idea would be appreciate ! ;-)
We can't just hide fields using "hide formula", because smart users can use next approach and they can found fields with salary. But it should be private information.

Simple chart :-).

1) on QO event I put code that take all data from response documents and put to main document. It is very usefull to use NotesItem.SaveToDisk = false in QO event, because in this case you can forget about removing values in QS event from main document.
2) on QS event I put code which takes values from main document and put data back to response documents.
Probably it is not the best way but it works.
Any new idea would be appreciate ! ;-)
Friday, March 07, 2008
Undocumented DOM LotusScript Inventory
Sometimes I look for undocumented methods in LS. So I found the best one, probably, page.
Just remember about these methods, probably will be the time when it be helpful for you.
also you can use these @Formula
@LocationGetInfo([UNID])
@LocationGetInfo([FullName])
@LocationGetInfo([HomeServer])
@LocationGetInfo([NamePreference])
@LocationGetInfo([SametimeServer])
@LocationGetInfo([BookmarksFilename])
@LocationGetInfo([InternetMailAddress])
@AdminDelegateMailFile
@ExpandNameList
@FindFreeResource
@LocationGetInfo
@command [PKCS12ImportCertsToNAB]
- NotesDatabase
+ isNNT : Variant
+ archiveNow( ) : Integer
+ archiveNow( documentCollection=Nothing ) : Integer
+ archiveNow( documentCollection=Nothing, policy=Nothing ) : Integer
+ close() - DEPRECATED, DO NOT USE
+ createNewsGroup(groupName : String, title : Variant, subdirectory : Variant) : Long
+ enabledOptions(arg1 : Integer , arg2 : Integer)
+ getArchivePath( policy : String ) : String
+ getArchivePath( policy : String, pathType=Nothing ) : String
+ getFields(flag : Boolean) : String[ ]
+ retrievePOP3Mail(server : String, port : Integer, username : String, password : String, retainMail : Integer, useSSL : Integer) : Long - NotesDateTime
+ convertToZoneCanonical( zoneSpec ; String )
+ merge( datetime, zoneSpec ) - NotesDocument
+ formDbID : String
+ formDbIDItem : String
+ handle : Long - cf. Notes C++ Programmer's Reference Guide
+ generateMessageID( ) : String
+ getNextItem(arg : Variant) : Variant - DEPRECATED, DO NOT USE
+ moveToFolder( )
+ putInFolderByUNID( )
+ removeFromFolderByUNID( ) - NotesDocumentCollection
+ getNoteIDs( ) : Variant - NotesItem
+ PartialText - NotesOutline
+ getEntry(entryname : String) : NotesOutlineEntry
+ remove( ) : Integer - NotesOutlineEntry
+ onClickText : String - NotesRegistration
+ useAdminProcess
+ registerNewUserWithPolicy( lastName : String, certPW : String, userPw : String, policyServer : String, firstname=Nothing, middle=Nothing, altName=Nothing) - NotesRichTextItem
+ addLinkByIDs( replicaID : String, serverHint : String, viewUNID, notesUNID, comment, hotspotText )
+ appendRTFile( pathname : String )
+ partialText - NotesSession
+ internetDomainName : String
+ internetHostName : String
+ close
+ createXMLReformatter( input, output ) : Variant
+ getNewsGroupPath(arg : String) : String
+ getWin32Domain(server : Variant) : Variant
+ startProfile( outputFilename : String, outputThreshold, recordThreads, recordEntryPoints )
+ stopProfile( )
+ tagProfile( tagString ) - NotesUIDatabase
+ editArchiveSettings( ) As Integer
NotesUIDocument
+ modifiedSinceSaved : Boolean
+ parentViewName : Object
+ windowHandle : String
+ findFreeTimeDialogEX( reqPeopleItems, optPeopleItems, reqRoomsItems, optRoomsItems, reqResourcesItems, optResourcesItems, removedPeopleItems, startDateItem, endDateItem ) As Variant
+ navBarSetPrevNextState( command, benable ) - NotesUIScheduler
+ ignoreUniversalID : String
+ participantTableCopy( sortOrder : Integer ) As Variant
+ refresh( getScheduleData, flags )
+ setParticipantsFromItems( flags )
+ setParticipantsFromTable( participantTable )
+ updateParticipantsFromItem( flags )
+ updateParticipantsFromTable( table, rolesFlags, appFlags )
+ updateParticipantsStatus( participantTable ) - NotesUIWorkspace
+ addBookmark(bookmarkTitle : Variant) : Variant
+ addDatabaseToPortfolio( )
+ Create_DialEntry_Dialog( remoteAccessMethod )
+ create_DialEntry_Info( remoteAccessMethod, nameOfEntry )
+ create_DialEntry_List( remoteAccessMethod, nameOfEntry ) - NotesView
+ HeaderLines - not really undocumented but mal-documented since R5
+ createViewFromTemplate( newName : String ) : Long
+ getEntryByID( NoteID : String ) : NotesViewEntry - WebBrowser
exposed within OLE Automation classes from R5 onwards..
Just remember about these methods, probably will be the time when it be helpful for you.
also you can use these @Formula
@LocationGetInfo([UNID])
@LocationGetInfo([FullName])
@LocationGetInfo([HomeServer])
@LocationGetInfo([NamePreference])
@LocationGetInfo([SametimeServer])
@LocationGetInfo([BookmarksFilename])
@LocationGetInfo([InternetMailAddress])
@AdminDelegateMailFile
@ExpandNameList
@FindFreeResource
@LocationGetInfo
@command [PKCS12ImportCertsToNAB]
Thursday, February 28, 2008
how we can close window in IE without confirmation?
solution is very simple, just keep in mind it, probably it will help you in future.
for IE.7 and for IE.6
input type="button" value="close" onClick="window.opener='_parent'; window.close();"
for IE.7 and for IE.6
input type="button" value="close" onClick="window.opener='_parent'; window.close();"
Tuesday, February 19, 2008
?searchview and ?ReadViewEntries
I had a task where I should receive data from view as XML(
Actually I waned to do something like this:
And as I informed it is impossible in 5-6-7 versions. Guys on IBM's forum told me that it would be added in future version (probably R8, but who know:] ) and will be like this one ?SearchViewEntries
don't forher about it.
myView?ReadViewEntries
) or JSON (myView?ReadViewEntries&outputformat=json
). All was well, except one problem which I didn't solve. It was case when I used ?SearchView (myView?SearchView&query) to show data. Actually I waned to do something like this:
myView?
SearchView+ReadViewEntries&outputformat=json
&queryAnd as I informed it is impossible in 5-6-7 versions. Guys on IBM's forum told me that it would be added in future version (probably R8, but who know:] ) and will be like this one ?SearchViewEntries
don't forher about it.
Subscribe to:
Posts
(
Atom
)