1

私はオラクル9iからロータスノートにデータを取得するために働いています。Oracle 10gをテストに使用しているのは、それが私が持っていたものだからです。デフォルトのHRデータベースには、EMPLOYEESテーブルがあります。最近、成功した最後に変更されたタイムスタンプを取得するための新しい列を追加しました。データは次のような形式です:2012年7月25日10.28.32.000000 AM

以下は私のロータススクリプトコードです。

Option Public
Option Declare

UseLSX "*lsxlc"

%Include "lsconst.lss"

Sub Initialize
    Dim s As New NotesSession, db As NotesDatabase
    Set db=s.Currentdatabase

    Dim lcs As New Lcsession
    lcs.Clearstatus

    Dim conUser As New Lcconnection("Oracle")
    Dim staffdoc As NotesDocument
    Dim fieldlistuser$
    fieldlistuser="EMPLOYEE_ID,FIRST_NAME,MODIFIED_AT"

    conUser.Server="localhost"
    conUser.UserID="hr"
    conUser.Password="hr"
    conUser.Connect
    conUser.MetaData="HR.EMPLOYEES"
    conUser.Fieldnames=fieldlistuser

    Dim fieldsUser As New LCFieldList
    Dim fieldUser As LCField
    Call conUser.Execute("Select * From HR.EMPLOYEES", fieldsUser)

    While conUser.Fetch(fieldsUser) > 0
        Set staffdoc=New NotesDocument(db)
        staffdoc.Form="Staff"
        staffdoc.StaffID=fieldsUser.EMPLOYEE_ID(0)
        staffdoc.StaffName=fieldsUser.FIRST_NAME(0)
        staffdoc.DateJoin=fieldsUser.MODIFIED_AT(0)
        Call staffdoc.Save(True, True)
    Wend
    conUser.Disconnect
End Sub

以前は、EMPLOYEESテーブルにタイムスタンプ列を追加する前はすべて問題なく、すべての行を一時的なロータスビューにエクスポートできました。これで、エラーは常にで停止しCall conUser.Execute("Select * From HR.EMPLOYEES", fieldsUser)ます。その行と関係があると思ったfieldlistuser="EMPLOYEE_ID,FIRST_NAME,MODIFIED_AT"ので削除MODIFIED_ATしてコメントしstaffdoc.DateJoin=fieldsUser.MODIFIED_AT(0)ましたが、それでもエラーが発生します。エラーはエラーです:フィールド'MODIFIED_AT'、コネクタ'Oracle'、メソッド-Execute-のデータ型が無効です。これは実際に行うことができますか?可能であれば、タイムスタンプ値を格納する必要があるロータスのデータ型は何ですか?

4

2 に答える 2

0

私の最初の考えは、selectステートメントはサーバーで正常に機能するかどうかです。

そうだとすると、これは、ドライバーがタイムスタンプをLotusNotesの日時フィールドに変換する際の問題のように見えます。回避策として、タイムスタンプタイプではなく日時として「変更時」を返すストアドプロシージャを作成できます。

于 2012-07-25T12:51:36.453 に答える
0

ヘルプドキュメントを見るだけで、キャピタリゼーションが重要かどうか疑問に思っています。リストされているLCConnectionプロパティは、FieldnamesではなくFieldNamesであるためです。

于 2012-07-25T13:51:45.340 に答える