忍者ブログ

ド壺

脳内がNotes/Domino系からASP.NETに移行しつつあるIT系情報ブログなつもり。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

LotusScript:添付ファイル有無確認方法

ここでは、naiyouというフィールドに文字もしくは添付ファイルの
どちらかが入っているかどうかをチェックする。
EmbeddedObjectsの戻り値が配列であることを利用して、
配列であれば添付やオブジェクト貼り付け有。
配列でなければ文字だけのデータとしてチェックできる。
R5.0.5でのみ動作検証。 R7.0.2でも動作確認OK


'docは現在開いてる文書のバックエンド文書として取得したものとする。
Dim rtitem As Variant
Set rtitem = doc.GetFirstItem("naiyou")
If ( rtitem.Type = RICHTEXT ) Then
  valuedata = rtitem.EmbeddedObjects
  If Isarray(valuedata) Then
    'オブジェクトが含まれている場合
  Else
    'オブジェクトが含まれていない場合
    planeText = rtitem.GetFormattedText( True, 0 )
    If planeText = "" Then
      'オブジェクトもテキストもない場合
    else
      'テキストのみの場合
    End If
  End If
End If

= 追記(2008/9/2)=

↓は、ちょっとスペース文字削除を追加して関数化したもの。
リッチテキストフィールドに何らかのオブジェクトか文字が含まれていれば
Trueを返す。

Function TMPchk2(doc As NotesDocument, FieldName As String) As Variant
  Dim rtitem As Variant
  Set rtitem = doc.GetFirstItem(FieldName)
  If ( rtitem.Type = RICHTEXT ) Then
    valuedata = rtitem.EmbeddedObjects
    If Isarray(valuedata) Then
      'オブジェクトが含まれている場合
      TMPchk2 = True
    Else
      'オブジェクトが含まれていない場合
      planeText = rtitem.GetFormattedText( True, 0 )
      If Trim(planeText) = "" Then 'オブジェクトもテキストもない場合
        TMPchk2 = False
      Else 'テキストのみの場合
        TMPchk2 = True
      End If
    End If
  End If
End Function


↓は拡張子チェック用関数に。
拡張子が条件(strExtension)と合うならTrueを。
オブジェクトの個数が複数。若しくは、拡張子が違う場合にFalseを返す。
以下の関数は、1つのリッチテキストフィールドに
1つのファイルしか添付しないように、運用上の縛りが必要。

Function TMPchk3(doc As NotesDocument, FieldName As String, strExtension As String) As Variant
  Dim strFileName As String
  Dim rtitem As Variant
  Dim strExData As String, intLength As Integer
  Dim v As Integer
  v = -1

  Set rtitem = doc.GetFirstItem(FieldName)
  If ( rtitem.Type = RICHTEXT ) Then
    valuedata = rtitem.EmbeddedObjects
      If Isarray(valuedata) Then 'オブジェクトが含まれている場合
        If strExtension = "" Then '拡張子チェックなし
          TMPchk3 = True
        Else '拡張子チェックあり
          Forall o In rtitem.EmbeddedObjects
          If ( o.Type = EMBED_ATTACHMENT ) Then
            v = v + 1
            If v = 0 Then 'オブジェクトが1つのみ
              strFileName = o.Name
            Else 'オブジェクトが複数のとき
              TMPchk3 = False
              Exit Function
            End If
          End If
        End Forall

        '拡張子チェック
        intLength = Len(strExtension)
        strExData = Right$(strFileName, intLength)
        If strExData = strExtension Then '拡張子と条件が同じ場合
          TMPchk3 = True
        Else
          TMPchk3 = False
        End If
      End If
    End If
  End If
End Function



注意点>>>>>
このスクリプトを使う前(なるべく直前がよい)に必ず文書をセーブしておくこと。
じゃないと、If ( rtitem.Type = RICHTEXT ) Then の行でエラーする。

拍手[4回]

PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

おぉ。

  • by めそ凹 すね丸
  • URL
  • 2008/09/02(Tue)23:01
  • Edit
お邪魔します。
またド壺さんをみて
「おっし,ネタ便乗しよう」と思ったダメ技術者です(笑)

いつも新鮮なネタ発信ありがとうございます。

私がやってる方法でちょっとかいてみて
トラバックさせていただきます~w

Re:おぉ。

  • by nami
  • 2008/09/03 16:19
>「おっし,ネタ便乗しよう」と思ったダメ技術者です(笑)
>いつも新鮮なネタ発信ありがとうございます。

なww
いやいや~、
添付ファイルの有無とか制御って
以外に引っかかるところなんですよねー

トラバ先参照させていただきましたが、
エラー処理でチェックする方法なんですねー
人によっては同じ目的なのに全然違うスクリプトになるのが
面白いところでもありますねw

ぇぇっと、そちらの記事見て思ったこと。というかネタ一つ。
そのスクリプトを作成する前の大前提として
どのエラーのときにどのエラーコードが返ってくるのか
調べる必要があるんですが
エラーコードを出力できるスクリプトがあるとうれしいかもしれないw
(以前こちらでも作ったことあったんだけど、
やっぱりどっかのDBに埋もれた一つzzz)

TRACKBACK

Trackback URL:

カウンター

ブログ内検索

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

プロフィール

HN:
nami
性別:
女性
自己紹介:
火星人+/ペガサス/ささ女
の完全変人タイプ。

仕事は1事業所のIT管理者。
ノーツDB開発を主に担当。
鯖管理とNetwork管理にも携わる。
ぶっちゃけIT便利屋。
基本は「広く浅く」。
口癖は「メンドクサ。。。」

ついったーやってます。
@namiphoをフォローしてネ


トラバについて
ここの記事のリンクがない記事については、トラバ許可はしませんのでご承知おきください。

最新コメント

No Title(返信済)
(04/25)
No Title(返信済)
(04/12)
No Title(返信済)
(03/01)
(10/07)
(09/29)

最新トラックバック

バーコード

アフェリエイト


デル株式会社
シマンテックダウンロードストア

お天気情報

アクセス解析

Copyright ©  -- ド壺 --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]