View Full Version : 如何從一個視界中根據符合條件的文檔產生另一份文檔(比較難)
現在我要根據視界中符合條件的文檔產生另一份文檔,(新文檔需要套用舊文檔中的幾個欄位).比如我現在有一份人事檔檔的視界(視界中有姓名,工號.性別,身份證號等信息).我現在需要由系統產生另一份文檔(如請假記錄).此份文檔要有舊文檔的姓名工號性別等三個欄位的信息.由系統根據符合條件的視界產生!代碼如何寫
需在同一個系統中.
china_fankai
22-02-06, 05:23 PM
可以先生成一個新文檔﹐再將你需要的值寫入到這個新文檔當中﹐代碼如下﹕
Dim ws As New NotesUIWorkspace
Dim sess As New NotesSession
Dim docold As NotesDocument
Set docold=sess.DocumentContext
docold 為你選中的文檔對象﹐再去生成一個新文檔
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = sess.CurrentDatabase
Set doc = db.CreateDocument
doc 就是新生成的文檔﹐再將你需要保存的值寫入這個新文檔中﹐就可以了
doc.form = docold.form(0)
...
其实这是没什么难度的,解决这个问题需要几步:
第一:在视图中选择符合条件的文挡(下面介绍如何取得视图中所选的文挡),选择文挡最好在文档前打勾,虽然焦点在那文挡上也行,
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim dcc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = ss.CurrentDatabase
Set dcc = db.UnprocessedDocuments
If dcc.Count > 0 Then
Set doc = dcc.GetFirstDocument() --------------------------取得了所选文挡
End If
第二:先建设一份文挡:
Set docNew = New NotesDocument(db)
第三:给新文挡赋值(比如上面说的 姓名 工号 性别,假设以中文代表他们三个域)
docNew.Form = doc.Form(0) ----------- 新建文挡表单不要忘了
docNew.姓名 = doc.姓名
docNew.工号 = doc.工号
docNew.性别 = doc.性别
第四:要打开这份新文挡(还没保存)
Dim uws As New NotesUIWorkspace
Call uws.EditDocument(True,docNew)
结合这四部,组合一下代码就可以了,代码可以如下:
Dim uws As New NotesUIWorkspace
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim dcc As NotesDocumentCollection
Dim doc As NotesDocument
Dim docNew As NotesDocument
Set db = ss.CurrentDatabase
Set dcc = db.UnprocessedDocuments
If dcc.Count > 0 Then
Set doc = dcc.GetFirstDocument()
If Not doc Is Nothing Then
Set docNew = New NotesDocument(db)
docNew.Form = doc.Form(0)
docNew.姓名 = doc.姓名
docNew.工号 = doc.工号
docNew.性别 = doc.性别
Call uws.EditDocument(True,docNew)
End If
End If
其实你可以 在这个问题解决中可以学到几点
1.如何取得所选文挡
2.如何新建文挡
3.如何打开文挡
vBulletin® v3.7.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.