PutinFolder method for newly created Web documents

PutinFolder method for newly created Web documents

If you're reading this post, you've probably discovered the same problem as me with putting a newly created Web document into a folder via the PutInFolder method on the Web.

The problem is caused by the way Domino handles a newly created document. A new document created with @Command([Compose]) or the ?openform generates a tempory document. You'll receive all the required values--but be aware that some of these values changes when you submit your document, depending on the field type you use.

When you've on your form a computed when composed text field with default value @Text(@DocumentUniqueId). The value of this field shall be changes when submitting the form. The same for @Unique to create an unique key. The PutInFolder method takes a real document and put this in the mentioned folder. The method will create the folder but will never put your posted document into the folder for the simple reason that it doesn't exist anymore. A new notes document is created by Domino.

The only workaround I've found for this feature is to open an existing document. Open it in edit mode and when the user submit it, enable a submit flag. The disadvantage of this is that your database can be populated by a lot of ghost documents. So what you need is to create a little background agent that clean up (delete) the ghost documents based on the submit flag.


Procedure :

1.Create an action button (New document):

dbPath := "/"+@LowerCase(@ReplaceSubstring(@Subset(@DbName; -1); "\":" "; "/":"+"));
@URLOpen( dbPath + "/Document?CreateDocument")

2.On the form add a computed when composed text field (docUnid)

@Text(@DocumentUniqueId)

When the user presses the action button. a new document will be created.

3.Open the document in edit mode
To open the newly created document you need to create for that document a WebQuerySave agent.
In this agent you just reopen the document by scripting following code :

If docCurrent.IsNewNote Then
   StrDocUniqueId = docCurrent.DocUnid(0)
   strDbPath = docCurrent.DbPath(0)
   strReturnUrl = "/0/" & strDocUniqueId & "?Editdocument"
   Print "[" & strDbPath & strReturnUrl & "]"
End if

When the user now submit the document you can use the PutInFolder method in the WebQuerySave agent.

Just don't forget to enable a submit flag when the user submit the document. (ex. IsSavedByUserFlag) and to write a background agent based on this field to delete the ghost documents.

Thx to Henry Kaye for the concept.

This was first published in August 2001

Dig deeper on Lotus Notes Domino Administration Tools

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchWindowsServer

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchDataCenter

SearchExchange

SearchContentManagement

Close