全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、Lotus Domino与关系数据库的互操作在Lotus Domino R5中提供了三个LotusNotes扩展类:ODBCConnection(ODBC连接)、ODBCQuery(ODBC查询)以及ODBCResultSet(ODBC结果集)。应用这三个类并辅以Lotus Script语言就能实现与关系数据库的互操作问题。具体解决方法如下:第1步:在控制面板32位ODBC数据源中建立用户数据源Test;第2步:在Domino R5中新建一个数据库Try,并建立一个空白表单Con-nection,此表单没有任何内容,然后在表单上创建一个“操作”,起名为“Read”;第3步:在“Read”操作的编程窗口中选择编程语言为Lotus Script;第4步:在编程窗口的对象窗口中点击“Option”事件,并写入如下脚本:Uselsx lsxodbc / 使用Lotus Script 扩展ODBC类第5步:选中“Declare”事件,在其中写入:Dim session As NotesSessionDim db As NotesDataBaseDim doc As NotesDocumentDim qry As ODBCQueryDim result As ODBCResultSetDim con As ODBCConnection第6步:选中“Click”事件,在其中写入:Sub Click(Source As Button) Set New ValueSet session=New NotesSessionSet con=New ODBCConnectionSet qry=New ODBCQuerySet result=New ODBCResultSet Get Current DatabaseSet db=session.CurrentDataBaseSet doc=New NotesDocument(db)doc.form=connectionCall con.Disconnect()If con.ConnectTo(test) ThenSet qry.connection=conqry.SQL=SELECT ? FROM Table1Set result.Query=qryCall result.Execute()columns=result.ColumnsDoCall result.NextRow()For i=1 To result.Numcolumnsfield=result.FieldName(i)value=result.GetValue(field)If Isdate(value) ThenIf value=Datevalue(0:00:00) Thenvalue= Elsevalue=Format(value,mm-dd-yyyy)End IfEnd IfSet item=doc.AppendItemValue(field,val-ue)NextCall doc.save(True,True)Set db=session.CurrentDataBaseSet doc=New NotesDocument(db)doc.form=testLoop Until result.IsEndOfDataCall con.Disconnect()ElseMessagebox(Could not connect to server)End IfEnd Sub最后,保存表单并运行,用鼠标点击Read操作后,关系数据库中的内容就被取到Notes的文档型数据库中了。二、程序存在的问题及解决但是使用上面的代码在进行实际数据库内容转换的时候,我们发现Notes 通过ODBC数据源连接关系数据库时,无法识别中文字段名。如果关系数据库的字段是中文名字,那么ODBCResultSet将为空,解决的办法是将关系数据库中的所有字段都改为英文名字。在实际数据库的转换过程中同时发现的问题还有:该程序执行完一次后不能把关系型数据库中的内容全部取出来。通过调试LotusScript脚本并多次单步跟踪脚本的执行情况,发现每次都是执行到同一条数据库记录时,ODBCRe-sultSet就认为数据集已经到头了,下面的记录就都丢了。于是使用关系数据库软件打开数据库,并将其中的字段减少若干条后,就可以一次读取出全部记录。至于需要减少多少个字段才能一次读取出全部记录跟原先的关系型数据库的结构有关,需要具体情况具体实验。三、Lotus Domino中的日期处理上面程序中有如下一段程序:If Isdate(value) ThenIf value=Datevalue(0:00:00) Thenvalue= Elsevalue=Format(value,mm-dd-yyyy)End IfSet item=doc.AppendItemValue(field,value)End if这一段代码的作用是:判断从关系库中读取出来的字段是否为日期型字段,如果是,那么判断此日期型字段的值,看它是否为空,如果为空则在写入Notes库的时候做处理,保证写入的是空日期类型,如果此字段的值不为空则直接写入Notes库;如果此字段不是日期型字段,则不做任何处理。若是不做上述处理,那么通过ODBCResultSet类取出的日期型字段的值如果为空,则写入Notes库的时候不知什么原因会写入“1899年12月30日”这个日期。在代码中,使用到了一个DateValue(string)函数,此函数的功能是将字符串参数转换成日期数据类型,如果字符串所表示的内容找不到合法的日期数据与之对应,那么此函数将保留字符串的值不变,而仅仅把其数据类型转换成日期型,即实现了强制类型转换函数的功能。而代码中的“0:00:00”字符串是个特殊字符串,在通过ODBC数据源读取关系数据库的记录时,如果关系库中的日期型字段值为空,那么取出的值就是“0:00:00”形式的日期。使用DateValue(“0:00:00”)语句就可以判断取出的日期型变量的值是否为空,如果为空则将变量Value的值赋成空字符串,然后再写入Notes库中,就可避免出现“1899年12月30日”这个日子了。四、NotesItemNotesItem是可以代表所有表单元素的对象,简单地说就是所有可放置在表单上的元素,在LotusScript程序中都可以用NotesItem对象表示并对其进行操作。上面代码中的doc.AppendItemValue(fieldname,value)函数的作用就是根据Value的值为表单追加域(也就是关系库中的字段)。其实细心的读者一定已经发现了,在上面关于空日期的处理代码中,为什么要先把Value的值赋成空,然后再写入库中呢?为什么不可以直接往库里写值呢?问题的关键就在NotesItem上。NotesItem有很多属性,其中最重要的两个是Name和Text属性。Name属性存放表单元素的名称(即fieldname),而Text属性存放表单元素的值(value)。在程序执行到doc.AppendItemValue(fieldname,value)函数的时候,Notes将域名(fieldname)和相对应的值(value)写到NotesItem对象中。执行Call doc.Save()函数之后,所有内存中的NotesItem对象被存入相关联的表单中。在研究如何处理空日期的过程中,最初的想法是直接将空字符串写入NotesItem中,但是在查看帮助并单步跟踪脚本的执行后发现上述方法行不通。原因在于NotesItem的Text属性是只读的,根本无法为其赋值,同时也没有相应的赋值函数,显然函数doc.AppendItemValue(fieldname,value)是专门给Text属性赋值的函数。五、Notes中视图与表单的关联在开发过程中,由于一次错误,我们意外地发现了Notes中视图与表单的关联技巧。Notes为每个表单都设置了名称与别名两个属性,这两个名字都能标识表单。在开发过程中,我们所开发的库有两个表单,分别命名为Form1和Form2,其各自的别名由于疏忽都设成了Docu-ment,而每个表单都有一个视图与之对应。在设计Form2的视图时,虽然指定视图中的列都与Form2中的域相关联,但是在运行的时候从视图中双击某条文档欲对其进行编辑时,切换到的表单却是Form1的,多方查找均不能解决这个问题,于是抱着试试看的心理改变了表单的别名,分别为Document1和Docu-ment2,结果问题解决。但是又出现了Form1的视图无法切换到表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国挤压铝管行业市场前景预测及投资价值评估分析报告
- 2026年中国盲人卫生巾行业市场规模及投资前景预测分析报告
- 2026年中国硫含量测定器行业市场前景预测及投资价值评估分析报告
- 2025江苏宿迁产发商业保理有限公司业务部客户经理招聘1人考试笔试模拟试题及答案解析
- 2026中国铁路广州局集团有限公司招聘普通高校毕业生682人(二)笔试考试备考试题及答案解析
- (人教2024版)英语八年级上册Unit 6 大单元教学设计(新教材)
- 佛山市城市供用水合同2025年合同履行监督报告审核
- 2026年防城港职业技术学院单招职业技能考试题库新版
- 2026年宁夏职业技术学院单招职业适应性测试题库附答案
- 2026年河北省承德市单招职业适应性考试题库及答案1套
- 5G通信模块设计项目分析方案
- 汽车维修入股协议合同
- 教育家精神课件
- 2025年四川教师公招《教育公共基础知识》试题答案
- 2026蒙牛「星动力」校园招聘笔试考试参考试题及答案解析
- 2025年机械行业安全生产考试题库(行业安全规范试卷)
- 教师职业发展规划与晋升路径解析
- 2025年实验室检验质控知识考试试题及答案解析
- 2025贵州毕节市中级人民法院招聘聘用制法官助理30人考试参考题库及答案解析
- 医院地震疏散培训
- 4.11 拧螺丝 课件 2025-2026学年科学二年级上册苏教版
评论
0/150
提交评论