例: GetDocumentByKey method

  1. 次のエージェントは現在のデータベースの [By Category] ビュー内の [Leather] で始まる最初のカテゴリにある最初の文書を取得し、価格を表示します。
    Sub Initialize
      Dim session As New NotesSession
      Dim db As NotesDatabase
      Dim view As NotesView
      Dim doc As NotesDocument
      key =  "Leather"
      Set db = session.CurrentDatabase
      Set view = db.GetView ("By Category" )
      Set doc = view.GetDocumentByKey (key )
      If Not (doc Is Nothing) Then
        Messagebox "$" & doc.GetItemValue ("Price")(0),, _
        "Price"
      Else
        Messagebox "By Category " + key,, "Not found"
      End If
    End Sub
  2. 次のスクリプトは、現在のデータベースの [By Category] ビュー内の「Spanish leather」カテゴリにある最初の文書を取得します。カテゴリの名前は、正確に「Spanish leather」でなければなりません。
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView( "By Category" )
    Set doc = view.GetDocumentByKey( "Spanish leather", True )
  3. 次のスクリプトは現在のデータベースの [By Category and Author] ビューを調べます。このビューは文書をカテゴリで分類した後で、各カテゴリごとに作成者で分類します。スクリプトは「Expense Report」カテゴリで作成者が「Robson Da Silva」である最初の文書を取得します。
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim keys( 1 To 2 ) As String
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView( "By Category and Author" )
    keys( 1 ) = "Expense Report"
    keys( 2 ) = "Robson Da Silva"
    Set doc = view.GetDocumentByKey( keys )
  4. このフィールドスクリプトは現在の文書の [Name] フィールドからユーザーのフルネームを取得し、分析してそこから姓の部分を抽出します。そして、GetDocumentByKey を使用して、現在のコンピュータにあるアドレス帳の [ユーザー] ビューで、そのユーザーの勤務先電話番号を検索します。さらに、その電話番号を現在の文書の [Phone] フィールドに入力します。
    Sub Exiting(Source As Field)
      Dim workspace As New NotesUIWorkspace
      Dim uidoc As NotesUIDocument    
      Dim fullName As String
      Dim lastName As String
      Dim db As NotesDatabase
      Dim view As NotesView
      Dim doc As NotesDocument
      ' first parse the full name to find the last name
      Set uidoc = workspace.CurrentDocument    
      fullName = uidoc.FieldGetText( "Name" )
      lastName = Mid$( fullName, (Instr( fullName, " ") + 1 ))
      ' now use the last name as the key
      Set db = New NotesDatabase( "", "names.nsf" )
      Set view = db.GetView( "People" )
      Set doc = view.GetDocumentByKey( lastName )
      Call uidoc.FieldSetText _
      ( "Phone", doc.OfficePhoneNumber( 0 ) )
    End Sub
  5. 次のスクリプトは現在のデータベースの [By Category] ビュー内の [Spanish leather] カテゴリのすべての文書を取得し、[Boots] フォルダに入れます。スクリプトは GetDocumentByKey を使用してカテゴリの最初の文書を見つけ、GetNextDocument を使用して 2 番目以降の文書を検索します。スクリプトは NotesDocument の ColumnValues プロパティを使用して各文書の列の値を調べます。ビューのソートされた最初の列の文書の値が「Spanish leather」であれば、スクリプトは文書を [Boots] フォルダに入れます。ソート済みの列の最初の値が「Spanish leather」以外であるか、ビューに未処理の文書がなくなると、スクリプトは終了します。次の方法より簡単な方法については、GetAllDocumentsByKey を参照してください。次のテクニックの唯一の利点は、取得した文書に ColumnValues プロパティを正確に設定することです。これは GetAllDocumentsByKey ではできません。
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim column As NotesViewColumn
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView( "By Category" )
    ' get the first sorted and categorized column in the view
    Forall c In view.Columns
      If ( c.IsSorted And c.IsCategory ) Then
        Set column = c
        Exit Forall
      End If
    End Forall
    ' get the first document that matches the key
    Set doc = view.GetDocumentByKey( "Spanish leather" )
    ' get the remaining documents that match the key
    ' since ColumnValues array starts at 0 for position 1,
    ' subtract 1 from the column position
    Do While Not ( doc Is Nothing )
      If ( doc.ColumnValues( column.Position - 1 ) =  _
      "Spanish leather" ) Then
        Call doc.PutInFolder( "Boots" )
      Else
        Exit Do
      End If
      Set doc = view.GetNextDocument( doc )
    Loop