Slide 1

Slide 1 text

中野晴幸 @harunakano

Slide 2

Slide 2 text

先月までこの文書に ファイルを追加で 添付できたのに… あとファイル1つなのに...

Slide 3

Slide 3 text

フィールドが大きすぎる(32K)、またはビューの 列と選択式が大きすぎます。

Slide 4

Slide 4 text

(参考)エラー「フィールドが大きすぎる(32K)、またはビューの列と 選択式が大きすぎます」が文書を保存する際に表示される https://ibm.co/2NUuBwR ファイルを大量に添付すると「フィールドが大きすぎる (32K)...」エ ラーが発生する https://ibm.co/2wOFUAe

Slide 5

Slide 5 text

フィールド 単位で 32K 文書 単位で 64K https://ibm.co/2NUuBwR

Slide 6

Slide 6 text

「文書のプロパティ」で確認できる、フィールドフラグに “SUMMARY” があるフィールド(アイテム)

Slide 7

Slide 7 text

 フォーム上のリッチテキスト以外のフィールド  デザイナー(フィールドのプロパティー)で変更できない  ビューに表示できる

Slide 8

Slide 8 text

NotesItem クラスの IsSummary プロパティの値を True にす れば Summary フィールドになります https://ibm.co/2M5CfTk

Slide 9

Slide 9 text

フィールド(アイテム)の作り方 IsSummary の初期値 New NotesItem False NotesDocument.AppendItemValue True NotesDocument.ReplaceItemValue True 拡張クラス構文 (例:NotesDocument.Title = “拡張クラス構文で作成”) True ※Notes 9.0.1 FP9 で確認

Slide 10

Slide 10 text

1つの Summary フィールドは最大 32K

Slide 11

Slide 11 text

文書内にある全ての SUMMARY データの合計は最大 64K 合計 < 64K

Slide 12

Slide 12 text

“ファイルを添付すると、添付されたファイルごとに $FILE という Summary フィールドを生成し、ファイル名やファイルの圧縮形式、日時 の情報を格納します。” “大量の添付ファイルを文書内に貼り付けると、$FILE フィールド (Summary フィールド) が増加し、文書全体で Summary Data が 64K バイトを超 えると、「フィールドが大きすぎる (32K)、またはビューの列と選択式が 大きすぎます」というエラーが発生する原因になります。” https://ibm.co/2wOFUAe

Slide 13

Slide 13 text

を、保存できなくなった文書で、調べると… Dim ss As New NotesSession Dim db As New NotesDatabase(“", “") Dim doc As NotesDocument Dim maxitem$, maxlength As Integer If Not db.Isopen Then db.Open "", "" Set doc = db.Getdocumentbyunid(“") ForAll item In doc.items If item.Issummary Then If maxlength < item.Valuelength Then maxlength = item.Valuelength maxitem = item.name End If End If End ForAll Print maxitem, maxlength

Slide 14

Slide 14 text

 文書は 2008年に作成後、毎月更新している  $FILE は 200 個オーバー、1個 60 ~ 180 バイト  32K オーバーのアイテムは存在しない

Slide 15

Slide 15 text

フィールド 単位で 32K 文書 単位で 64K https://ibm.co/2NUuBwR この壁に ぶち当たった

Slide 16

Slide 16 text

ユーザーは「1個だけ添付したい」と言っている エンドユーザーが $UpdatedBy を見ることはほぼほぼ無い $UpdatedBy がダイエットできれば(新たな $FILE が 200 バイトとしても)まだ数十個は添付できそう…

Slide 17

Slide 17 text

文書を再作成して、もしリンク切れした場合、都合が悪い →却下 Unid$ = “<対象文書のUNID>" Set ss = New NotesSession Set doc = ss.Currentdatabase.Getdocumentbyunid(unid) Set newdoc = New NotesDocument(ss.Currentdatabase) doc.Copyallitems newdoc, True newdoc.Removeitem("$UpdatedBy") newdoc.Save True, false

Slide 18

Slide 18 text

以下、なんともならなかったものたち 文書のコピー&ペースト FIELD $UpdatedBy := @DeleteField; NotesDocument.Getfirstitem(”$UpdatedBy”).Text =”” NotesDocument.ReplaceItemValue(”$UpdatedBy”, ””) NotesDocument.Getfirstitem(”$UpdatedBy”).Remove NotesDocument.RemoveItem(”$UpdatedBy”) NotesDocument.Getfirstitem(”$UpdatedBy”).IsSummary = False

Slide 19

Slide 19 text

“制限値に達しないように、1 文書内に貼り付ける添付ファイ ルを削減してください。” https://ibm.co/2wOFUAe あと1個だけ添付したいんだけど。 やっぱ、これしかないかなあ…

Slide 20

Slide 20 text

 $UpdatedBy には 221 ものエントリがあった  エントリは増えないよう制限できたはず…

Slide 21

Slide 21 text

今回は 10 に変更 デフォルトはゼロで「制限しない」

Slide 22

Slide 22 text

1. Compactタスクでコピー圧縮 2. 最終更新者と同じ人が更新 3. 最終更新者と違う人が更新

Slide 23

Slide 23 text

1. Compactタスクでコピー圧縮 2. 最終更新者と同じ人が更新 3. 最終更新者と違う人が更新 効果なし 効果なし 効果あり!! 8650 バイト削減!! When are limits to $Revisions and $UpdatedBy applied? https://ibm.co/2oRlNgd

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

 サイズオーバーの対象が「1つのアイテム」か「合計」かをエ ラーメッセージから判断できるとありがたい  $UpdatedBy のエントリはデフォルト無制限!!大人数で 更新する文書では肥大しやすいので要注意  文書コピーすると $Revisions は消えるが $UpdatedBy はそのまま残る。両方消すのが正解で は?  $FILE をサマリーデータとしない選択肢があっていいので は?  $UpdatedBy のエントリ数制限後、圧縮コマンド等で過 去のエントリを削減できるとありがたい

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

文書サマリーデータの上限を 16 MB に増やす https://ibm.co/2NUsOb0 64K → 16M (参考)御代さんのブログ記事が詳しい 「文書サマリーデータの上限を 16 MB に増やしてみた」https://Bit.ly/2wBqTRV

Slide 28

Slide 28 text

サマリーフィールドの制限緩和!! サイズが2倍に!! 32K → 64K

Slide 29

Slide 29 text

フィールド 単位で 32K 64K 文書 単位で 64K 16M V10 9.0.1 FP8

Slide 30

Slide 30 text

No content