| ホーム | ソフト紹介 | ダウンロード | 便利な使い方 | ユーザー登録 | サポート | リンク |
 

インポートする時のテクニック

Structured TextファイルからLotus Notesへインポートする時、数字のみのデータをテキストと定義されているフィールドへ取り込むと数字フィールドとして取り込まれてしまいます。たとえば、商品コードが77というデータをLotus Notesに取り込むと、商品コードのフィールドがテキストとしてあっても、77の数字として取り込まれてしまうというものです。これはLotus Notesの仕様で、accsyNotes側ではどうすることもできません。
ですが、エージェントを作成することによってこの問題を回避することができます(R4.6xで確認)。

エージェント スクリプト
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim dc As notesdocumentcollection
   Dim doc As notesdocument
   Set db = session.currentdatabase
   Set dc = db.alldocuments
   For j = 1 To dc.count
      Set doc = dc.getnthdocument(j)
      t=doc.Computewithform(True, True)
      Call doc.save(True,False)
   Next
End Sub
フィールドの入力変換式(Input Translation)
@Text(フィールド名)

インポートするフォーム上のテキスト形式に変換するフィールドの入力変換式を記述して、Lotus Notesへインポートしたあとにこのエージェントを実行すると、選択文書または全文書を保存しなおします。選択文書を対象とするか、全文書を対象とするのかはエージェントを作成する時に指定しておいて下さい。Lotus Notesでは文書を保存しなおすと正しいフィールドタイプで登録されるようですので、数字だった
77の商品コードもテキスト形式の"77"として保存されます。
商品コードを8桁固定にしたい(Ex. 00001234)という時は、そのフィールドの入力変換式(Input Transation)を下記のように設計時に指定しておくとよいです。

フィールドの入力変換式(Input Translation)
txtfld:=@Text(フィールド名);
txtlen:=@Length(txtfld);
@If(txtlen=1;"0000000"+txtfld;txtlen=2;"000000"+txtfld;
txtlen=3;"00000"+txtfld;txtlen=4;"0000"+txtfld;
txtlen=5;"000"+txtfld;txtlen=6;"00"+txtfld;txtlen=7;"0"+txtfld;txtfld)

 
フィールド名は実際のフィールド名に置き換えて下さい。また設計に貼り付ける場合は、@Ifの改行コードに気をつけて下さい。

この方法は、あるユーザーの方から教えていただきました。ありがとうございました。インポートの時でこの問題でお悩みの方はぜひお試し下さい。なお、エージェントや式についてよくわからないという方は、データベース管理者の方にお問い合わせ下さい。それができない場合は、私までお問い合わせ下さい。
 

Copyright(C) 1997-2001 by Keiji Takahashi All right reserved.
Mail oTo keiji@bd.wakwak.com.