スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ディスカッションデータベースに文書を大量に作る

2008年11月12日 01:35

 開設して二週間くらい経ちますが、ちょっとずつアクセスも増えてきてうれしいです。
しばらくアプリケーション開発系の小ネタを書いてから、DWAとかの話もしていきたいと思っているのですが、出来るだけ評判のよい記事を参考にしながら投稿していきたいと思うので、率直な感想とかコメントを社内外問わず頂けるととても助かります。コメント恥ずかしい方は拍手とかでも参考になるので是非是非フィードバックよろしくお願いしいます。

 今日は以前投稿したエージェントプロファイルの紹介をしたときに少し触れたのですが、テスト用にとにかく文書数の多いデータベースを作りたいときに使うコードです。僕でさえ、10分くらいで作り終わったサンプルなので、必要になってから書いても大した手間じゃないと思うのですが、あるに越した事は無いと思うので。。 文書にアクセスするようなコードのパフォーマンスの差をみたいときとかに、こういうスクリプトで10万文書くらい作ってから、そのDBにScriptを回してみたりします。

 とりあえず、文書を作るだけだとあんまりなので、他の場面で応用できるようにSubjectに乱数を二桁ほど入れるコードと、20文書毎に途中結果を出力するような処理も入れてみました。

あと、この手のコードを作るときには、実行時間は長くなりますが、ComputeWithForm() メソッドは絶対呼んでおいたほうがいいと思います。

・ フィールドの型の調整をやってくれる。
  (文字列が入っているけど本当は数値型じゃないとダメ、とか。)
・ 計算可能なフィールドの計算をしてくれる

これをしないと、本当にコードで書いたフィールドだけしか出力されなくなってしまったり、フォームとつじつまの合わないフィールド値を持つ文書が出来てしまったりします。


Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument

Set db = ses.CurrentDatabase
n = Cdbl(Inputbox("作成する文書数を入力して下さい"))
bodystr$ = "this is body"

For i = 1 To n
Set doc = db.CreateDocument
Randomize
doc.subject="test " & Cstr(Cint(Rnd() * 100))
doc.Form = "MainTopic"
doc.body=bodystr$
Call doc.ComputeWithForm(True,True)
Call doc.save(False,False)

If ( i Mod 20 = 0 ) Then
Print i & " 文書作成しました"
End If
Next
End Sub



もうちょっと便利なものをアップしたいな、と思うのですが、手持ちが少ないので。。。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/16-2178364d
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。