2017-08-01 52 views
0

我現在正在使用C#開發IBM lotus notes插件的項目。IBM Lotus Notes如何指定列值中的視圖列號

這裏的請求,我們希望通過視圖列的名稱,如「日期」從視圖中獲取數據。

我發現我可以使用「NotesView」類中的「GetColumn」方法來獲取列名和其他基本信息的信息,但實際數據不包含在其中。 要獲取數據,我需要使用「ViewEntry」類或「Document」類中的屬性「ColumnValues」。

不幸的是,關於IBM提供的技術文檔,有幾種情況並不是所有的列值都會返回。 https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_COLUMNVALUES_PROPERTY_JAVA.html

例如,GetColumn的結果是16列,第12列的名稱是「日期」,它是日期時間類型。但在ColumnValues中,只有13列,沒有列名,第8列類型是datetime,它似乎是「Date」列。

我試圖找出哪些列將被省略。 首先,我試圖捕捉公式中的「僅用戶界面功能」,但似乎還不夠。其次,我試圖抓住「不變」,但不是如何。最後我發現並非所有的「常量」公式列都被刪除了。我放棄了。

有沒有人能幫我指出列值中的視圖列號?

+1

最好的做法是有意見進行編程訪問來自不同UI訪問的視圖。程序化訪問視圖不應包含未包含在列值中的列。那麼你的代碼將更容易開發。 – Newbs

+0

請解釋「插件」的含義。什麼類型的插件?它如何以及它在哪裏運行?據我所知,在基於eclipse的客戶端UI環境中運行的插件是用Java編寫的,而不是C#。另外,請解釋爲什麼您認爲應該通過視圖中的columnValues訪問值,而不是通過文檔中的NotesItems訪問值。 (有時候有很好的理由,但是我經常看到有人試圖做到這一點,因爲使用NotesDocuments和NotesItems會更簡單 –

+0

@Newbs謝謝你的邏輯思想,我的問題真的是你說的:目前我只能找到程序化訪問的視圖值,但沒有編程訪問的視圖名稱,所以我無法完成指示。您知道如何獲取Lotus Notes中編程式訪問的視圖列名稱嗎? –

回答

0

@RichardSchwartz我用C++在筆記中創建了一個菜單項,它將在外面調用真正的筆記應用程序,然後我將它們稱爲「插件」。 IBM引入LotusScript和Java作爲非COM和COM(Windows技術),C#和Java都通過COM支持,但由於它們提供了相同的功能,所以Java主要在IBM上進行描述,沒有C#文檔。對於C++,它具有Notes C++開發工具包中的文檔,這是nsf。

有,爲什麼我想在視圖中的值,而不是查找該NotesDocument的內部值的2個原因:

  1. 能見度用戶。
    用戶在NotesDocument(例如textbox_1)中看不到項目名稱,但他們可以直接在視圖上看到列名稱,並且此名稱可以指示列(但不是列值)。

  2. 普遍性。
    對於不同的DB和具有相同含義的項目,不僅項目名稱會有所不同,而且項目值也會不同。如果你在NotesDoument中查找值,那麼你的程序可能只能工作1分貝。 例如,一個數據庫文檔中的「批准狀態」值是「已檢查,已批准」,以及視圖中顯示的相同單詞。但對於另一個DB,一個DB中的「批准狀態」的值爲「1,2,3」,視圖列的公式將判斷值「1,2,3」,最後顯示「已檢查,已批准」。

0

對於要使用(讓用戶通過選擇標題選擇列)的通用方法,你會得到更好的使用爲NotesView對象的Columns屬性,然後遍歷在您需要的文檔視圖服務居住,併爲選定的視圖列:

  • 如果vwcol。IsField屬性爲True,返回doc.GetItemValue(vwcol.ItemName)
  • 如果vwcol.IsField屬性爲False(vwcol.IsFormula = TRUE),返回Evaluate(vwcol.Formula, doc)
相關問題