2016-02-09 45 views

回答

3

您可以使用NotesDatabase.CreateView方法創建View,並使用NotesView.CreateColumn爲此View創建列。 Form中的所有字段列表可以從NotesForm.Fields屬性中獲得。 Form本身你可以從NotesDatabase.GetForm方法中獲得。
這裏是例子:

Dim ses As New NotesSession 
Dim db As NotesDatabase 
Dim form As NotesForm 
Dim view As NotesView 

Set db = ses.CurrentDatabase 

formName$ = "YourFormName" 

Set form = db.GetForm(formName$) 

Set view = db.CreateView(formName$ & "Fields", {Form = "} & formName$ & {"}) 

Forall field In form.Fields 
    Call view.CreateColumn(, field, field) 
End Forall 
+0

謝謝,這或多或少的伎倆。只是一個問題,但它循環良好,但我得到重複列創建。看起來,當它到達底部時,它會再次從頂部繼續,但不是整個形式。任何想法,爲什麼? – CinNL1

+0

這種方法的一個問題是,視圖呈現文檔中的項目內容,這些內容可能與用於創建和/或顯示文檔的表單上的字段不同。對於顯示字段計算的字段不會顯示在文檔上,並且表單上沒有的項目可能會被表單或代理中的代碼添加。 – Newbs

+0

@ CinNL1你的代碼有問題。您可以嘗試使用'Arrayunique'去除重複項:'fields = Arrayunique(form.Fields):Forall field在字段中:調用view.CreateColumn(,field,field):End Forall'。 – nempoBu4

1

您可以打開與表單創建的文檔,並遍歷thorugh的NotesItems。在那裏你可以得到字段名稱。

的代碼可能看起來是這樣的:

Dim field List As String 

Forall i in doc.Items 
    field(i.Name) = i.Text 
End Forall 

您現在有一個包含字段值的文本表示和字段列表標記的名稱列表。

或者您可以在每個文檔上執行此操作並導出所有這些值。用100列創建一個視圖會創建一個巨大的視圖索引。不是一個好主意。

+1

但請注意:這個問題是所有的表單上的字段,以及一個文檔中的所有字段列表是不一樣的。 –

+0

這當然是對的。然後CinNL1可以遍歷所有文檔並做同樣的事情,將字段名稱添加到全局列表中。 –