2015-07-10 47 views
1

我正在寫任何從任何視圖導出爲ex​​cel。有許多樣本可用,並且在「正常視圖」下工作。只要我有一個具有靜態值的列的視圖,它就會被跳過。 (我試過「2」和2)(這是一個測試視圖)我有一個4列的視圖,1,3和4鏈接到文檔上的字段,第2列只有數字2。NotesViewEntry與notesviewcolum不同的列

C1 | V2 | C3 | C4色譜柱

1 | 2 | 3 | 4個值

'這得到所有4列名

ForAll n In view.Columns 

     cNames(columnTotal) = n.title 

     columnTotal = columnTotal + 1 

End ForAll 

' 結果

'CNAME(0)= 「C1」

' CNAME(0)= 「V2」

'CNAME(0)= 「C3」

' CNAME(0)= 「C4」

'這得到只有3列的值

Set nav = view.createviewnav 

Set entry = nav.Getfirst() 

While Not entry Is Nothing 

    ForAll c In view.Columns 

     readvalue = entry.Columnvalues(columncounter-1) 

    End ForAll 

Wend  

' 結果

'entry.columnvalues(0)= 「1」

' entry.columnvalues(1)= 「3」

「entry.columnvalues(2)= 「4」

我不能發佈的截圖,這是我第一次發帖,但它表明了entry.columnvalues包含3 VAL但是該條目的parent.columns(Notesviewcolumn())顯示4個列名...

如何讀取視圖中顯示的所有值,包括基礎文檔中不存在的值?

謝謝。

回答

1

文檔告訴爲entry.ColumnValues

如果它是由確定沒有返回列值:

  • 含有一個唯一的用戶界面功能,例如@IsExpandable或@DocNumber式。
  • 一個常數。

據德米特羅Pastovenskyi一個blog可以使用ColumnValuesIndex雖然認識到如果一個列是包含僅​​UI功能的恆定或公式。

其中有一個 ColumnValuesIndex> = 0

出口僅列:

ForAll n In view.Columns 
    If n.ColumnValuesIndex >= 0 Then 
     cNames(columnTotal) = n.title 
     columnTotal = columnTotal + 1 
    End If  
End ForAll 
+0

謝謝你的快速反應。我看了Dmytro Pastovenskyi的博客,這非常有用,但我做了一個小改動。在我的情況下,它也跳過了第一列,這只是一個字段值,沒有公式,並且沒有隱藏,但返回了索引0.我的代碼構建了列名列表1st,看起來像這樣,我得到了我想要的結果現在,將對其他觀點進行更多測試並提供反饋。 ForAll n In view.Columns If Not(n.ColumnValuesIndex = -1)然後cNames(columnTotal)= n.title columnTotal = columnTotal + 1 End If End ForAll – Johan

+0

你是對的:0是一個真實列的有效值,所以'> 0'必須是'> = 0'。我改變了我的代碼。 –