Home > Domino Tips > Developer > LotusScript > LotusScript version of @DbColumn
Domino Tips:
EMAIL THIS
 TIPS & NEWSLETTERS TOPICS 

LOTUSSCRIPT

LotusScript version of @DbColumn


Marko Bonaci
02.22.2006
Rating: -3.23- (out of 5)


Lotus Notes and Domino tips, tutorials and how-to articles
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


VIEW MEMBER FEEDACK TO THIS TIP

The function works the same as @DbColumn formula. If you don't understand the function arguments, locate DbColumn in Designer's Help.

Code: Function dbColumn
( db As NotesDatabase,
 viewName As String, 
columnNo As Integer, flgUnique
 As Boolean, flgUseReplicaID As Boolean ) 
As Variant
    'Mbonaci, 30.08.2005.
    'Function works same as @DbColumn
    On Error Goto ErrHandler
    Dim s As New NotesSession
    Dim strDbPath As String, tmpFormula
 As String
    
    strDbPath = AdjustedFilePath( s, db )
    
    If flgUseReplicaID Then    
        tmpFormula = |@DbColumn
( "" : "NoCache"; "| & db.ReplicaID 
& |"; "| & viewName & |"; | & columnNo & | )|
    Else        
        tmpFormula = |@DbColumn
( "" : "NoCache"; "| & db.Server & |" : "| 
& strDbPath & |"; "| & viewName 
& |"; | & columnNo & | )|        
    End If
    
    If flgUnique Then
        tmpFormula = |@Unique( tmpFormula )|
    End If
    
    dbColumn = Evaluate( tmpFormula )
    
    Exit Function
ErrHandler:
    Msgbox "Error in function - 
dbColumn" & Chr$(10) & "Line: " 
& Cstr( Erl ) & Chr$(10) & 
"Err No: " & Err & ": " & Error$ End Function


Function AdjustedFilePath
( s As NotesSession, db As
 NotesDatabase ) As String
    'Mbonaci, 19.01.2006
    'Function is used to prepare 
the path for LS 
dbColumn implementation.
    'We need path relative to notesdata dir.
    On Error Goto ErrHandler
    Dim datadir As String, 
fcPath As String, tmpPath As String
    
    dataDir$ = Lcase
( s.GetEnvironmentString( "Directory", True ) )    
    fcPath$ = Lcase( Left
( db.FilePath, Len( datadir ) ) )
    
    If( fcPath = datadir ) Then
        'If the database is open 
and on the Notes 
workstation FilePath returns the complete path 
        'for example, 
C:LotusNotesDataSubdir1Subdir2dbName.nsf
        fcPath = Mid$( db.FilePath, Len( datadir ) + 2 )
        AdjustedFilePath = fcPath
        
    Elseif Instr( fcPath, "!!" ) Then        
        'FilePath returns the 
server name (srvName!!path) 
when both of these cases are true:
        'FilePath is used in 
an agent running on a server
        'The NotesDatabase 
object was not obtained 
through the CurrentDatabase 
property of NotesSession        
        tmpPath = db.FilePath
        AdjustedFilePath = 
Right( tmpPath, Len( tmpPath ) - 
Instr( tmpPath, "!!" ) - 1 )
        
    Else    
        'If the database is on a Domino server, 
or closed on the Notes workstation 
        'FilePath returns the path relative
 to the data directory (for example, subdb.nsf)
        AdjustedFilePath = db.FilePath
    End If
    
    'Last we double all backslashes
    AdjustedFilePath = ReplaceSubstring
( AdjustedFilePath, "", "\" )
    
out:
    Exit Function
ErrHandler:
    Msgbox "Error in function - 
AdjustedFilePath" & 
Chr$(10) & "Line: " & Cstr( Erl ) & Chr$(10) &
 "Err No: " & Err & ": " & Error$
    Resume out
End Function


Function ReplaceSubstring
( Byval theString As String, 
find As String, doReplace As String ) 
As String
    Dim pos As Integer
    
    pos = Instr( theString, find )
    Do While( pos > 0 )
        theString = Left$( theString, pos - 1 )
 & doReplace 
& Mid$( theString, pos + Len( find ) )
        pos = Instr( pos + Len( doReplace ), 
theString, find )
    Loop
    
    ReplaceSubstring = theString
End Function

MEMBER FEEDBACK TO THIS TIP

This works as well:

Dim varList as Variant
varList = Evaluate("@DbColumn
(" & class  & ":" & cache 
& ";" & server & "; " & database & 
";" & view & ";" & columnNumber  & ")")

Where class, cache, server, database, view, and columnNumber are variables.
—Paul R.

Do you have comments on this tip? Let us know. Related information from SearchDomino.com:

  • LotusScript Learning Guide
  • LotusScript FAQ
  • Reference Center: LotusScript tips and resources

    This tip was submitted to the SearchDomino.com tip library by member Marko B. Please let others know how useful it is via the rating scale at the end of the tip. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.

    Rate this Tip
    To rate tips, you must be a member of SearchDomino.com.
    Register now to start rating these tips. Log in if you are already a member.




    Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google



    RELATED CONTENT
    LotusScript
    LotusScript agent parses ACL to Microsoft Notepad
    LotusScript finds the first occurrence of a string from the right
    Clear Recent Contacts view and prevent repopulation in Lotus Notes 8.x
    Search Microsoft Active Directory with LotusScript
    Three steps to trap and handle save conflicts with LotusScript
    Troubleshoot agents by displaying LotusScript variables online
    LotusScript sorts lists alphabetically
    LotusScript code rebuilds corrupted busytime.nsf file
    Soft-code item names to facilitate LotusScript management
    LotusScript agent automates selective mail file replication

    LotusScript
    LotusScript agent parses ACL to Microsoft Notepad
    LotusScript finds the first occurrence of a string from the right
    Clear Recent Contacts view and prevent repopulation in Lotus Notes 8.x
    Search Microsoft Active Directory with LotusScript
    Three steps to trap and handle save conflicts with LotusScript
    Troubleshoot agents by displaying LotusScript variables online
    LotusScript sorts lists alphabetically
    Run or restart Notes/Domino agents via text messages
    LotusScript code rebuilds corrupted busytime.nsf file
    Soft-code item names to facilitate LotusScript management

    RELATED RESOURCES
    2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
    Search Bitpipe.com for the latest white papers and business webcasts
    Whatis.com, the online computer dictionary

    DISCLAIMER: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.



  • Domino & Lotus Notes Security Solutions: Authentication, Antispam, Encryption and Antivirus
    HomeTopicsITKnowledge ExchangeTipsAsk the ExpertsMultimediaWhite PapersDomino IT Downloads
    About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
    SEARCH 
    TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations' technology projects - with its network of technology-specific websites, events and online magazines.

    TechTarget Corporate Web Site  |  Media Kits  |  Site Map




    All Rights Reserved, Copyright 1999 - 2009, TechTarget | Read our Privacy Policy
      TechTarget - The IT Media ROI Experts