---
title: いったいCaretNoteIDってどんなときに使うのか？
tags:  #これがドミノだ #ontime #hcl #domino #グループカレンダー #グループスケジュール #組織カレンダー #組織スケジュール #notes  
author: [Toshihiro Okamoto](https://www.docswell.com/user/okamomoba)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4LE34G3475.jpg?width=480
description: LotusScriptのCaretNoteIDプロパティの使い方。 NotesUIView クラスのプロパティの1つ。 ビューで現在ハイライトされている (カレットの場所にある) 文書の note ID です。 このプロパティは R6 で新しく追加されました。 選択マークはカレットの場所には関係ありません。 CaretNoteID が参照する文書を取得するには、NotesDatabase の GetDocumentByID を使用してください。 便利なところはずばりUIViewからバックエンドのDBクラスの文書を1行でつかめる。
published: September 12, 18
canonical: https://www.docswell.com/s/okamomoba/KJNY45-2022-05-12-150229
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4LE34G3475.jpg)

notes knows
2018.08.22 No.6


# Page. 2

![Page Image](https://bcdn.docswell.com/page/V8EDQ1457G.jpg)

スポンサー


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4V7PLQMDE8.jpg)

先日の”CaretNoteID”の件、
覚えてます？


# Page. 4

![Page Image](https://bcdn.docswell.com/page/L2JVQ59GEQ.jpg)

「いったいCaretNoteIDってどん
なときに使うのか？」
って話になりましたが、すぐにそ
の事例となるDBが出てこず宿題
になっていました。
本日はその事例のお話しです。


# Page. 5

![Page Image](https://bcdn.docswell.com/page/Z5EGW64D7L.jpg)

そもそも”CaretNoteID”とは？
• NotesUIView クラスのプロパティの1つ。
• ビューで現在ハイライトされている (カレットの場所にある) 文
書の note ID です。
• このプロパティは R6 で新しく追加されました。
• 選択マークはカレットの場所には関係ありません。
• CaretNoteID が参照する文書を取得するには、NotesDatabase
の GetDocumentByID を使用してください。
• 便利なところはずばり
UIViewからバックエンドのDBクラスの文書を1行でつかめる。


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V4JQ34GXJP.jpg)

選択マークとハイライト
選択マーク
ハイライト


# Page. 7

![Page Image](https://bcdn.docswell.com/page/DK741Q5271.jpg)

選択マークとハイライト
• ハイライトはUIViewから１つの文書を識別できる。
• Set doc = db.GetDocumentByID(uiview.CaretNoteID)
• 選択マークはUIViewから複数の文書を識別できる。
• Set dc = uiview.Documents
Set doc = dc.GetFirstDocument


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PLJ1GPWKEG.jpg)

ハイライトの使い道
• UIから文書を開かずdocを取得出来る。
• 開くオペレーションから文書を開かず、ダイアログボックスを
使用して違うDBの違う文書や複合させた情報のダイアログ
ボックスをポップアップさせることが出来る。
• 例えば、プロジェクト文書のビューでアクションボタンで顧客
文書のダイアログを開いたり、、、、文書内の埋め込みビュー
で請求書一覧があれば、そこから請求書ではなく請求先マス
ターの文書を開いたり。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/8GJWK26PJ2.jpg)

事例１：稼働データの入力から集計まで
• 仕事した内容を記録して単価計算して、集計した後に請求する
システム。
• 仕事の入力は自身の業務内容に基づいた入力しやすい幾つかの
パターンで行える。
• 1文書1文書で作業を行う。
• プロジェクト毎に入力する人。
• 日々精算する人。
• ランダムに入力する人。。。。
• 集計チェックはプロジェクト単位で責任者が承認する。
• 必ずプロジェクト単位で、複数文書を束ねて処理。


# Page. 10

![Page Image](https://bcdn.docswell.com/page/W4EZZDY6E3.jpg)

稼働入力用ダッシュボード


# Page. 11

![Page Image](https://bcdn.docswell.com/page/KY76Z1DL7V.jpg)

ビュー内の文書を開こうとすると。。。
この明細は既にしまっている
ので編集は出来ません。


# Page. 12

![Page Image](https://bcdn.docswell.com/page/5G75W43MJ4.jpg)

読みから選択
ダッシュボードで
デフォルトを選択しているので
選び直す必要はない。


# Page. 13

![Page Image](https://bcdn.docswell.com/page/V9J2QVZRER.jpg)

アサインされたプロジェクトから選択
アサインのエントリが
少ない人はこちらが便利


# Page. 14

![Page Image](https://bcdn.docswell.com/page/5DEYW3R57M.jpg)

選択が嫌いな人は
文字列検索でリスト表示


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2VJN9VD4J8.jpg)

フォームに依存したフィールドの値は？
• 様々なフォームで入力され、
• 編集自体もユーザーのロールや文書のステータスで変わる。
• そんなときに使える。
• XP,,,,,,


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GYE926G4J3.jpg)

設計の中身を見てみる


# Page. 17

![Page Image](https://bcdn.docswell.com/page/5GE85ZVVED.jpg)

入力者ロールや文書ステータスで変える
いずれにしてもダイアログに表示します。
表示なら必要最小限の情報。
編集ならモードに応じて事前に選択肢な
どを準備してあげる。


# Page. 18

![Page Image](https://bcdn.docswell.com/page/MLELYD5R7R.jpg)

プロジェクトから複数選択して集計


# Page. 19

![Page Image](https://bcdn.docswell.com/page/54JMNP3PEW.jpg)

複数文書をコレクションして扱う。
コレクションした文書をループを使って
内容の事前チェックを掛ける。
問題なければ本来の処理を実施。


# Page. 20

![Page Image](https://bcdn.docswell.com/page/ZPJRD1QYE9.jpg)

別の会社のよく似たパターン
• 稼働データの殆どはメールDBのカレンダーデータから生成さ
れている。
• こちらはダイアログによるコントロールは必要なし。
• それよりも簡略化を最優先。
• 結果、ロールとステータス処理だけで充分。


# Page. 21

![Page Image](https://bcdn.docswell.com/page/NPEX1Y54EX.jpg)

既に登録済みの内容の詳細を記載ほか。


# Page. 22

![Page Image](https://bcdn.docswell.com/page/63EK236PJD.jpg)

新規は文書を選択・未選択で処理を変更。


# Page. 23

![Page Image](https://bcdn.docswell.com/page/4L734G64J5.jpg)

カーソルがある文書の情報をもらう
シンプルに文書選択してたら
必要な値だけ持ってきてる。
「式で選択文書から値を引き継ぐ」
と似ている


# Page. 24

![Page Image](https://bcdn.docswell.com/page/V87DQ1V5JG.jpg)

話しはそれてしまいましたが。。。。
• 計算結果フィールドを多用しない。
• 作成時の計算結果やデフォルト値の式も排除しました。
• 多データベースが関係する際、競合が発生しやすい。
• 計算結果ではなくバックエンドで値自体の更新ロジックを走らせる。
• フォームをそのまま開かない。
• ロールやステータスによって表示する内容が変わる。
• 入力支援部分は文書データとして必要としない。
• ダイアログを使用した。
• 複数開けることによる誤入力防ぐ。
• 間違って文書コピーをしてしまわない。
• Notesじゃない方がよい？
• 開発と運用が同時進行できる。
• UIの配布が必要なかった。
• 慣れたオペレーションを使える。


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4VJPLQVD78.jpg)

データベースをまたぐ値更新の自動処理
• バックエンドで値の変更
を関連するDBの文書に更
新するエンジンを走らせ
ることで計算結果ではな
く常に値を最新にする処
理が行われている。
• このロジックでUIで編集
中の競合回避処理も行う
• 今回のテーマと離れるの
でこの話はまたいつか。


