【发布时间】:2012-07-25 04:15:18
【问题描述】:
我正在努力将数据从 oracle 9i 检索到 lotus notes。我正在使用 Oracle 10g 进行测试,因为这就是我所拥有的。在默认 HR 数据库中,有一个 EMPLOYEES 表。我最近添加了一个新列来获取最后修改的时间戳,这是成功的。数据格式如下:25-JUL-12 10.28.32.000000 AM
以下是我的lotusscript代码:
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 表中添加时间戳列之前一切正常,我可以将每一行导出到临时 Lotus 视图。现在错误总是停在Call conUser.Execute("Select * From HR.EMPLOYEES", fieldsUser)。我认为这与fieldlistuser="EMPLOYEE_ID,FIRST_NAME,MODIFIED_AT" 行有关,因此我从中删除了MODIFIED_AT 并评论了staffdoc.DateJoin=fieldsUser.MODIFIED_AT(0),但错误仍然存在。错误是Error: Invalid data type for field 'MODIFIED_AT', Connector'Oracle', Method -Execute-。这真的可以做到吗?如果可以,我应该在 lotus 中存储什么数据类型的时间戳值?
【问题讨论】:
-
看起来帮助文档说它将 DateTime 值作为变体处理。我认为在使用扩展语法来分配值时这并不重要,但是将 MODIFIED_AT 保存到变体中是否有帮助?
-
另外,由于Notes中的DateTimes是数组,指定MODIFIED_AT的索引是否会产生问题?使用 fieldsUser.GetField 或 fieldsUser.Lookup 效果更好吗?还是在执行时出现错误?
-
执行时出现错误,所以我猜不知道指定 MODIFIED_AT 的索引是否会产生问题。
标签: oracle timestamp lotus-notes lotusscript