Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UNKテーブル

Haruyuki Nakano
December 09, 2022

 UNKテーブル

質問「フォームから削除したフィールドの名前をビュー列の設定画面にあるフィールドのリストから削除することはできますか?」について調べたことをまとめました。

2022/12/8 開催の「のの会」で使用した資料です。

Haruyuki Nakano

December 09, 2022
Tweet

More Decks by Haruyuki Nakano

Other Decks in Education

Transcript

  1. フォームから削除した フィールドの名前を ビュー列の設定画面から 削除できますか? 中野晴幸 Haruyuki Nakano @harunakano (Twitter) harunakano.blogspot.com

    (blog)
  2. ノーツコンソーシアム 新任担当者向けWS(開発者編) 参加者からの質問 フォームから削除したフィールド名 が、ビュー列の設定にあるフィール ド名のリストに残ります。 これを削除する方法はありますか? 削除したフィールド名を リストに出したくない! リスト

  3. リストの実体 • UNKテーブル (UNique Key Table):固有キーテーブル

  4. 検証用にアプリを作ってみた • Localに作成 • 文書を作成しない(データ0件) ➢UNKテーブルのフィールド名はフォーム等の「設計」のほか「文書」 からも生成されることから、生成元となる要素を減らす目的で文書を 作成しない • 全文索引を作成しない

  5. 検証手順 1. フォームにフィールドを配置して保存 2. UNKテーブルにフィールドがあることを確認 3. フォームからフィールドを削除して保存 4. 削除したフィールド名がUNKテーブルにあることを確認 5.

    UNKテーブル更新(次ページ参照) 6. 削除したフィールド名がUNKテーブルに無いことを確認
  6. 5. UNKテーブル更新 • 更新手順 1. 全文索引の削除 2. キャッシュの削除「dbcache flush」 3.

    コピー圧縮「ncompact –c dbanme.nsf」 4. 全文索引の作成 ※今回全文索引は作成しないため1と4は除外 ※DBをLocalに作成するため2では cache.ndk を削除
  7. 新規DBを作成して フォームを1つ作成 テキスト型 数値型 日付/時刻型

  8. ビューの列設定 「フィールド」のリスト

  9. item name type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Name Text #7 $TITLE Text #8 IconBitmap Icon #9 $Flags Text #10 $Daos Text #11 $LargeSummary Text #12 $ACLDigest UserData #13 $Signature Signature #14 $Collection Object #15 $ViewContainer Object #16 $DesignerVersion Text #17 $FileSize Number #18 $FileData Composite #19 $FileNames Text #20 $FlagsExt Text #21 $HTMLCode Composite #22 $Comment Text #23 $Info Composite #24 $$ScriptName Text #25 $Body Composite #26 $WindowTitle Formula #27 Subject InvalidOrUnknown #28 Category_1 InvalidOrUnknown #29 Category_2 InvalidOrUnknown #30 Category_3 InvalidOrUnknown #31 Body InvalidOrUnknown #32 SubTotal_1 Number #33 SubTotal_2 Number #34 SubTotal_3 Number #35 DueDate Time #36 CreatedDate Time #37 ModifiedDate Time #38 $Fields TextList UNKテーブルを NotesPeekで確認
  10. Sub Initialize Dim ss As New NotesSession Dim exporter As

    NotesDXLExporter Dim db As New NotesDatabase("","UNKTable.nsf") Dim out$ Dim filenum As Integer Set exporter = ss.CreateDXLExporter out = exporter.Export(db) filenum = FreeFile Open "c:¥temp¥UNKTable.dxl" For Output As filenum Write #filenum, out Close filenum End Sub 【参考】 UNKテーブルは DXL出力に 含まれない DXL (Domino XML Language)
  11. 【削除したフィールド】 Category_3 SubTotal_3 ModifiedDate フォーム変更前 フォーム変更後

  12. item name Type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Name Text #7 $TITLE Text #8 IconBitmap Icon #9 $Flags Text #10 $Daos Text #11 $LargeSummary Text #12 $ACLDigest UserData #13 $Signature Signature #14 $Collection Object #15 $ViewContainer Object #16 $DesignerVersion Text #17 $FileSize Number #18 $FileData Composite #19 $FileNames Text #20 $FlagsExt Text #21 $HTMLCode Composite #22 $Comment Text #23 $Info Composite #24 $$ScriptName Text #25 $Body Composite #26 $WindowTitle Formula #27 Subject InvalidOrUnknown #28 Category_1 InvalidOrUnknown #29 Category_2 InvalidOrUnknown #30 Category_3 InvalidOrUnknown #31 Body InvalidOrUnknown #32 SubTotal_1 Number #33 SubTotal_2 Number #34 SubTotal_3 Number #35 DueDate Time #36 CreatedDate Time #37 ModifiedDate Time #38 $Fields TextList #39 RevisedDate Time #40 Category_0 InvalidOrUnknown #41 SubTotal_0 Number item name Type #0 $DesignVersion Text #1 $Version Text #2 $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Name Text #7 $TITLE Text #8 IconBitmap Icon #9 $Flags Text #10 $Daos Text #11 $LargeSummary Text #12 $ACLDigest UserData #13 $Signature Signature #14 $Collection Object #15 $ViewContainer Object #16 $DesignerVersion Text #17 $FileSize Number #18 $FileData Composite #19 $FileNames Text #20 $FlagsExt Text #21 $HTMLCode Composite #22 $Comment Text #23 $Info Composite #24 $$ScriptName Text #25 $Body Composite #26 $WindowTitle Formula #27 Subject InvalidOrUnknown #28 Category_1 InvalidOrUnknown #29 Category_2 InvalidOrUnknown #30 Category_3 InvalidOrUnknown #31 Body InvalidOrUnknown #32 SubTotal_1 Number #33 SubTotal_2 Number #34 SubTotal_3 Number #35 DueDate Time #36 CreatedDate Time #37 ModifiedDate Time #38 $Fields TextList フォーム変更前 フォーム変更後 削除した3つのフィールドは まだUNKテーブルに存在する
  13. UNKテーブル更新 ※Notesクライアントを停止して以下を実行しました

  14. item name Type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Collection Object #7 $ViewContainer Object #8 $Name Text #9 $TITLE Text #10 $ACLDigest UserData #11 $Signature Signature #12 $Flags Text #13 $DesignerVersion Text #14 $FileSize Number #15 $FileData Composite #16 $FileNames Text #17 $FlagsExt Text #18 $Comment Text #19 SubTotal_3 Number #20 ModifiedDate Time #21 $HTMLCode Composite #22 $Info Composite #23 $WindowTitle Formula #24 $$ScriptName Text #25 Subject InvalidOrUnknown #26 Category_1 InvalidOrUnknown #27 Category_2 InvalidOrUnknown #28 SubTotal_1 Number #29 SubTotal_2 Number #30 DueDate Time #31 CreatedDate Time #32 RevisedDate Time #33 Body InvalidOrUnknown #34 Category_0 InvalidOrUnknown #35 SubTotal_0 Number #36 $Fields TextList #37 $Body Composite #38 IconBitmap Icon #39 $Daos Text #40 $LargeSummary Text item name Type #0 $DesignVersion Text #1 $Version Text #2 $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Name Text #7 $TITLE Text #8 IconBitmap Icon #9 $Flags Text #10 $Daos Text #11 $LargeSummary Text #12 $ACLDigest UserData #13 $Signature Signature #14 $Collection Object #15 $ViewContainer Object #16 $DesignerVersion Text #17 $FileSize Number #18 $FileData Composite #19 $FileNames Text #20 $FlagsExt Text #21 $HTMLCode Composite #22 $Comment Text #23 $Info Composite #24 $$ScriptName Text #25 $Body Composite #26 $WindowTitle Formula #27 Subject InvalidOrUnknown #28 Category_1 InvalidOrUnknown #29 Category_2 InvalidOrUnknown #30 Category_3 InvalidOrUnknown #31 Body InvalidOrUnknown #32 SubTotal_1 Number #33 SubTotal_2 Number #34 SubTotal_3 Number #35 DueDate Time #36 CreatedDate Time #37 ModifiedDate Time #38 $Fields TextList #39 RevisedDate Time #40 Category_0 InvalidOrUnknown #41 SubTotal_0 Number フォーム変更後 UNKテーブル更新後 削除したフィールドのうち テキスト型のCategory_3だけ 削除されたが 数値型と日付時刻型の2つは まだ存在する
  15. 追加/削除 タイプ フィールド 結果 削除 テキスト Category_3 ◦ 数値 SubTotal_3

    × 日付時刻 ModifiedDate ×
  16. 検証結果 ◦ UNKテーブルから削除できるフィールド • テキスト型 × UNKテーブルから削除できないフィールド • 数値型 •

    日付/時刻型
  17. 検証結果 ◦ UNKテーブルから削除できるフィールド • テキスト型 × UNKテーブルから削除できないフィールド • 数値型 •

    日付/時刻型 この結果をもとに サポートに聞いてみました
  18. サポートの回答 • 古いリリースから発生している問題であり問題報告番号 BGON5LUG3B として開発に報告されている • 回避策 1. 削除したいフィールドと同名のテキストフィールドを追加して フォームを保存

    2. 追加したフィールドを削除して、フォームを保存 3. コピー圧縮を実施
  19. 【回避策】 UNKテーブルから 数値と日付時刻の フィールドを削除 するには?

  20. テキスト型なら削除できるので… 1. フォームに同名のフィールドをテキスト型で追加してフォー ムを保存 2. UNKテーブルにフィールドがあることを確認 3. 追加したフィールドをフォームから削除してフォームを保存 4. 削除したフィールド名がUNKテーブルにあることを確認

    5. UNKテーブル更新 6. 削除したフィールド名がUNKテーブルに無いことを確認
  21. フォームに削除したいフィールド と同名のテキスト型フィールドを 作成して保存する

  22. item name Type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Collection Object #7 $ViewContainer Object #8 $Name Text #9 $TITLE Text #10 $ACLDigest UserData #11 $Signature Signature #12 $Flags Text #13 $DesignerVersion Text #14 $FileSize Number #15 $FileData Composite #16 $FileNames Text #17 $FlagsExt Text #18 $Comment Text #19 SubTotal_3 Number #20 ModifiedDate Time #21 $HTMLCode Composite #22 $Info Composite #23 $WindowTitle Formula #24 $$ScriptName Text #25 Subject InvalidOrUnknown #26 Category_1 InvalidOrUnknown #27 Category_2 InvalidOrUnknown #28 SubTotal_1 Number #29 SubTotal_2 Number #30 DueDate Time #31 CreatedDate Time #32 RevisedDate Time #33 Body InvalidOrUnknown #34 Category_0 InvalidOrUnknown #35 SubTotal_0 Number #36 $Fields TextList #37 $Body Composite #38 IconBitmap Icon #39 $Daos Text #40 $LargeSummary Text 【確認】 この時点では、UNKテーブル上の型は テキストに更新されていない
  23. フォームから追加したテキスト型 フィールドを削除して保存する フォーム変更前 フォーム変更後

  24. item name Type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Collection Object #7 $ViewContainer Object #8 $Name Text #9 $TITLE Text #10 $ACLDigest UserData #11 $Signature Signature #12 $Flags Text #13 $DesignerVersion Text #14 $FileSize Number #15 $FileData Composite #16 $FileNames Text #17 $FlagsExt Text #18 $Comment Text #19 SubTotal_3 Number #20 ModifiedDate Time #21 $HTMLCode Composite #22 $Info Composite #23 $WindowTitle Formula #24 $$ScriptName Text #25 Subject InvalidOrUnknown #26 Category_1 InvalidOrUnknown #27 Category_2 InvalidOrUnknown #28 SubTotal_1 Number #29 SubTotal_2 Number #30 DueDate Time #31 CreatedDate Time #32 RevisedDate Time #33 Body InvalidOrUnknown #34 Category_0 InvalidOrUnknown #35 SubTotal_0 Number #36 $Fields TextList #37 $Body Composite #38 IconBitmap Icon #39 $Daos Text #40 $LargeSummary Text 【確認】 UNKテーブルに変化なし
  25. UNKテーブル更新

  26. item name Type #0 $DesignVersion Text #1 $Version Text #2

    $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Collection Object #7 $ViewContainer Object #8 $Name Text #9 $TITLE Text #10 $ACLDigest UserData #11 $Signature Signature #12 $Flags Text #13 $DesignerVersion Text #14 $FileSize Number #15 $FileData Composite #16 $FileNames Text #17 $FlagsExt Text #18 $Comment Text #19 SubTotal_3 Number #20 ModifiedDate Time #21 $HTMLCode Composite #22 $Info Composite #23 $WindowTitle Formula #24 $$ScriptName Text #25 Subject InvalidOrUnknown #26 Category_1 InvalidOrUnknown #27 Category_2 InvalidOrUnknown #28 SubTotal_1 Number #29 SubTotal_2 Number #30 DueDate Time #31 CreatedDate Time #32 RevisedDate Time #33 Body InvalidOrUnknown #34 Category_0 InvalidOrUnknown #35 SubTotal_0 Number #36 $Fields TextList #37 $Body Composite #38 IconBitmap Icon #39 $Daos Text #40 $LargeSummary Text Item name Type #0 $DesignVersion Text #1 $Version Text #2 $Formula Formula #3 $FormulaClass Text #4 $Collation Collation #5 $UpdatedBy TextList #6 $Collection Object #7 $ViewContainer Object #8 $Name Text #9 $TITLE Text #10 $ACLDigest UserData #11 $Signature Signature #12 $Flags Text #13 $DesignerVersion Text #14 $FileSize Number #15 $FileData Composite #16 $FileNames Text #17 $FlagsExt Text #18 $Comment Text #19 $HTMLCode Composite #20 $Info Composite #21 $WindowTitle Formula #22 $$ScriptName Text #23 Subject InvalidOrUnknown #24 Category_0 InvalidOrUnknown #25 Category_1 InvalidOrUnknown #26 Category_2 InvalidOrUnknown #27 SubTotal_0 Number #28 SubTotal_1 Number #29 SubTotal_2 Number #30 DueDate Time #31 CreatedDate Time #32 RevisedDate Time #33 Body InvalidOrUnknown #34 $Fields TextList #35 $Body Composite #36 IconBitmap Icon #37 $Daos Text #38 $LargeSummary Text UNKテーブル更新前 UNKテーブル更新後 【確認】 UNKテーブルから 削除された!!
  27. UNKテーブル更新前 UNKテーブル更新後 数値型と日付時刻型の 削除したフィールド名が 表示されなくなった!

  28. https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0101210 本件、Article(KB0101210)が発行されました!

  29. おまけ(1) • UNKテーブルはnsfファイル内にある? あります • UNKテーブルは設計の置換や複製で置換される? されません

  30. おまけ(2) • UNKテーブルに制限はある? あります。「データベースで多くのフィールドを許可」が無効の場合、 フィールドの数は3,000程度に制限されるが、有効の場合は23,000程度 に拡張される。 通常、制限を超えるとメッセージが表示されるが 12.0 の ODS

    55 では 60,000 程度のフィールドを保存可能。ただし制限に達してもメッセージ が表示されず、65,000以上に達すると破損する問題あり(問題報告番号 TSAOCKZCXM)
  31. おまけ(3) • フィールドのリストは UNK テーブルに格納されている • UNK テーブルは、NotesPeek の「Item Def

    Table」に出力され る • LotusScript/Java のクラス/メソッドに UNK テーブルを出力で きるような処理がない
  32. おまけ(4) • UNKテーブルは NoteIDに基づいて構築される ソートしないビューでは NoteID 順に並ぶ。このビューの最も上に表示 される文書にあるアイテムの型がフォーム上のフィールドの型と一致し ない場合、UNKテーブルの情報に影響して全文検索でエラーになること も。

    • NoteIDはレプリカ/コピー間で異なるため、UNKテーブルもレ プリカ/コピー間で異なる場合がある 【参考】全文検索とUNKテーブル https://speakerdeck.com/harunakano/quan-wen-jian-suo-tounkteburu
  33. スライドの最後