2009-08-10 70 views
2

作爲努力創建基本版本控制系統的一部分,我想以編程方式禁用Lotus Notes模板上的設計元素級別繼承。我到目前爲止已嘗試以下內容:以編程方式刪除Lotus Notes設計元素繼承

  • DXL導出(ForceNoteFormat = true)+ XSLT。由於導入程序中的驗證問題(字段(!))失敗。
  • DXL導出(ForceNoteFormat = false)+ XSLT。似乎可行,但我寧願不使用DXL解決方案來處理這個問題。

的區域,我想探索:

  • 遍歷所有的(設計)注意,刪除$Class項目。

有沒有人有建議如何做到這一點,或另一種方法,將刪除繼承?

+1

諷刺意味的是,我想「編程禁用」 Lotus Notes的! – 2009-08-10 15:36:08

+0

@Mitch:我知道如何處理DXL ... :-) – 2009-08-10 16:19:20

+0

這是這樣的問題,[這另一個](http://stackoverflow.com/q/2248663/241142),這讓我想要拋棄Notes完全和專門使用Ruby(和它的寶石),一個更加明智和更好的共享代碼的系統。 Notes的共享代碼系統是複製和粘貼。這太糟糕了:票據有許多輝煌的閃光,但最終還是有一萬人死於紙上剪紙。 – iconoclast 2013-04-12 14:07:13

回答

4

下面的子代似乎起作用,它從7.0.3客戶端可以生成的任何設計元素中刪除標誌。我從Ian's blog進入同一目標約NotesNoteCollection線索:

Private Sub clearDesignInheritance(db As notesdatabase) 
    On Error Goto errorthrower 

    Dim nc As NotesNoteCollection 
    Set nc = db.CreateNoteCollection(True) ' Select all note types... 
    nc.SelectDocuments=False ' ...except data documents. 

    Call nc.BuildCollection 

    Dim noteid As String 
    noteid = nc.GetFirstNoteId 

    Dim doc As notesdocument 

    Do Until noteid="" 
     Set doc = db.GetDocumentByID(noteid) 
     If doc.HasItem("$Class") Then 
      Call doc.RemoveItem("$Class") 
      Call doc.save(False,False,False) 
     End If 
     noteid = nc.GetNextNoteId(noteid) 
    Loop 

    Exit Sub 
ErrorThrower: 
    Error Err, Error & Chr(13) + "Module: " & Cstr(Getthreadinfo(1)) & ", Line: " & Cstr(Erl) 
End Sub